Simultaneous minimization of 3 equations to estimate 4 parameters

2 次查看(过去 30 天)
I want to find the values of 4 parameters for which three equations reach their minimum value simultaneous.
Aqtually what I want to do is : min F(q) for q where q=[a aplha c k] and F=[F1(q) F2(q) F3(q)].
Then only way that I found online to do it is with gamultiobj. The problem is that every time that I run the code with the same initial conditions without changing anything I get different 'optimal values ' for q.
Is there something that I need to define extra?
Also is there another solver that I could use for the simultaneous minimization of three functions.
I attach my code.
Thank you
Ps=0.49;
% a=q(1);
% alpha=q(2);
% c=q(3);
% k=q(4);
%parameters from the differential susceptibilities on the P-E graph
Ec=1.2e6;
xc=7.3e-7;
Pr=0.38;
xr=4.4e-8;
Em=6.2e6;
Pm=0.46;
xmp=2.8e-8;
xmm=5e-9;
%call the functions that are included in the functions
% dPPr=dPanPr(Ps,a,alpha,xr,Pr);
% dPEc=dPanEc(Ps,a,alpha,xc,Ec);
% Pan_Em= PanEm(Ps,a,alpha,Em,Pm);
% Pan_Pr= PanPr(Ps,a,alpha,Pr);
% Pan_Ec= PanEc(Ps,a,Ec);
F1=@(q) xr-(1-q(3))*((PanPr(Ps,q(1),q(2),Pr)-Pr)/(-q(4)*(1-q(3))-q(2)*(PanPr(Ps,q(1),q(2),Pr)-Pr)))-q(3)*dPanPr(Ps,q(1),q(2),xr,Pr);
F2 =@(q) q(4) - PanEc(Ps,q(1),Ec)*( (q(1)/(1-q(3))) + (1/(xc-q(3)*dPanEc(Ps,q(1),q(2),xc,Ec))) );
F3= @(q) xmm - ((PanEm(Ps,q(1),q(2),Em,Pm)-Pm)/(q(4)*(1-q(3))-q(2)*(PanEm(Ps,q(1),q(2),Em,Pm)-Pm)));
Ftot=@(q) [F1(q) F2(q) F3(q)];
lb=[4.1e5 3.7e6 0.35 1.8e6];
ub=[5e5 4e6 0.5 2e6];
options = optimoptions('gamultiobj','InitialPopulationRange',[lb;ub]);
[q,fval,exitflag,output] = gamultiobj(Ftot,4,[],[],[],[],lb,ub,options)
  6 个评论
Walter Roberson
Walter Roberson 2020-7-21
All three please. I am trying to figure out whether there is an sense under which all three can be minimized simultaneously
ANGELOS GIANNIS
ANGELOS GIANNIS 2020-7-21
function Pan_Pr= PanPr(Ps,a,alpha,Pr)
Pan_Pr=Ps*(coth(alpha*Pr/a)-a/(alpha*Pr));
end
function Pan_Em= PanEm(Ps,a,alpha,Em,Pm)
Pan_Em=Ps*(coth((Em+alpha*Pm)/a)-(a/(Em+alpha*Pm)));
end
function dPPr= dPanPr(Ps,a,alpha,xr,Pr)
dPPr= (Ps/a)*(1+alpha*xr)*(-(csch(alpha*Pr)/a)^2 + (a/(alpha*Pr)));
end
function dPEc=dPanEc(Ps,a,alpha,xc,Ec)
dPEc= (Ps/a)*(1+alpha*xc)*(-(csch(Ec)/a)^2 + (a/(Ec)));
end

请先登录,再进行评论。

采纳的回答

Alan Weiss
Alan Weiss 2020-7-20
Did you understand that in general there is no such thing as the minimum of a vector-valued function? gamultiobj finds a Pareto optimal set, meaning a surface where you can lower one of the objective function values only by raising another. See What Is Multiobjective Optimization? and x output of gamultiobj.
Alan Weiss
MATLAB mathematical toolbox documentation
  3 个评论
Alan Weiss
Alan Weiss 2020-7-21
Sorry, I have no more advice, because I do not know really what you are trying to do. If you use paretosearch instead of gamultiobj you can use the psplotparetof plot function to visualize the tradeoffs.
options = optimoptions('paretosearch','PlotFcn','psplotparetof');
[x,fval] = paretosearch(fun,nvar,A,b,Aeq,beq,lb,ub,nonlcon,options);
Alan Weiss
MATLAB mathematical toolbox documentation

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Solver Outputs and Iterative Display 的更多信息

标签

产品


版本

R2019a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by