주요 콘텐츠

optimizeDesign

Optimize circuit design in simulation environment

Since R2024b

Description

[sol,metric] = obj.optimizeDesign optimizes the circuit parameters of the msbOptimizer object obj.

example

[sol,metric] = optimizeDesign(obj,NumParallelSims=8,MaxNumberSims=100) optimizes the circuit parameters by running 8 simulations per iteration and limits the maximum number of simulations to 100.

Examples

collapse all

Define the performance specifications of a second-order DSM.

outputTable=table();
outputTable.Test=["ACMeas";"ACMeas";"ACMeas";"ACMeas";"ACMeas"];
outputTable.Name={'SNR';'SFDR';'SINAD';'ENOB';'NoiseFloor'};
outputTable.Units={'dB';'dB';'dB';'bits';'dB'};
outputTable.Spec={'> 72';'> 74';'> 72';'maximize 11.5';'< -78'}
outputTable=5×4 table
      Test           Name          Units            Spec       
    ________    ______________    ________    _________________

    "ACMeas"    {'SNR'       }    {'dB'  }    {'> 72'         }
    "ACMeas"    {'SFDR'      }    {'dB'  }    {'> 74'         }
    "ACMeas"    {'SINAD'     }    {'dB'  }    {'> 72'         }
    "ACMeas"    {'ENOB'      }    {'bits'}    {'maximize 11.5'}
    "ACMeas"    {'NoiseFloor'}    {'dB'  }    {'< -78'        }

Define the variables to optimize.

variableTable=table();
variableTable.parameters={'a1';'a2';'b1';'b2'};
variableTable.values=["0.15:0.005:0.16";"0.55:0.005:0.7";"0.15:0.005:0.16";"0.55:0.005:0.7"]
variableTable=4×2 table
    parameters         values      
    __________    _________________

      {'a1'}      "0.15:0.005:0.16"
      {'a2'}      "0.55:0.005:0.7" 
      {'b1'}      "0.15:0.005:0.16"
      {'b2'}      "0.55:0.005:0.7" 

Create the msbOptimizer object.

moptimizer = msbOptimizer(SimulationEnvironment='simulink',OutputsSetup=outputTable,VariableSetup=variableTable,DesignName='DSM2ndOrder')
moptimizer = 
  msbOptimizer with properties:

               DesignName: 'DSM2ndOrder'
                   Solver: "surrogateopt"
    SimulationEnvironment: 'simulink'
             BestSolution: []
              BestMetrics: []
     FinalOptimizerStatus: []
             OutputsSetup: [5×4 table]
          ParametersSetup: [4×2 table]
           ParameterNames: ["a1"    "a2"    "b1"    "b2"]
          ParameterValues: ["0.15:0.005:0.16"    "0.55:0.005:0.7"    "0.15:0.005:0.16"    "0.55:0.005:0.7"]
                    Eflag: []
                   Trials: []
              Constraints: [5×9 table]
                  Corners: []

Optimize the parameters.

[sol,metric] = moptimizer.optimizeDesign
Maximum number of simulations: 100
Number of parallel simulations: 1

Figure Optimization Plot Function contains an axes object. The axes object with title DSM2ndOrder Optimization, xlabel Number of simulations, ylabel SNR contains 2 objects of type line. One or more of the lines displays its values using only markers These objects represent Infeasible Best, Best.

Optimizer was able to meet all the specifications.
sol=4×2 table
    Name    Value
    ____    _____

    "a1"     0.15
    "a2"    0.575
    "b1"    0.155
    "b2"    0.635

metric=5×4 table
        Name        FinalMetrics         Specs         Units 
    ____________    ____________    _______________    ______

    "SNR"              72.519       "> 72"             "dB"  
    "SFDR"             80.869       "> 74"             "dB"  
    "SINAD"            72.519       "> 72"             "dB"  
    "ENOB"             11.754       "maximize 11.5"    "bits"
    "NoiseFloor"      -80.755       "< -78"            "dB"  

As you can see, the function meets the required specifications. You can use the check point file to continue further optimization from the current state.

Input Arguments

collapse all

Circuit design to optimize, specified as an msbOptimizer object The object includes the name of the simulation environment, the name of the circuit design, the performance specifications, and the variables to optimize.

Name-Value Arguments

collapse all

Specify optional pairs of arguments as Name1=Value1,...,NameN=ValueN, where Name is the argument name and Value is the corresponding value. Name-value arguments must appear after other arguments, but the order of the pairs does not matter.

Example: [sol,metric] =obj.optimizeDesign(ProgressPlot='true') optimizes the circuit design defined in the obj object and shows the optimization progress in a plot.

Number of parallel simulations per iteration, specified as a nonnegative integer scalar.

Data Types: double

Maximum number of simulations to run, specified as a nonnegative integer scalar. The default is max(100,10*nvar), where nvar is the number of problem variables.

Data Types: double

Minimum number of random sample points to create at the start of a surrogate creation phase, specified as a nonnegative integer scalar. The default is max(20,2*nvar), where nvar is the number of problem variables. For more information, see .Surrogate Optimization Algorithm (Global Optimization Toolbox).

Data Types: double

Show optimization progress in a plot.

Data Types: logical

The metric name to plot on the progress plot, specified as a string or character vector. The default is the first metric on the constraint table.

Name of the file to create checkpoints and restart the optimization process, specified as a string or character vector.

Use the checkpoint file for optimization. The function can only use this argument after the creation of a checkpoint file at the end of a simulation run.

Data Types: logical

Optimization solver used to optimize circuit parameters. You can only select surrogateopt.

Handle to objective function that evaluates the objective.

Initial points for surrogate optimization, specified as a matrix or struct.

Data Types: double

Random number generator seed, specified as a nonnegative integer scalar.

Data Types: double

Random number generator algorithm used by optimization solver, specified as a string.

Data Types: char

Output Arguments

collapse all

Optimized variables or parameters, returned as a table. The elements of the table matches the variables or parameters defined in the VariableSetup argument in mbsOptimizer object.

Performance metrics using optimized variables or parameters, returned as a table. The elements of the table matches the variables or parameters defined in the OutputsSetup argument in mbsOptimizer object.

Version History

Introduced in R2024b