Documentation

This is machine translation

Translated by Microsoft
Mouseover text to see original. Click the button below to return to the English verison of the page.

Note: This page has been translated by MathWorks. Please click here
To view all translated materals including this page, select Japan from the country navigator on the bottom of this page.

Nonlinear Inequality Constraints

This example shows how to solve a scalar minimization problem with nonlinear inequality constraints. The problem is to find x that solves

minxf(x)=ex1(4x12+2x22+4x1x2+2x2+1).(6-56)

subject to the constraints

x1x2x1x2 ≤ –1.5,
x1x2 ≥ –10.

Because neither of the constraints is linear, you cannot pass the constraints to fmincon at the command line. Instead you can create a second file, confun.m, that returns the value at both constraints at the current x in a vector c. The constrained optimizer, fmincon, is then invoked. Because fmincon expects the constraints to be written in the form c(x) ≤ 0, you must rewrite your constraints in the form

x1x2x1x2 + 1.5 ≤ 0,
x1x2 –10 ≤ 0.
(6-57)

Step 1: Write a file objfun.m for the objective function.

function f = objfun(x)
f = exp(x(1))*(4*x(1)^2 + 2*x(2)^2 + 4*x(1)*x(2) + 2*x(2) + 1);

Step 2: Write a file confun.m for the constraints.

function [c, ceq] = confun(x)
% Nonlinear inequality constraints
c = [1.5 + x(1)*x(2) - x(1) - x(2);     
     -x(1)*x(2) - 10];
% Nonlinear equality constraints
ceq = [];

Step 3: Invoke constrained optimization routine.

x0 = [-1,1];     % Make a starting guess at the solution
options = optimoptions(@fmincon,'Algorithm','sqp');
[x,fval] = ... 
fmincon(@objfun,x0,[],[],[],[],[],[],@confun,options);

fmincon produces the solution x with function value fval:

x,fval
x = 
   -9.5474  1.0474 
fval =
    0.0236

You can evaluate the constraints at the solution by entering

[c,ceq] = confun(x)

This returns numbers close to zero, such as

c =

   1.0e-14 *

    0.5107
   -0.5329


ceq =

     []

Note that both constraint values are, to within a small tolerance, less than or equal to 0; that is, x satisfies c(x) ≤ 0.

Related Examples

Was this topic helpful?