# Building a Model - Constrained Optimization¶

Usually, an optimization problem also contains constraints that reduce the design space. Constraints are equations or inequalities that are expressed as functions of the design variables. You will add a constraint to your model in optimization_unconstrained.py. First, copy the file and give the new file the name optimization_constrained.py. Inside of this file, change the name of the assembly from OptimizationUnconstrained to OptimizationConstrained. Don’t forget to also change it in the bottom section where it is instantiated and run.

In OpenMDAO, you can construct a constraint with an expression string, which is an equation or inequality built using available variables with Python mathematical syntax and functions.

You want to add the constraint x-y >= 15 to this problem. The unconstrained minimum violates this constraint, so a new minimum must be found by the optimizer. You can add a constraint to your existing OptimizationUnconstrained model by adding one line to the initialize function:

# Constraints


The add_constraint method is used to add a constraint to the driver.

Please add this line to the __init__ function in optimization_constrained.py and save it. Execute it by typing:

python optimization_constrained.py

When it is executed, it should produce this output:

Minimum found at (7.166667, -7.833334)
Elapsed time:  0.0295481681824 seconds

Notice that the minimum of the constrained problem is different from the minimum of the unconstrained problem.

Now you are ready to add derivatives to your comnponent, which you will do in the next section.

#### Previous topic

Building a Model - Unconstrained Optimization