Page tree
Skip to end of metadata
Go to start of metadata

Summary

  • You can run optimization from the API.

  • One common application is to run several iterations of multiple types of optimization, see How To Run Multiple Optimizers

Code Snippets

Setting Optimizer Type

Project.Optimizer.Type=6
 
  • The number will the number in the list when you open the optimizer in the user interface.

  • We don't recommend setting optimizer by number as this order could change.

  • Alternately, you can set by the name

 

 

 

Project.Optimizer.Type="Gradient Optimization"

 

 

 

  • You can write a simple script to print out all the types.

 

 

 Sub Main
     Debug.Clear
     For i = 1 To Project.Optimizer.TypeCount
          Debug.Print Project.Optimizer.TypeName(i)
     Next i
End Sub
  • The output of this will be in the debug window

 Pointer - Robust Optimization
Pointer - Train an Optimizer
Pointer - Run Trained Optimizer
Pointer - Gradient Optimization
Random (Local)
Gradient Optimization
Conjugate Gradient
Simplex Optimizer
Genetic (Uniform Mutation)
Genetic (Gaussian Mutation)
Simulated Annealing (Simplex)
Simulated Annealing (Local)
Random (Global)
Direction Set Method

* Alternately, you can write a function to call the optimizer by name and have it return the index if the name is matched, an example is shown below.

Project.Optimizer.Type=find_opt_type("Simplex Optimizer")
Function find_opt_type(nm As String) As Integer
     Dim typ As Integer

     typ = -1
     For i = 1 To Project.Optimizer.TypeCount
          If nm = Project.Optimizer.TypeName(i) Then
               typ = i
          End If
     Next i
     If typ = -1 Then
          MsgBox ("could not find optimizer name specified:" & nm)
     End If
     find_opt_type = typ
End Function


Setting Optimizer Iterations

  • Very simple

 Project.Optimizer.Iterations=1000
 

Running the Optimizer

  • simple to start, write a loop to check to see if running on when to continue.

 Project.Optimizer.Start
  While Project.Optimizer.Running=True
  Wend