Main

## Main.EquationResiduals History

January 14, 2013, at 07:01 PM by 128.187.97.21 -
Changed line 36 from:
!!!! Exercise 3 Results
to:
!!!! Exercise Results for the Two Bar Truss
January 14, 2013, at 06:54 PM by 128.187.97.21 -

!!!! Exercise 3 Results
January 14, 2013, at 06:54 PM by 128.187.97.21 -
Deleted lines 10-14:
* [[https://apmonitor.com/online/view_pass.php?f=twobar_v1.apm | Solve Initial Version]]
* [[https://apmonitor.com/online/view_pass.php?f=twobar_v2.apm | Solve with SQRT removed]]
* [[https://apmonitor.com/online/view_pass.php?f=twobar_v3.apm | Solve with added constraints and no SQRT]]
* [[https://apmonitor.com/online/view_pass.php?f=twobar_v4.apm | Solve with added constraints and explicit definition of some variables]]

!!!! Tips for Improved Convergence

----

The following models are taken from the homework assignment on the [[Main/TwoBarTruss | Two Bar Truss problem]]. The initial version is most similar to how the problem would be posed in a textbook. Removing the SQRT and adding constraints to the variables shows improvements in model convergence. Explicit definition of some of the variables adds additional improvements.

* [[https://apmonitor.com/online/view_pass.php?f=twobar_v1.apm | Solve Initial Version]]
* [[https://apmonitor.com/online/view_pass.php?f=twobar_v2.apm | Solve with SQRT removed]]
* [[https://apmonitor.com/online/view_pass.php?f=twobar_v3.apm | Solve with added constraints and no SQRT]]
* [[https://apmonitor.com/online/view_pass.php?f=twobar_v4.apm | Solve with added constraints and explicit definition of some variables]]
January 14, 2013, at 06:51 PM by 128.187.97.21 -

----
January 14, 2013, at 06:50 PM by 128.187.97.21 -
(:title Best Practices for Open-Equation Modeling:)
(:keywords mathematical modeling, nonlinear, optimization, engineering optimization, interior point, active set, differential, algebraic, modeling language, university course:)
(:description Mathematical modeling is necessary to apply optimization techniques in engineering. Improved structure of the models leads to faster and more robust convergence.:)

!!!! Modeling Exercise

Modeling often constitutes most of the effort on an optimization project. There is some art in the way a programmer poses the model in a way that allows solvers to efficiently find a solution. Below are some tips and an exercise on ways to rearrange the model equations for improved convergence.

[[Attach:twobar_rearrangement.pdf | Worksheet with Modeling Exercises]]

* [[https://apmonitor.com/online/view_pass.php?f=twobar_v1.apm | Solve Initial Version]]
* [[https://apmonitor.com/online/view_pass.php?f=twobar_v2.apm | Solve with SQRT removed]]
* [[https://apmonitor.com/online/view_pass.php?f=twobar_v3.apm | Solve with added constraints and no SQRT]]
* [[https://apmonitor.com/online/view_pass.php?f=twobar_v4.apm | Solve with added constraints and explicit definition of some variables]]

# Rearrange to equation in residual form to:
## Avoid divide by zero
## Minimize use of functions like sqrt, log, exp, etc.
## Have continuous first and second derivatives
## Fit the equation into a linear or quadratic form
# Bounds
## Include variable bounds to exclude infeasible solutions
## Variable bounds to avoid regions of strong nonlinearity
## Caution: watch for infeasible solutions
# Scaling:
## Scale absolute value of variables to 1e-3 to 1e3
## Scale absolute value of equation residuals to 1e-3 to 1e3
## Better that 1st derivative values are closer to 1.0
# Good initial conditions:
## Starting near a solution can improve convergence
## Try multiple initial conditions to verify global solution (non-convex problems)
## Explicitly calculate intermediate values
# Check iteration summary for improved convergence

----

(:html:)
<script type="text/javascript">
/* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */
var disqus_shortname = 'apmonitor'; // required: replace example with your forum shortname

/* * * DON'T EDIT BELOW THIS LINE * * */
(function() {
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
dsq.src = 'https://' + disqus_shortname + '.disqus.com/embed.js';