Skip to main content

Zemax OpticStudio ZOS-API 2026 R1

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

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

Connect with Ansys