Mathematical Modeling with Optimization, Part 4: Problem-Based Nonlinear Programming

From the series: Mathematical Modeling with Optimization

This video shows how to set up and solve a constrained nonlinear optimization problem in MATLAB®. In this example, the goal is to minimize this multivariable objective function subject to the following constraints. Plot the objective function and constraints. The contour lines show the objective function. The feasible region is inside the blue ellipse and below the red curve.

This is a nonlinear optimization problem. There are two ways to solve nonlinear optimization problems in MATLAB: using a problem-based approach or a solver-based approach. This example uses a problem-based approach, which uses optimization variables to define the objective and constraints. See the documentation for the solver-based approach.

There are common steps to solving a nonlinear problem with this approach. First, you set up the problem, define optimization variables, define the objective function and constraints, and solve the problem. 

Now that we have expressed the problem mathematically, we need to express the problem in MATLAB. Create an empty optimization problem container. The optimization problem holds the problem information, including the objective function and constraints.  

Next, we will define the optimization variables. Generally, optimization variables can be scalars, vectors, matrices, or N-D arrays. This example uses variables x and y, which are scalars. Create scalar optimization variables for this problem. Include the bounds on the variables.

Next, we'll create an optimization expression for the objective function. Currently, optimization expressions do not support exponentials, so write this as a standard MATLAB function. To use this objective function in the problem-based approach, you must use a conversion function, which creates an optimization expression. The file name of the objective function is passed with the @ "at" symbol, which creates a "function handle." This tells MATLAB to identify or "point to" the function, but not to execute the function as MATLAB typically would do without the symbol. Now, add the objective function to the optimization problem. The problem now shows a non-empty objective and associated variables.

This problem has the following nonlinear constraints. The first is a constraint that the solution lies in the ellipse. You can define this constraint as it is written and add it to the problem. The previous constraint was a polynomial inequality and could be expressed as an optimization expression. The second constraint has an exponential term and cannot be written as an optimization expression. This also has extra parameters beyond x and y and includes the variable a. Create a function with inputs x, y, and a. Convert the function to an optimization expression. Include the optimization variables and the parameter a, defined in the MATLAB workspace. Express the inequality and add the constraint to the problem.

Now we'll check that the problem formulation is complete. The optimization variables, objective function, constraints, and bounds all look correct. 

Before solving, we need to define an initial point. The initial values for x and y must be defined as a structure. Create a structure representing the initial point as x = -3, y = 3. Solve the problem from the initial point. In general, the exit message indicates the stopping conditions and any problems encountered during the optimization. Here, the exit message and exit flag indicate that the optimization completed successfully. 

Try solving the problem from a different initial point. Request additional outputs about the solution. The optimization again completed successfully but converged to a different solution. This has a higher objective function value than the first, which indicates this solution is not as good.

Add the solution points to the visualization. The plot shows that one solution lies on the boundary of the ellipse and the other lies on the boundary of the exponential constraint and the ellipse.

This video illustrated solving a constrained nonlinear optimization problem. See the documentation for additional examples. 

Product Focus

Other Resources