Skip to main content

Zemax OpticStudio ZOS-API 2026 R1

Interface ZOSAPI::Tools::Optimization::IGlobalOptimization

Last update: 13.03.2026

Definition:

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

Usage (see Example 15 for a full sample)

C#

            // run global search
            double GlobalOptimTimeInSeconds = 15;
            IGlobalOptimization GlobalOpt = TheSystem.Tools.OpenGlobalOptimization();
            if (GlobalOpt != null)
            {
                GlobalOpt.Algorithm = ZOSAPI.Tools.Optimization.OptimizationAlgorithm.DampedLeastSquares;
                GlobalOpt.NumberOfCores = 8;
                Console.WriteLine("Global Optimization for " + GlobalOptimTimeInSeconds.ToString() + " seconds...");
                Console.WriteLine(String.Format("Initial Merit Function {0}", GlobalOpt.InitialMeritFunction));
                GlobalOpt.NumberToSave = ZOSAPI.Tools.Optimization.OptimizationSaveCount.Save_10;
                GlobalOpt.RunAndWaitWithTimeout(GlobalOptimTimeInSeconds);
                for (int j = 1; j <= 10; j++)
                {
                    Console.Write(String.Format("{0}: {1}\n", j, GlobalOpt.CurrentMeritFunction(j)));
                }
                GlobalOpt.Cancel();
                GlobalOpt.WaitForCompletion();                
                GlobalOpt.Close();
            }

C++

    // run global search
    int GlobalOptimTimeInSeconds = 15;
    IGlobalOptimizationPtr GlobalOpt = TheSystem->Tools->OpenGlobalOptimization();
    if (GlobalOpt != nullptr) {
        GlobalOpt->Algorithm = OptimizationAlgorithm::OptimizationAlgorithm_DampedLeastSquares;
        GlobalOpt->NumberOfCores = 8;
        cout << "Global Optimization for " << GlobalOptimTimeInSeconds << " seconds..." << endl;
        cout << "Initial Merit Function  " + _bstr_t(GlobalOpt->InitialMeritFunction) << endl;
        GlobalOpt->NumberToSave = OptimizationSaveCount::OptimizationSaveCount_Save_10;
        ISystemToolPtr baseToolGlobal = GlobalOpt;
        baseToolGlobal->RunAndWaitWithTimeout(GlobalOptimTimeInSeconds);
        for (int j = 1; j <= 10; j++) {
            cout << _bstr_t(int(j)) + ": " + _bstr_t(GlobalOpt->CurrentMeritFunction(j)) << endl;
        }
        baseToolGlobal->Cancel();
        // wait for tool to stop running before closing
        //bool stillRunning = baseToolGlobal->IsRunning;
        //while (stillRunning) {
        //  stillRunning = baseToolGlobal->IsRunning;
        //}
        baseToolGlobal->WaitForCompletion();
        baseToolGlobal->Close();
    }

Matlab

    % run global search
    GlobalOptimTimeInSeconds = 15;
    GlobalOpt = TheSystem.Tools.OpenGlobalOptimization();
    if ~isempty(GlobalOpt)
        GlobalOpt.Algorithm = ZOSAPI.Tools.Optimization.OptimizationAlgorithm.DampedLeastSquares;
        GlobalOpt.NumberOfCores = 8;
        fprintf('Global Optimization for %i seconds...\n', GlobalOptimTimeInSeconds);
        fprintf('Initial Merit Function %6.3%\n', GlobalOpt.InitialMeritFunction);
        GlobalOpt.NumberToSave = ZOSAPI.Tools.Optimization.OptimizationSaveCount.Save_10;
        GlobalOpt.RunAndWaitWithTimeout(GlobalOptimTimeInSeconds);
        for j =1:10
            fprintf('%i: %6.3f\n', j, GlobalOpt.CurrentMeritFunction(j));
        end
        GlobalOpt.Cancel();
        GlobalOpt.WaitForCompletion();
        GlobalOpt.Close();
    end

Python

    # run global search
    GlobalOptimTimeInSeconds = 5
    GlobalOpt = TheSystem.Tools.OpenGlobalOptimization()
    if (GlobalOpt != None):
        GlobalOpt.Algorithm = ZOSAPI.Tools.Optimization.OptimizationAlgorithm.DampedLeastSquares
        GlobalOpt.NumberOfCores = 8
        print('Global Optimization for ' + str(GlobalOptimTimeInSeconds) + ' seconds...')
        print('Initial Merit Function ', GlobalOpt.InitialMeritFunction)
        GlobalOpt.NumberToSave = ZOSAPI.Tools.Optimization.OptimizationSaveCount.Save_10
        
        GlobalOpt.RunAndWaitWithTimeout(1 * GlobalOptimTimeInSeconds)
        for j in range(1, 11):
            print(str(int(j)) + ': ' + str(GlobalOpt.CurrentMeritFunction(j)))
        GlobalOpt.Cancel()
        GlobalOpt.WaitForCompletion()
        GlobalOpt.Close()

