MATLAB: Optimization of multivariable function with nonlinear constraints

multivariable constraintsoptimization

I am trying to find the optimum value of a parameter (alpha) for the following expression
function = -x(1)*y(1)*c + x(2)*y(2)*c + alpha*x(1)*x(2)
which x(1), y(1), x(2), y(2) and c have a wide range values
x(1) = x(2) = linspace(0,10,10)
y(1) = y(2) = linspace(0,2,10)
c = linspace(0,100,10)
and constraints are
-x(1)*y(1) + 2*y(1)*c - alpha*x(1)*x(2) < 0
x(2)*y(2) + 2*y(2)*c - alpha*x(1)*x(2) < 0
the goal is to find the alpha values for each set of variables: x(1), y(1), x(2), y(2) and c such that the function has the minimum values.
For example:
what would be the value of alpha for x(1) = 5, x(2) = 3, y(1) =2,y(2)=1 and c=70 which the function is minimum. Basically the code should calculate all different alpha values for all x(1), y(1), x(2), y(2) and c variables.

Best Answer

Because the objective function is a positive-sloped line in alpha for all x1,x2 combinations, the minimizing alpha is simply the smallest value that satifies the constraints. This can be obtained, for all combinations as,
[X1,X2,Y1,Y2,C]=ndgrid(linspace(0,10,10),linspace(0,10,10),...
linspace(0,2,10), linspace(0,2,10),linspace(0,100,10));
X1X2 = X1.*X2;
infeasible = X1X2==0 & ( (2*Y1.*C-X1.*Y1)>0 | (2*Y2+X2.*Y2)>0 );
invariant = X1X2==0 & ~infeasible;
minAlpha = max( (2*Y1.*C-X1.*Y1)./X1X2 , (2*Y2+X2.*Y2)./X1X2 ); %combinations of solutions
minAlpha(infeasible)=nan;
minAlpha(invariant)=0;
Related Question