local optimisation deterministic optimisation
显示 更早的评论
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 个评论
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
2020-9-22
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
2020-9-22
Hazim Hamad
2020-9-22
Matt J
2020-9-23
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
回答(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 个评论
Walter Roberson
2020-9-22
I wonder if they are intended to find a maxima instead of minima ?
Hazim Hamad
2020-9-22
类别
在 帮助中心 和 File Exchange 中查找有关 Get Started with Optimization Toolbox 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!