Inherits from:

Members

Properties

Property Algorithm

Definition:

OptimizationAlgorithm ZOSAPI.Tools.Optimization.IGlobalOptimization.Algorithm

Return type: OptimizationAlgorithm

Property NumberOfCores

Definition:

int ZOSAPI.Tools.Optimization.IGlobalOptimization.NumberOfCores

Return type: int

Property MaxCores

Definition:

int ZOSAPI.Tools.Optimization.IGlobalOptimization.MaxCores

Return type: int

Property NumberToSave

Definition:

OptimizationSaveCount ZOSAPI.Tools.Optimization.IGlobalOptimization.NumberToSave

Return type: OptimizationSaveCount

Property Targets

Definition:

int ZOSAPI.Tools.Optimization.IGlobalOptimization.Targets

Return type: int

Property Variables

Definition:

int ZOSAPI.Tools.Optimization.IGlobalOptimization.Variables

Return type: int

Property InitialMeritFunction

Definition:

double ZOSAPI.Tools.Optimization.IGlobalOptimization.InitialMeritFunction

Return type: double

Property Systems

Definition:

long ZOSAPI.Tools.Optimization.IGlobalOptimization.Systems

Return type: long

Property Cycles

Definition:

int ZOSAPI.Tools.Optimization.IGlobalOptimization.Cycles

Return type: int

Property CurrentMeritFunction01

Definition:

double ZOSAPI.Tools.Optimization.IGlobalOptimization.CurrentMeritFunction01

Return type: double

Property CurrentMeritFunction02

Definition:

double ZOSAPI.Tools.Optimization.IGlobalOptimization.CurrentMeritFunction02

Return type: double

Property CurrentMeritFunction03

Definition:

double ZOSAPI.Tools.Optimization.IGlobalOptimization.CurrentMeritFunction03

Return type: double

Property CurrentMeritFunction04

Definition:

double ZOSAPI.Tools.Optimization.IGlobalOptimization.CurrentMeritFunction04

Return type: double

Property CurrentMeritFunction05

Definition:

double ZOSAPI.Tools.Optimization.IGlobalOptimization.CurrentMeritFunction05

Return type: double

Property CurrentMeritFunction06

Definition:

double ZOSAPI.Tools.Optimization.IGlobalOptimization.CurrentMeritFunction06

Return type: double

Property CurrentMeritFunction07

Definition:

double ZOSAPI.Tools.Optimization.IGlobalOptimization.CurrentMeritFunction07

Return type: double

Property CurrentMeritFunction08

Definition:

double ZOSAPI.Tools.Optimization.IGlobalOptimization.CurrentMeritFunction08

Return type: double

Property CurrentMeritFunction09

Definition:

double ZOSAPI.Tools.Optimization.IGlobalOptimization.CurrentMeritFunction09

Return type: double

Property CurrentMeritFunction10

Definition:

double ZOSAPI.Tools.Optimization.IGlobalOptimization.CurrentMeritFunction10

Return type: double

Property IsHPCEnabled

Definition:

bool ZOSAPI.Tools.Optimization.IGlobalOptimization.IsHPCEnabled

Return type: bool

Property HPCEstimatedTimeS

Definition:

double ZOSAPI.Tools.Optimization.IGlobalOptimization.HPCEstimatedTimeS

Return type: double

Property HPCRemainingTimeS

Definition:

double ZOSAPI.Tools.Optimization.IGlobalOptimization.HPCRemainingTimeS

Return type: double

Property HPCTimeToStartS

Definition:

double ZOSAPI.Tools.Optimization.IGlobalOptimization.HPCTimeToStartS

Return type: double

Property HPCQueuePosition

Definition:

int ZOSAPI.Tools.Optimization.IGlobalOptimization.HPCQueuePosition

Return type: int

Property HPCState

Definition:

HPCRunState ZOSAPI.Tools.Optimization.IGlobalOptimization.HPCState

Return type: HPCRunState

Property HPCHasTimeEstimate

Definition:

bool ZOSAPI.Tools.Optimization.IGlobalOptimization.HPCHasTimeEstimate

Return type: bool

Property TargetRunTimeM

Definition:

double ZOSAPI.Tools.Optimization.IGlobalOptimization.TargetRunTimeM

Return type: double

Public functions

Function CurrentMeritFunction

double ZOSAPI.Tools.Optimization.IGlobalOptimization.CurrentMeritFunction(int N)

Parameters:

  • int N

Return type: double

Function EstimateHPCTime

bool ZOSAPI.Tools.Optimization.IGlobalOptimization.EstimateHPCTime()

Return type: bool

Connect with Ansys