Filter löschen
Filter löschen

approaching goal attaining optimization problem

1 Ansicht (letzte 30 Tage)
Chandra Sekhar Kommineni
Chandra Sekhar Kommineni am 13 Jan. 2022
Beantwortet: Aman am 23 Jan. 2024
I have a equation, I'm trying to aim for certrain fixed output but I have single equation and two variables to change. i'm trying achieve fixed sigma value. L0, t01 are optimized output values for fixed sigma values. I have no clue, how to approach this problem, I tried few things but they did't work out. Could someone help me with my problem? Thank you in advance.
%Below Rt and N are user defined
%T is fixed as well
% L0 upperbound 200
%t01 upperbound 28
j = sym('j');
Area= eval((L0*t01*symsum((4^(j+1))*((0.5)^j)*(Rt^j),j,0,N-1))-((t01^2)*symsum(2^(2*j+1)*(Rt^((2*j)-1)),j,1,N-1))-((t01^2)*symsum(2^(2*j+2)*Rt^(2*j),j,0,N-1)));
Sigma= (Area/T^2)*100;
x0=[200 20];
A = []; Aeq = []; Beq = []; B=[];
options = optimoptions(@fmincon,'Algorithm','trust-region-reflective','TolFun',1e-14,'TolX',1e-14,'MaxFunEvals',10000,'MaxIter',10000,'Display','iter');
lb=[180 20]
ub=[200 28]
sigma
fun = @(L0,t01)(Sigma-(Area/T^2)*100);
[fval1,fval2]=fmincon(@fun,x0,A,B,Aeq,Beq,lb,ub,@confunc)
  11 Kommentare
Chandra Sekhar Kommineni
Chandra Sekhar Kommineni am 14 Jan. 2022
i tried using fmicon, but similar results(output as lower bound values, I'm getting fval negative). I don't know, I'm missing something.
x0=[1 1 0.1];
lb=[ 150 10 0.1];
ub=[210 30 0.5];
[x,fval] = fmincon(@ (x) myfun (x (1), x (2), x (3)),x0,[],[],[],[],lb,ub);
function Sigma= myfun(L0,t01,Rt)
T=320;
N=2;
j = sym('j');
Area= ((L0*t01*symsum((4^(j+1))*((0.5)^j)*(Rt^j),j,0,N-1))-((t01^2)*symsum(2^(2*j+1)*(Rt^((2*j)-1)),j,1,N-1))-((t01^2)*symsum(2^(2*j+2)*Rt^(2*j),j,0,N-1)));
%Sigma=double((Area/T^2))*100
Sigma= double(Area/T^2 * 100) -33;
end
Chandra Sekhar Kommineni
Chandra Sekhar Kommineni am 14 Jan. 2022
I did tweaks to the above code, somewhat I achieved the goal. I added "options" to fgoalattain, its working sometimes, sometimes error is more. Can you please tell whats happening in optimset? is there anything else to improve the code
clc;clear all;
goal=29;
weight=0.0001;
x0=[1.0 1.0 0.1];
lb=[204 18 0.4];
ub=[230 26 0.48];
options = optimset( 'Display' , 'iter' , ...
'GoalsExactAchieve' ,2);
%options = optimoptions(@lsqnonlin,'Algorithm','trust-region-reflective','TolFun',1e-14,'TolX',1e-14,'MaxFunEvals',10000,'MaxIter',10000,'Display','iter');
[x, feval]= fgoalattain(@ (x) myfun (x(1), x(2), x(3)), x0, goal, weight, [], [], [], [],lb,ub,[],options);

Melden Sie sich an, um zu kommentieren.

Antworten (1)

Aman
Aman am 23 Jan. 2024
Hi Chandra,
As per my understanding, you are trying to solve the multi-objective goal attainment problem and are facing issues with that.
For "fgoalattain", the recommended optimization option is "optimoptions", so instead of using "optimset", you can use "optimoptions" and try setting tolerance flag options such as "OptimalityTolerance", which sets termination tolerance for first-order optimality. Please refer to the below link to learn more about "optimoptions".
I hope it helps!

Produkte


Version

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by