Simultaneous minimization of 3 equations to estimate 4 parameters

2 views (last 30 days)
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 Comments
Walter Roberson
Walter Roberson on 21 Jul 2020
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 on 21 Jul 2020
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

Sign in to comment.

Accepted Answer

Alan Weiss
Alan Weiss on 20 Jul 2020
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 Comments
Alan Weiss
Alan Weiss on 21 Jul 2020
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

Sign in to comment.

More Answers (0)

Tags

Products


Release

R2019a

Community Treasure Hunt

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

Start Hunting!