Interface ZOSAPI::Tools::Optimization::ILocalOptimization
Last update: 13.03.2026
Definition:
Interfaces and methods for running a Local Optimization. This interface can be accessed via the IOpticalSystemTools interface.
Usage (see Example 03 for a full sample)
C#
// Local optimisation till completion
ILocalOptimization LocalOpt = TheSystem.Tools.OpenLocalOptimization();
LocalOpt.Algorithm = OptimizationAlgorithm.DampedLeastSquares;
LocalOpt.Cycles = OptimizationCycles.Automatic;
LocalOpt.NumberOfCores = 8;
LocalOpt.RunAndWaitForCompletion();
LocalOpt.Close();
C++
// Local optimisation till completion
ILocalOptimizationPtr LocalOpt = TheSystem->Tools->OpenLocalOptimization();
LocalOpt->Algorithm = OptimizationAlgorithm_DampedLeastSquares;
LocalOpt->Cycles = OptimizationCycles_Automatic;
LocalOpt->NumberOfCores = 8;
ISystemToolPtr baseTool = LocalOpt;
baseTool->RunAndWaitForCompletion();
baseTool->Close();
Matlab
% Local optimisation till completion
LocalOpt = TheSystem.Tools.OpenLocalOptimization();
LocalOpt.Algorithm = ZOSAPI.Tools.Optimization.OptimizationAlgorithm.DampedLeastSquares;
LocalOpt.Cycles = ZOSAPI.Tools.Optimization.OptimizationCycles.Automatic;
LocalOpt.NumberOfCores = 8;
LocalOpt.RunAndWaitForCompletion();
LocalOpt.Close();
Python
# Local optimisation till completion
print('Running Local Optimization')
LocalOpt = TheSystem.Tools.OpenLocalOptimization()
LocalOpt.Algorithm = ZOSAPI.Tools.Optimization.OptimizationAlgorithm.DampedLeastSquares
LocalOpt.Cycles = ZOSAPI.Tools.Optimization.OptimizationCycles.Automatic
LocalOpt.NumberOfCores = 8
LocalOpt.RunAndWaitForCompletion()
LocalOpt.Close()
Inherits from:
Members
- Algorithm
- CanCancel
- Cancel
- Close
- CurrentMeritFunction
- Cycles
- ErrorMessage
- InitialMeritFunction
- IsAsynchronous
- IsFiniteDuration
- IsRunning
- IsValid
- MaxCores
- NumberOfCores
- Progress
- Run
- RunAndWaitForCompletion
- RunAndWaitWithTimeout
- Status
- Succeeded
- Targets
- Variables
- WaitForCompletion
- WaitWithTimeout
Properties
Property Algorithm
Definition:
OptimizationAlgorithm ZOSAPI.Tools.Optimization.ILocalOptimization.Algorithm
Return type: OptimizationAlgorithm
Property NumberOfCores
Definition:
int ZOSAPI.Tools.Optimization.ILocalOptimization.NumberOfCores
Usage (see Example 15 for a full sample)
C#
// Run local optimization and measure time
// Local optimization until completion
Stopwatch stopWatch = new Stopwatch();
stopWatch.Start();
ILocalOptimization LocalOpt = TheSystem.Tools.OpenLocalOptimization();
if (LocalOpt != null)
{
LocalOpt.Algorithm = ZOSAPI.Tools.Optimization.OptimizationAlgorithm.DampedLeastSquares;
LocalOpt.Cycles = ZOSAPI.Tools.Optimization.OptimizationCycles.Automatic;
LocalOpt.NumberOfCores = 8;
Console.WriteLine("Local Optimization...");
Console.WriteLine(String.Format("Initial Merit Function {0}", LocalOpt.InitialMeritFunction));
LocalOpt.RunAndWaitForCompletion();
Console.WriteLine(String.Format("Final Merit Function {0}", LocalOpt.CurrentMeritFunction));
LocalOpt.Close();
}
stopWatch.Stop();
// Get the elapsed time as a TimeSpan value.
TimeSpan ts = stopWatch.Elapsed;
// Format and display the TimeSpan value.
string elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}",
ts.Hours, ts.Minutes, ts.Seconds,
ts.Milliseconds / 10);
Console.WriteLine("Time elapsed : " + elapsedTime + "\n");
//Console.ReadKey(true);
C++
// Run local optimization and measure time
// Local optimization until completion
double clo = clock();
ILocalOptimizationPtr LocalOpt = TheSystem->Tools->OpenLocalOptimization();
// need to determine how to check to validity
if (LocalOpt != nullptr) {
LocalOpt->Algorithm = OptimizationAlgorithm::OptimizationAlgorithm_DampedLeastSquares;
LocalOpt->Cycles = OptimizationCycles::OptimizationCycles_Automatic;
LocalOpt->NumberOfCores = 8;
cout << "Local Optimization..." << endl;
cout << "Initial Merit Function " + _bstr_t(LocalOpt->InitialMeritFunction) << endl;
ISystemToolPtr baseToolLocal = LocalOpt;
baseToolLocal->RunAndWaitForCompletion();
cout << "Final Merit Function " + _bstr_t(LocalOpt->CurrentMeritFunction) << endl;
baseToolLocal->Close();
}
// Get the elapsed time.
cout << "Time elapsed " + _bstr_t((clock() - clo) / 1000) << endl;
Matlab
% Run local optimization and measure time
% Local optimization until completion
tic;
LocalOpt = TheSystem.Tools.OpenLocalOptimization();
if ~isempty(LocalOpt)
LocalOpt.Algorithm = ZOSAPI.Tools.Optimization.OptimizationAlgorithm.DampedLeastSquares;
LocalOpt.Cycles = ZOSAPI.Tools.Optimization.OptimizationCycles.Automatic;
LocalOpt.NumberOfCores = 8;
fprintf('Local Optimization...\n');
fprintf('Initial Merit Function %6.3f\n', LocalOpt.InitialMeritFunction);
LocalOpt.RunAndWaitForCompletion();
fprintf('Final Merit Function %6.3f\n', LocalOpt.CurrentMeritFunction);
LocalOpt.Close();
end
% Get the elapsed time as a TimeSpan value.
toc;
Python
# Run local optimization and measure time
# Local optimization until completion
t = time.time()
LocalOpt = TheSystem.Tools.OpenLocalOptimization()
if (LocalOpt != None):
LocalOpt.Algorithm = ZOSAPI.Tools.Optimization.OptimizationAlgorithm.DampedLeastSquares
LocalOpt.Cycles = ZOSAPI.Tools.Optimization.OptimizationCycles.Automatic
LocalOpt.NumberOfCores = 8
print('Local Optimization...')
print('Initial Merit Function ', LocalOpt.InitialMeritFunction)
LocalOpt.RunAndWaitForCompletion()
print('Final Merit Function ', LocalOpt.CurrentMeritFunction)
LocalOpt.Close()
# Get the elapsed time.
elapsed = time.time() - t
print('Time elapsed ' + str(round(elapsed,3)) + 's')
Return type: int
Property MaxCores
Definition:
int ZOSAPI.Tools.Optimization.ILocalOptimization.MaxCores
Return type: int
Property Cycles
Definition:
OptimizationCycles ZOSAPI.Tools.Optimization.ILocalOptimization.Cycles
Return type: OptimizationCycles
Property Targets
Definition:
int ZOSAPI.Tools.Optimization.ILocalOptimization.Targets
Return type: int
Property Variables
Definition:
int ZOSAPI.Tools.Optimization.ILocalOptimization.Variables
Return type: int
Property InitialMeritFunction
Definition:
double ZOSAPI.Tools.Optimization.ILocalOptimization.InitialMeritFunction
Return type: double
Property CurrentMeritFunction
Definition:
double ZOSAPI.Tools.Optimization.ILocalOptimization.CurrentMeritFunction
Return type: double