local optimisation deterministic optimisation
Mostrar comentarios más antiguos
Hello
I need to get a deterministic optimisation for an equation from text :
f= x(1)* x(2)
bounded by
10 <= x(1)<=100
5<=x(2)<=20
there is a constraints which is
((Th=q=17;
Tc=325;
K=100; are given constant ))
Th = Tc+q*x(2)/K*x(1)
Th<= 345;
The code is :
% ObjectiveFunction = @simple_fitness;
fun = @objfun;
A = [];
b = [];
Aeq = [];
beq = [];
lb = [10 5]; % Lower bound
ub = [100 20]; % Upper bound
% lb=[]
% ub=[]
nvars = 2; % Number of variables
% ConstraintFunction = @t;
% [x,fval] = ga(ObjectiveFunction,nvars,[],[],[],[],LB,UB, ...
% ConstraintFunction);
x0 = [10 20];
[x,fval] = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,@confun);
% [x,fval] =ga(fun,4,A,b,Aeq,beq,lb,ub,@confun);
% display (fval)
%%%%%%%%%%%%%%%%%%%%%%%%
%%% objective function %%%%%%%%%%%
function f = objfun(x)
f = x(1)*x(2);
end
%%%%%%%%%Constraints%%%%%%
function [c,ceq] = confun(x)
% Nonlinear inequality constraints
q=17
Tc=325
K=100
% Th=Tc-q*x(2)/K*x(1);
c=(Tc-q*x(2)/K*x(1))-345;
% Nonlinear equality constraints
ceq = [];
end
%%%%%%%%%%%%%%%
I have got the results that min fvalue = 50 coresponding to this value x1=5 and x2=10
while the answer should be fvalue =212.5 and x1=42.5 ; x2=5.
would you help me to sor out this problem please.
6 comentarios
Because your x(1) and x(2) are bounded to strictly positive intervals, you can rewrite your nonlinear constraint as a linear constraint,
(Tc-345)*x(1)+(q/K)*x(2)<=0
which will improve the efficiency and reliability of the optimization
[x,fval] = fmincon(fun,x0,[Tc-345,+q/K],0,Aeq,beq,lb,ub)
Matt J
el 22 de Sept. de 2020
While it doesn't seem to affect the solution in this case, you should be aware that the sign on "q" is different where you wrote your constraint here,
Th = Tc+q*x(2)/K*x(1)
Th<= 345;
as compared to where you wrote it in your code
c=(Tc-q*x(2)/K*x(1))-345;
Hazim Hamad
el 22 de Sept. de 2020
Hazim Hamad
el 22 de Sept. de 2020
Matt J
el 23 de Sept. de 2020
Hazim Hamad's comment moved here:
I think the problem with constraints because when I make change on the constraints the solution not affaected.
Regards
Hazim
Respuestas (1)
fvalue = 50 is clearly a better (i.e. lower) objective value than 212.5, so there is every reason to believe that x1=42.5 x2=5 is not the solution.
3 comentarios
Walter Roberson
el 22 de Sept. de 2020
I wonder if they are intended to find a maxima instead of minima ?
Hazim Hamad
el 22 de Sept. de 2020
If one solution can be better than another based on Th, then it should be made part of the objective function somehow. There is nothing currently in the way the problem is set up to make the optimization prefer a specific value of Th.
Categorías
Más información sobre Get Started with Optimization Toolbox en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!