Solving the Maximum and Minimum Problems of Multivariate Functions
2 views (last 30 days)
Show older comments
max y and min y
y=0.0435*x1-0.266*x2+4.2*x3+0.019*x1*x2-0.3 x1*x3-0.2485
10<x1<20, 0<x2<5, 30<x3<35
4 Comments
Torsten
on 30 May 2023
Yes, it's true. And the second call to fmincon with -f instead of f is the call to maximize f.
fun = @(x)0.0435*x(1)-0.266*x(2)+4.2*x(3)+0.019*x(1)*x(2)-0.3*x(1)*x(3)-0.2485;
lb=[10;0;30];
ub=[20;5;35];
A = [];
b = [];
Aeq = [];
beq = [];
x0 = [10,0,30];
[x,fval] = fmincon(fun,x0,A,b,Aeq,beq,lb,ub);
xmin = x
fval_min = fval
[x,fval] = fmincon(@(x)-fun(x),x0,A,b,Aeq,beq,lb,ub);
xmax = x
fval_max = -fval
Answers (1)
Walter Roberson
on 30 May 2023
Moved: Walter Roberson
on 30 May 2023
No. You have coded finite lower bounds and upper bounds for x3, and you have coded a single region for x1. However your problem as stated has no bounds on x3, and gives two disconnected regions for x1.
fmincon and similar routines cannot handle two disconnected regions for a single variable. You will need to use ga with x1 defined over 10 to 35, and you will need to use nonlinear constraints to reject x1 that are not in either of the two regions.
7 Comments
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!