在matlab中进行优化时如何保存功能值和对应点

时间:2016-09-21 11:41:22

标签: matlab optimization

我在进行优化时使用fminsearch。我的任务是将每个优化中的点和相应的功能值保存到工作区。为简单起见,假设我有如下优化的功能:

(4*x(1)^2+2*x(2)^2+x(1)*x(2)+2*x(2))

我知道如何定义OutputFcn以在每次迭代时保存点,但我不确定如何将每个优化中的相应功能值保存到工作区。我写的代码如下:

function [x,fval,history1,history2]=myproblem(x0)

 history1=[];
 history2=[];
 options=...
    optimset('OutputFcn',@CalibratedPointsInEachIteration,'Display','iter');
 [x,fval] = fminsearch(@objfun,x0,options);

 function stop = CalibratedPointsInEachIteration(x,optimValues,state)
     stop = false;
     if isequal(state,'iter')
       history1 = [history1; x];
       history2 = [history2; objfun(x)];
     end
 end

 function z = objfun(x)
   z =(4*x(1)^2+2*x(2)^2+x(1)*x(2)+2*x(2));
 end
end

但是,似乎上面的代码需要在保存到history2之前再次重新计算每次迭代时的目标函数。我想知道我是否可以进一步简化代码。

我想保存,而不是简单地在命令窗口上显示每个功能值。

0 个答案:

没有答案