# Interior Point Optimizer (IPOPT) Profile

The Interior Point Optimizer (IPOPT) profile is named for the IPOPT programming solver. The profile uses this solver to minimize or maximize a cost function in the presence of constraints. IPOPT can handle sparse optimization problems with millions of variables and constraints.

IPOPT is an efficient, large-scale, nonlinear, programming solver. It uses an interior-point, line-search filter method to solve convex and nonconvex, constrained optimization problems. IPOPT iterations involve solving sparse, symmetric, indeﬁnite linear systems. These iterations must be integrated with a sparse linear algebra solver. Astrogator uses Multifrontal Massively Parallel sparse direct Solver (MUMPS), a software package for the multifrontal solution of large, sparse linear systems, for this purpose. To enhance performance, Astrogator also uses the efficient matrix-ordering algorithms available in METIS. Astrogator computes all first-order derivatives that are required by IPOPT through numerical finite-differencing. Second-order derivatives are computed by a limited-memory quasi-Newton method (L-BFGS).

IPOPT - The Astrogator implementation is capture in an IPOPT reference topic; for the latest IPOPT information go to https://projects.coin-or.org/Ipopt.

MUMPS - http://mumps.enseeiht.fr/

The IPOPT profile dialog box comprises five tabs:

## Variables

There are two types of variables in an optimizer profile:

• Decision Variables (controls)
• Objectives and Constraints (results)

To run an optimizer profile, you must define at least one decision variable and one objective. Constraints are optional. Objectives and constraints share the same source and method used to define them, but the optimizer applies them to the problem in distinct ways. Objectives are quantities that the optimizer attempts to minimize or maximize. Constraints define the set of acceptable (feasible) solutions.

### Decision variables (controls)

Any element of a nested MCS segment or linked component that you can use as a control is marked by a target icon, . To select an element as a control, click its target icon. A check mark appears over the target. Click the target again to clear the selection of that element.

You can select controls in two or more nested segments. In each segment, you can select as many controls as you want. Plugins publish their inputs to Astrogator, so you can also select these inputs as controls. To target an input, you may need to double-click it to open its properties dialog box. There is a target icon next to any field that you can select.

The Restore nominal values as soon as target sequence completes MCS Option isolates changes in value. If the control is an element of a linked component, this option has an important effect. Astrogator only applies the changed value of the element to subsequent segments within the same target sequence. Segments that are outside the target sequence use the value of the element at the beginning of the MCS. If you apply corrections after running the MCS, then on the next run all segments in the MCS will use the value produced by the target sequence.

Each control that you select is listed in the Decision Variables section of the Variables tab, with the following information:

Variable Description
Use Select this check box to enable the element as a decision variable.
Name This is the name of the element.
Initial Value This is the element's initial guess value.
Current Value This is the element's final value from the last run of the optimizer. If the optimizer has not run, this value is the same as the initial value.
Lower Bound This is the lowest value that the optimizer can use for the element.
Upper Bound This is the highest value that the optimizer can use for the element.
Object This is the segment or component to which the element belongs.
Custom Display Unit Select this check box to use a custom unit for the element in the status window and graphs.
Display Unit

Shows the unit to display if you selected Custom Display Unit.

Graphs cannot display DMS or HMS angle units and will use the scenario unit instead.

Hide Inactive

If you have two or more decision variables, select this check box to hide elements not selected.

When you select an epoch as a decision variable, its default upper and lower bounds are set to 8640000 and -8640000 seconds (~100 days), respectively, from the scenario analysis start time.

The following fields, some of which can be edited, appear below the Decision Variables list:

Field Description
Initial Value Shows the nominal value of the selected element.
Current Value This is the element's final value from the last run of the optimizer. If the optimizer has not run, this value is the same as the initial value.
Scaling Value Scaling improves numerical behavior if the profile's enabled parameters have diverse magnitudes. By default, the profile uses a scaling value of one, which is the standard (i.e., nonscaled) computation. Enter a different value in this field to apply scaling. The profile will divide the current computed value by the scaling value before passing it to the optimizer algorithm. Because the scaling value has units, the value passed to the optimizer algorithm is unitless.

### Objectives and constraints (results)

Objectives and constraints are defined in terms of Calculation Objects. To select objectives and constraints for a nested MCS segment, select the segment and then click . In the User-Selected Results dialog box, select the Calculation Objects that you want to use.

Each objective or constraint that you select is listed in the Objectives and Constraints (Results) section of the Variables tab, with the following information:

Variable Description
Use Select this check box to enable the element as an objective or contraint.
Object This is the object to which the element belongs.
Name This is the name of the element.
Current Value This is the element's final value from the last run of the profile. If the profile has not run, this value is the same as the initial value. You can copy the value in this field to the clipboard by right-clicking it and selecting Copy.
Goal This is the element's role in the problem that the profile is solving. Select Bound to use the element as a constraint or Minimize to use it as part of the objective. If you select two or more Minimize objectives for the same profile, then IPOPT will optimize the sum of the values. The profile multiplies each value by its weight and then divides by its scale factor.
Weight This is the relative significance of the element compared to other elements of the objective function. You can use this factor to emphasize or diminish the importance of one element relative to the others. This field only applies if the Goal of the element is Minimize. A negative weight results in maximization.
Lower Bound This is the lower limit that this element has achieved in the profile's iteration history. This field only applies if the Goal of the element is Bound. Set the Upper Bound and Lower Bound equal to define an equality constraint.
Upper Bound This is the upper limit that this element has achieved in the profile's iteration history. This field only applies if the Goal of the element is Bound. Set the Upper Bound and Lower Bound equal to define an equality constraint.
Custom Display Unit Select this check box to use a custom unit for the element in the status window and graphs.
Display Unit

