Difference between revisions of "Optimizer control settings"

Line 15: Line 15:
  
 
To see this, define a variable as:
 
To see this, define a variable as:
 +
OptInfo(Opt, "Settings")
 +
Where Opt identifies the variable containing the [http://wiki.analytica.com/index.php?title=DefineOptimization DefineOptimization]() function.
  
 +
Settings can be changed for a particular problem by specifying values for the '''SettingName''' and '''SettingValue''' parameters to [http://wiki.analytica.com/index.php?title=DefineOptimization DefineOptimization](). The first subsection below describes how you specify and view settings, while the subsequent sub-sections detail particular settings used by engines the come standard with Analytica Optimizer.
  
OptInfo(Opt, "Settings")
+
== Selecting the optimization engine ==
 +
Four optimization engines come standard with Analytica Optimizer:
 +
* '''LP/Quadratic''' - uses a dual simplex method combined with branch-and bound for mixed-integer constraints, with a variety of integer cut-set procedures. This is generally the engine of choice for LPs and mixed-integer LPs. For hard mixed-integer LPs, however, the Evolutionary engine uses a very different approach and might be worth trying.
  
 +
* '''SOCP Barrier''' - uses interior point methods designed specifically for quadratically constrained convex problems. The GRG Nonlinear engine is often a good alternative for thi type of problem, especially if the constraints end up being non-convex.
  
Where Opt identifies the variable containing the DefineOptimization() function.
+
* '''GRG Nonlinea'''r - The Generalized Reduced Gradient solver is suitable for smooth non-linear problems. If gradients and Jacobians can be analytically determined, the speed of this method will be dramatically faster.
  
 +
* '''Evolutionary''' - Best suited for non-smooth problems the evolutionary engine creates a population of potential solutions and keeps the best ones.. By default, the Evolutionary engine does not use gradient information. However, if the '''LocalSearch''' setting is on, then it optimizes sample points before adding them to the population using various techniques including gradient-based search.
  
Settings can be changed for a particular problem by specifying values for the SettingName and SettingValue parameters to DefineOptimization(). The first subsection below describes how you specify and view settings, while the subsequent sub-sections detail particular settings used by engines the come standard with Analytica Optimizer.
+
The following matrix shows engine compatibility for each problem type:
 
 
 
 
Selecting the optimization engine
 
  
 +
{| cellpadding="2" class="wikitable"
 +
|-
 +
! width="100pt" |
 +
! width="350pt" |
 +
! width="150pt" | LP/Quadratic
 +
! width="150pt" | SOCP Barrier
 +
! width="150pt" | GRG Nonlinear
 +
! width="150pt" | Evolutionary
 +
|-
 +
|LP
 +
|Linear Program
 +
|*
 +
|*
 +
|*
 +
|*
 +
|-
 +
|QP
 +
|Quadratic Program (linearly constrained)
 +
|*
 +
|*
 +
|*
 +
|*
 +
|-
 +
|QCP
 +
|Quadratically Constrained Program
 +
|
 +
|*<sup>1</sup>
 +
|*
 +
|*
 +
|-
 +
|CQCP
 +
|Convex QCP
 +
|
 +
|*
 +
|*
 +
|*
 +
|-
 +
|NCQCP
 +
|Non-Convex QCP
 +
|
 +
|
 +
|*
 +
|*
 +
|-
 +
|NLP
 +
|Non-Linear Program (smooth)
 +
|
 +
|
 +
|*
 +
|*
 +
|-
 +
|NSP
 +
|Non-Smooth Program
 +
|
 +
|
 +
|*
 +
|*
 +
|}
  
Four optimization engines come standard with Analytica Optimizer:
 
* LP/Quadratic
 
 
The LP/Quadratic engine uses a dual simplex method combined with branch-and bound for mixed-integer constraints, with a variety of integer cut-set procedures. This is generally the engine of choice for LPs and mixed-integer LPs. For hard mixed-integer LPs, however, the Evolutionary engine uses a very different approach and might be worth trying.
 
* SOCP Barrier
 
 
The Second Order Cone Barrier engine uses interior point methods designed specifically for quadratically constrained convex problems. The GRG Nonlinear engine is often a good alternative for thi type of problem, especially if the constraints end up being non-convex.
 
* GRG Nonlinear
 
 
The Generalized Reduced Gradient solver is suitable for smooth non-linear problems. If gradients and Jacobians can be analytically determined, the speed of this method will be dramatically faster.
 
* Evolutionary
 
 
Best suited for non-smooth problems the evolutionary engine creates a population of potential solutions and keeps the best ones.. By default, the Evolutionary engine does not use gradient information. However, if the LocalSearch setting is on, then it optimizes sample points before adding them to the population using various techniques including gradient-based search.
 
 
The following matrix shows engine compatibility for each problem type:
 
  
 
<footer>Optimizer Function Reference</footer>
 
<footer>Optimizer Function Reference</footer>

Revision as of 13:12, 24 November 2015

This chapter shows you how to:

  • Specify Optimizer engine settings in DefineOptimization()
  • Determine what setting are available for each engine, defaults, and possible range
  • Determine size capacities for installed engines
  • Control termination criteria during optimization
  • Select search algorithms
  • Specify numeric precision

Controlling the search

The optimization engine exposes several settings that you can change to influence how the search for the optimum proceeds and when it terminates. The specific collection of available settings is a function of which engine is used to solve the optimization, so that if you install and use an add-on engine, other than the engine that comes standard with Analytica Optimizer, the possible settings might be different. The OptInfo() function can be used to view current values for a problem.

To see this, define a variable as:

OptInfo(Opt, "Settings")

Where Opt identifies the variable containing the DefineOptimization() function.

Settings can be changed for a particular problem by specifying values for the SettingName and SettingValue parameters to DefineOptimization(). The first subsection below describes how you specify and view settings, while the subsequent sub-sections detail particular settings used by engines the come standard with Analytica Optimizer.

Selecting the optimization engine

Four optimization engines come standard with Analytica Optimizer:

  • LP/Quadratic - uses a dual simplex method combined with branch-and bound for mixed-integer constraints, with a variety of integer cut-set procedures. This is generally the engine of choice for LPs and mixed-integer LPs. For hard mixed-integer LPs, however, the Evolutionary engine uses a very different approach and might be worth trying.
  • SOCP Barrier - uses interior point methods designed specifically for quadratically constrained convex problems. The GRG Nonlinear engine is often a good alternative for thi type of problem, especially if the constraints end up being non-convex.
  • GRG Nonlinear - The Generalized Reduced Gradient solver is suitable for smooth non-linear problems. If gradients and Jacobians can be analytically determined, the speed of this method will be dramatically faster.
  • Evolutionary - Best suited for non-smooth problems the evolutionary engine creates a population of potential solutions and keeps the best ones.. By default, the Evolutionary engine does not use gradient information. However, if the LocalSearch setting is on, then it optimizes sample points before adding them to the population using various techniques including gradient-based search.

The following matrix shows engine compatibility for each problem type:

LP/Quadratic SOCP Barrier GRG Nonlinear Evolutionary
LP Linear Program * * * *
QP Quadratic Program (linearly constrained) * * * *
QCP Quadratically Constrained Program *1 * *
CQCP Convex QCP * * *
NCQCP Non-Convex QCP * *
NLP Non-Linear Program (smooth) * *
NSP Non-Smooth Program * *


Comments


You are not allowed to post comments.