Skip to main content

ZOS-API interface 2024 R2 SP02

ZOSAPI.Tools.Optimization.ILocalOptimization Interface Reference

Last update: 17.07.2025

Interfaces and methods for running a Local Optimization. This interface can be accessed via the IOpticalSystemTools interface. More...

Inheritance diagram for ZOSAPI.Tools.Optimization.ILocalOptimization:

Properties

OptimizationAlgorithm Algorithm [get, set]
 
int NumberOfCores [get, set]
 
int MaxCores [get]
 
OptimizationCycles Cycles [get, set]
 
int Targets [get]
 
int Variables [get]
 
double InitialMeritFunction [get]
 
double CurrentMeritFunction [get]
 
- Properties inherited from ZOSAPI.Tools.ISystemTool
int Progress [get]
 Gets the progress of the current tool, if supported.
 
string Status [get]
 Gets the status of the current tool, if supporoted.
 
bool IsRunning [get]
 Gets a value indicating whether the tool is currently running asynchronously.
 
bool CanCancel [get]
 Gets a value indicating whether the tool can be cancelled.
 
bool IsAsynchronous [get]
 Gets a value indicating whether the tool runs asynchronously (i.e. on a thread).
 
bool IsFiniteDuration [get]
 Gets a value indicating whether this tool will complete on its own.
 
bool IsValid [get]
 Gets a value indicating whether the input settings are valid.
 
bool Succeeded [get]
 Gets a value indicating whether the tool execution succeeded.
 
string ErrorMessage [get]
 If Succeeded is false, get the error messages; otherwise, null.
 

Additional Inherited Members

- Public Member Functions inherited from ZOSAPI.Tools.ISystemTool
bool Run ()
 Start the tool. Note that for synchronous tools (see IsAsynchronous), this call will block until completion. If it is asynchronous it will start running but return immediately.
 
bool RunAndWaitForCompletion ()
 Sames as calling Run followed by WaitForCompletion.
 
bool WaitForCompletion ()
 Waits for the asynchronous tool to complete.
 
bool Cancel ()
 Cancels the currently running asynchronous tool.
 
bool Close ()
 Closes this tool and frees up and associated resources.
 
RunStatus WaitWithTimeout (double timeOutSeconds)
 Waits for the currently running tool to complete, with a specified time out value. Note that if the timeout is exceeded this method will return, however the tool will continue to run. Also note that this method will not start the tool running if it is not already.
 
RunStatus RunAndWaitWithTimeout (double timeOutSeconds)
 Starts the tool running, and waits for it to complete with the specified timeout value. Note that if the timeout is exceeded this method will return, however the tool will continue to run.
 

Detailed Description

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.Close();
bool RunAndWaitForCompletion()
Sames as calling Run followed by WaitForCompletion.
bool Close()
Closes this tool and frees up and associated resources.
Interfaces and methods for running a Local Optimization. This interface can be accessed via the IOpti...
Definition: Optimization.cs:50
OptimizationCycles
Definition: Optimization.cs:22
OptimizationAlgorithm
Definition: Optimization.cs:14

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();
Definition: Optimization.cs:9
Definition: FileSource.cs:4
The ZOSAPI namespace contains classes for initially connecting to zemax. See also ZOSAPI_Connection,...
Definition: IAS_FieldCurvatureAndDistortion.cs:5

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()
Examples
CSharpStandalone_03_open_file_and_optimise.cs, and CSharpStandalone_15_Seq_Optimization.cs.

Property Documentation

◆ Algorithm

OptimizationAlgorithm ZOSAPI.Tools.Optimization.ILocalOptimization.Algorithm
getset

◆ CurrentMeritFunction

double ZOSAPI.Tools.Optimization.ILocalOptimization.CurrentMeritFunction
get

◆ Cycles

OptimizationCycles ZOSAPI.Tools.Optimization.ILocalOptimization.Cycles
getset

◆ InitialMeritFunction

double ZOSAPI.Tools.Optimization.ILocalOptimization.InitialMeritFunction
get

◆ MaxCores

int ZOSAPI.Tools.Optimization.ILocalOptimization.MaxCores
get

◆ NumberOfCores

int ZOSAPI.Tools.Optimization.ILocalOptimization.NumberOfCores
getset

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));
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);
double CurrentMeritFunction
Definition: Optimization.cs:71
double InitialMeritFunction
Definition: Optimization.cs:70

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')

◆ Targets

int ZOSAPI.Tools.Optimization.ILocalOptimization.Targets
get

◆ Variables

int ZOSAPI.Tools.Optimization.ILocalOptimization.Variables
get

Connect with Ansys