values of equation in last iteration in fmincon
2 次查看(过去 30 天)
显示 更早的评论
I optimize a problem maximizing EU1 with the fmincon solver..the code below is the objective function i insert in fmincon instruction ...
can i somehow get the value of xw1 equation in last itteration??
function EU1 = eq_obj1(LW_ini,LG_obs,LVmat,LLand,rc,X)
EU1=0;
xw1=0;
for i=1:1:length(rc)
if (LLand(rc(i)))
xw1=xw1+LG_obs(rc(i))*X(i);
end
end
xw1=LW_ini+xw1;
% xw1
% class(xw1)
for i=1:1:length(rc)
for j=1:1:length(rc)
EU1=EU1+LVmat(i,j)*X(i)*X(j);
end
end
EU1=xw1-0.5*EU1/xw1;
%EU1=-EU1;
xw1;
0 个评论
采纳的回答
A. Sawas
2019-4-14
After the fmincon is run and you got the solution vector, make a call to the objective function using the solution vector but in this time add/enable the code in the objective function to display the values you want.
For example assuming you called fmincon like this:
eq_obj = @(x)eq_obj1(LW_ini,LG_obs,LVmat,LLand,rc,x);
[x] = fmincon(eq_obj,x0,A,b);
Edit the objective function to display the value of xw1; then call the objective function:
eq_obj(x);
3 个评论
Catalytic
2019-4-14
Instead of displaying xw1, provide the option of returning it
function [EU1,xw1] = eq_obj1(LW_ini,LG_obs,LVmat,LLand,rc,X)
更多回答(1 个)
Matt J
2019-4-14
编辑:Matt J
2019-4-14
The computation of xw1 is a trivial one-liner. Just compute it separately from the optimal X given to you by fmincon,
xw1=sum( LG_obs(rc).*LLand(rc).*Xoptimal) + LW_ini
3 个评论
A. Sawas
2019-4-15
The only drawback I guess of computing the value of xw1 outside the objective fuction will be the need to edit two locations if the equation has changed.
Matt J
2019-4-15
编辑:Matt J
2019-4-15
Then create a dedicated function to compute xw1 and call that function in the objective as well as everywhere else xw1 is needed,
function xw1=getxw1(LW_ini,LG_obs,LVmat,LLand,rc,X);
xw1=sum( LG_obs(rc).*LLand(rc).*X) + LW_ini;
end
function EU1 = eq_obj1(LW_ini,LG_obs,LVmat,LLand,rc,X)
xw1=getxw1(LW_ini,LG_obs,LVmat,LLand,rc,X);
EU1=xw1-0.5*(X(:).'*LVmat*X(:))/xw1;
end
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Direct Search 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!