Solving the Maximum and Minimum Problems of Multivariate Functions

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

This is the statement of a homework exercise. You need to ask questions arising from your efforts to solve it.
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 = fmincon(fun,x0,A,b,Aeq,beq,lb,ub);
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);
Local minimum found that satisfies the constraints. Optimization completed because the objective function is non-decreasing in feasible directions, to within the value of the optimality tolerance, and constraints are satisfied to within the value of the constraint tolerance.
xmin = x
xmin = 1×3
20.0000 0.0000 35.0000
fval_min = fval
fval_min = -62.3785
[x,fval] = fmincon(@(x)-fun(x),x0,A,b,Aeq,beq,lb,ub);
Local minimum found that satisfies the constraints. Optimization completed because the objective function is non-decreasing in feasible directions, to within the value of the optimality tolerance, and constraints are satisfied to within the value of the constraint tolerance.
xmax = x
xmax = 1×3
10.0000 0.0000 35.0000
fval_max = -fval
fval_max = 42.1865

Sign in to comment.

Answers (1)

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

I would suggest that you recheck the requirements. It is much more likely that there are ranges for each of the variables, rather than two ranges for one of the variables and no range for another.
This function has three variables, and each variable has its own upper and lower bounds. Does this mean that fmincon cannot be used to solve it?
x3 has a range, x1 has only one range
In your original version of the question you had
10<x1<20, 0<x2<5, 30<x1<35
but you edited that in response to my remarks.
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];
[bestx, xval] = fmincon(fun,x0,A,b,Aeq,beq,lb,ub)
Local minimum found that satisfies the constraints. Optimization completed because the objective function is non-decreasing in feasible directions, to within the value of the optimality tolerance, and constraints are satisfied to within the value of the constraint tolerance.
bestx = 1×3
20.0000 0.0000 35.0000
xval = -62.3785
Notice the values are all at either the upper bound or the lower bound of their range.
If you analyze the expression and see the -0.3*x(1)*x(3) then we can see that the term would be smallest value when x(1) and x(3) are both positive and large. The 0.0435*x(1) and -0.266*x(2) and 4.2*x(3) terms have relatively small contribution compared to multiplying x(1) by x(3) when they are both "large". The remaining term is +0.019*x(1)*x(2) which will be a positive contribution when the x values are all non-negative. We are minimizing so we want the smallest contribution for +0.019*x(1)*x(2) under the circumstance that x(1) is "large". That contribution can be made small when x(2) is "small" . In particular 0 is part of the permitted range for x(2) so the contribution can be made 0.
Therefore you should expect the overall expression to be smallest (most negative) when x(1) and x(3) are at the upper end of their range and x(2) is at the lowest end of its range.... which is what fmincon() said.
So the solution I used is correct?

Sign in to comment.

Categories

Find more on Physics in Help Center and File Exchange

Asked:

xu
on 30 May 2023

Commented:

on 30 May 2023

Community Treasure Hunt

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

Start Hunting!