【问题标题】:Multiparametric model optimization多参数模型优化
【发布时间】:2016-04-21 09:35:50
【问题描述】:

我有一个小模型,用于在给定环境条件的情况下估计真菌种群的生长。该模型实际上是以下形式的 MATLAB 函数:

growth=myfunction(envdata,params)

growth 是我的真菌生长量(呃!),envdata 是环境变量矩阵(每个时间步长一行,每列是不同的变量,例如温度、湿度等等等) .) 和params 是我模型的参数。后者是我想要优化的那些,它们包括诸如(未知的)初始真菌种群、可以在某个时间存在的最大真菌等等之类的东西。

同时,我有一个在实验室中测量的增长向量(我的观察结果),我现在的目标是通过改变输入参数使我的模型适应观察结果。

我的自然答案是使用 fminsearch 之类的东西,但它没有选择至少使用观察向量。还是我错了?

【问题讨论】:

    标签: matlab optimization multiparameter


    【解决方案1】:

    您希望尽可能地拟合您的观察结果和模型的拟合增长率之间的差异,但正如您所指出的,fminsearch 不允许您使用目标向量。

    解决方案是定义一个包装函数,该函数定义您试图最小化的事物(通常称为 loss)。一种流行的损失是均方误差,

    MSE(x, y) = Σ (x - y)2

    所以你可以定义,例如,

    function loss = objectiveFun(observations, envdata, params)
    
        growth = myfunction(envdata, params);
        loss = sum((observation - growth).^2); // or your favorite loss function
    
    end
    

    然后运行

    paramsInit = 0; // whatever initial value you have for params
    
    paramsOpt = fminsearch(@(x) objectiveFun(observations, envdata, x), paramsInit);
    

    【讨论】:

      猜你喜欢
      • 2020-01-16
      • 2017-10-30
      • 2021-12-15
      • 2022-07-15
      • 1970-01-01
      • 1970-01-01
      • 2017-02-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多