Shows the unit to display if you selected Custom Display Unit.

Graphs cannot display DMS or HMS angle units and will use the scenario unit instead.

Hide Inactive If you have two or more decision variables, select this check box to hide elements not selected.

When you select an epoch as a constraint, its default upper and lower bounds are set to 8640000 and -8640000 seconds (~100 days), respectively, from the scenario analysis start time.

## Options

You can use the controls on the Options tab to customize the profile's performance.

Select the Reset controls before each run check box to reset the profile's controls each time that Astrogator runs it. The profile will discard information that Astrogator computed the last time it was run.

### Select IPOPT Options

You can set the most common IPOPT options in the Select IPOPT Options pane. The following table describes the properties that are available in this pane.

IPOPT Options

Field Description

Convergence tolerance

Represents the convergence tolerance for the algorithm. The profile succeeds if the scaled NLP error becomes smaller than this value and the profile also meets the following tolerances:

• dual infeasibility
• constraint violation
• complementarity infeasibility

Maximum number of iterations

This property defines the maximum number of evaluations that the profile will execute.The algorithm terminates with an error message if the profile cannot converge after running the maximum number of iterations.

Constraint violation tolerance

The max-norm of the (unscaled) constraint violation must be less than this threshold.

Dual infeasibility tolerance

The max-norm of the (unscaled) dual infeasibility must be less than this threshold.

Complementarity infeasibility tolerance

The max-norm of the (unscaled) complementarity must be less than this threshold.

### IPOPT options file

If you want to set an IPOPT algorithm option that is not available on the Options tab, you can load an IPOPT specifications (.opt) file.

You should format each line of an IPOPT specifications file with an option name followed by a space and then the option’s value. The value can be a string, integer, or number, depending on the option. If you load a file, Astrogator will ignore all the properties in the Select IPOPT Options pane.

The following is an example of a valid IPOPT specifications file. This example file adjusts the tolerances, the maximum number of iterations, and the amount of information printed in the log.

Example IPOPT specifications file

```tol 0.001
compl_inf_tol 0.01
constr_viol_tol 0.01
dual_inf_tol 0.01
max_iter 50
print_level 12
print_user_options no
```

The constraint violation, dual infeasibility, and complementarity infeasibility tolerances refer to the primal-dual equations in the implementation documentation (PDF).

If you use an IPOPT specifications file, you must set the value of the Hessian_approximation option to "limited-memory." Otherwise, the algorithm will terminate with an error message.

## Log

The Log tab displays the detailed IPOPT iteration log, which appears after the initial run of the profile. By default, the IPOPT log has three sections: Setup, Iterations, and Summary.

• The Setup section lists the options that you defined and provides details for the initialization of the algorithm.
• The Iterations section contains information on the processes of each iteration.
• The Summary section returns the total number of iterations and the exit condition. You can control the amount of detail in the log with the print_level command. The command takes values from 0 to 12, with 12 giving the most detail.

## Graphs

The Graphs tab comprises controls that you can use to create and view graphs of the profile's performance. The upper pane contains a table of the graphs defined for the profile. The Graph Properties pane displays the collection of properties that you can use to define each graph. Select a graph in the table in the upper pane to view and define its properties here.

### Graphs table

Using the toolbar, you can create new graphs or cut, copy, paste, or delete them.

Button Name Function
New... Insert a new graph with default properties settings.
Cut Move the selected graph from the list to the clipboard.
Copy Copy the selected graph to the clipboard.
Paste Insert a copy of the graph that is on the clipboard.
Delete Delete the selected graph.

The Graphs table displays the name and a description of each graph. Select the Generate on run check box to have Astrogator generate the graph each time that it runs the MCS. You can right-click a graph to select the same commands that are available in the toolbar.

### Graph Properties

Each graph can display the values of any number of the active Controls and Results defined for the profile against an X axis of the number of iterations performed or any single active Control or Result defined for the profile.

The Independent variable field defines the X axis of the graph; select one using the shortcut menu. If the X axis is an active Control or Result, select the Label Iterations check box to label the points on the graph by their iteration numbers.

The following table lists the Active Controls defined for the profile. You can customize how they are displayed in the graph by clicking directly in the property fields.

Active Control Description
Name This is the name of the element selected as a control.
Object This is the segment or component that the element belongs to.
Graph Value Select this check box to include the value.
Line Color This is the color of the line representing the control's value.
Point Style This is the style of marker representing iteration points along the control's line.
Y Axis Select Y1 or Y2 to display a range of values suitable to the control on the left or right side, respectively, of the graph.

The following table lists the Active Results defined for the profile. You can customize how they are displayed in the graph by clicking directly in the property fields.

Active Control Description
Name This is the name of the calculation object selected as a result.
Object This is the segment or component that you selected the result for.
Graph Option Select Don't graph to leave the result out of the graph, Graph difference to display the difference between the result's value and the desired value, or Graph value to use the result's value.
Show Desired Value If the result has a DesiredValue property, select this check box to display the result's desired value.
Line Color This is the color of the line representing the result's value.
Point Style This is the style of marker representing iteration points along the result's line.
Y Axis Select Y1 or Y2 to display a range of values suitable to the result on the left or right side, respectively, of the graph.
Show Tolerance Band If the result has a Tolerance property, select this check box to display the tolerance for the result's desired value.

Click to produce the selected graph. To produce a report of the graph data, click .

## Scripting

The Scripting tab contains an embedded instance of the Scripting Tool. If you enter a script here, Astrogator will execute it before running the sequence each time Astrogator runs the sequence. You can use parameters that are defined in the Scripting Tool as controls by the profile.