Main Content

sdo.optimize

Solve design optimization problem

    Description

    Solve an optimization problem to find the values of design variables that satisfy the design requirements.

    Use sdo.optimize to solve a design optimization problem of the following form:

    minpF(p) subject to {Cleq(p)0Ceq(p)=0A×pBAeq×p=Beqlbpub

    Here:

    • F is the cost (objective).

    • p is a scalar or vector of design variables.

    • Cleq and Ceq are the nonlinear inequality and equality constraints, respectively.

    • A and B are the linear inequality constraints.

    • Aeq and Beq are the linear equality constraints.

    • lb and ub are the lower and upper bounds on p, respectively.

    sdo.optimize can optimize continuously varying parameters and discrete-valued parameters (mixed-integer optimization). Tuning discrete-valued parameters requires Global Optimization Toolbox software.

    [optimParam,optimInfo] = sdo.optimize(optimFcn,param) uses fmincon, the default optimization method, to find the parameter values optimParam that satisfy the requirements specified in optimFcn.

    [optimParam,optimInfo] = sdo.optimize(optimFcn,param,options) solves the optimization problem with the optimization options specified in options. Use sdo.OptimizeOptions to set these options.

    example

    [optimParam,optimInfo] = sdo.optimize(prob) solves the optimization problem specified in a structure prob that contains the function to be minimized, design variables, and optimization options.

    Examples

    collapse all

    Solve an optimization problem specified in sdoExampleCostFunction. The example cost function is included with the Simulink® Design Optimization™ software.

    This example function computes the following cost:

    f(x)=x2

    The function also includes the following nonlinear and linear inequality constraints, respectively:

    x2-4x+10

    2x3-30

    For optimization, f(x) is minimized, subject to satisfying the constraints. The example function also computes cost and constraint gradients.

    Create a design variable, using an initial value of 1.

    p = param.Continuous('x',1);

    Specify default optimization options to use fmincon solver. For this example, to include cost and constraint gradient evaluation from sdoExampleCostFunction, set the GradFcn option to 'on'.

    opts = sdo.OptimizeOptions;
    opts.GradFcn = 'on';

    Optimize the parameter.

    [pOptim,optim_info] = sdo.optimize(@(p) sdoExampleCostFunction(p),p,opts);
     Optimization started 2024-Sep-05, 19:14:39
    
                                   max                     First-order 
     Iter F-count        f(x)   constraint    Step-size    optimality
        0      3            1            0
        1      5         0.09            0          0.7         0.59
        2      6    0.0716349     0.001047       0.0324       0.0129
        3      7    0.0717968    9.127e-08     0.000302     2.37e-06
    Local minimum found that satisfies the constraints.
    
    Optimization completed because the objective function is non-decreasing in 
    feasible directions, to within the value of the optimality tolerance,
    and constraints are satisfied to within the value of the constraint tolerance.
    

    The optimized parameter value is stored in the Value property of the returned param.Continuous object pOptim.

    pOptim.Value
    ans = 
    0.2679
    

    Input Arguments

    collapse all

    Cost function to minimize, specified as a function handle. The optimization solver calls this function during optimization.

    The function requires:

    • One input argument, which is a vector of parameters to be tuned, represented by param.Continuous objects, param.Discrete objects, or a mixture of both.

      Note

      To use discrete-valued parameters for response optimization or parameter estimation, you must use the surrogateopt optimization method, specified with sdo.OptimizeOptions.

      To pass additional input arguments, use an anonymous function. For example, new_fcn = @(p) fcn(p,arg1,arg2,...).

    • One output argument, which is a structure with one or more of the following fields:

      FieldValue
      F

      Cost (objective) evaluated at p. The solver minimizes F.

      F is a scalar double.

      Cleq

      Nonlinear inequality constraint violations evaluated at p. The solver satisfies Cleq(p) ≤ 0.

      Cleq is a double m-by-1 vector, where m is the number of nonlinear inequality constraints.

      Ceq

      Nonlinear equality constraint violations evaluated at p. The solver satisfies Ceq(p) = 0.

      Ceq is a double r-by-1 vector, where r is the number of nonlinear equality constraints.

      leq

      Linear inequality constraint violations evaluated at p. The solver satisfies leq(p) ≤ 0.

      leq is a double n-by-1 vector, where n is the number of linear inequality constraints.

      eq

      Linear equality constraint violations evaluated at p. The solver satisfies eq(p) = 0.

      eq is a double s-by-1 vector or [], where s is the number of linear equality constraints.

      To specify a pure feasibility problem, omit F or set F = []. To specify a minimization problem, omit Cleq, Ceq, leq, and eq, or set their values to [].

      The software computes gradients of the cost and constraint violations using numeric perturbation. If you want to specify how the gradients are computed, include a second output argument and set the GradFcn property of sdo.OptimizeOptions to 'on'. This argument must be a structure with one or more of the following fields:

      FieldValue
      FDouble n-by-1 vector that contains dF(p)/dp, where n is the number of scalar parameters
      CleqDouble n-by-m matrix that contains dCleq(p)/dp, where m is the number of nonlinear inequality constraints
      CeqDouble n-by-r matrix that contains dCeq(p)/dp, where r is the number of nonlinear equality constraints

      You must return the derivatives of all applicable objective and constraint violations.

    Example: For an example of a cost function that you can optimize using Simulink® Design Optimization™ software, enter edit sdoExampleCostFunction in the MATLAB® command window.

    Data Types: function_handle

    Model parameters to optimize, specified as:

    • A param.Continuous object, to tune a single continuously varying parameter.

    • A param.Discrete object, to tune a single discrete-valued parameter.

    • A vector containing param.Continuous objects, param.Discrete objects, or a mixture of both, to tune multiple parameters.

    Use sdo.getParameterFromModel to obtain the parameter objects for param.

    Note

    To use discrete-valued parameters for response optimization or parameter estimation, you must use the surrogateopt optimization method, specified with sdo.OptimizeOptions.

    Optimization options, specified as an object created using sdo.OptimizeOptions. Use this option set to specify:

    • Optimization method

    • Maximum number of iterations

    • Tolerances

    Optimization problem structure, specified as a structure with the following fields:

    Field NameValue
    OptFcnCost function to minimize. See optimFcn for the input and output argument requirements of this function.
    ParametersModel parameters to optimize, specified as param.Continuous or param.Discrete objects.
    OptionsOptimization options, created with sdo.OptimizeOptions.

    Data Types: struct

    Output Arguments

    collapse all

    Optimized parameter values, returned as a param.Continuous object, a param.Discrete, or a vector of such parameter objects. The size and composition of optimParam is the same as that of param. The optimized parameter values are stored in the Value property of the corresponding returned param.Continuous or param.Discrete object. To get the optimized values into your Simulink model, use sdo.setValueInModel.

    Optimization information, returned as a structure with one or more of the following fields:

    FieldValue
    FOptimized cost (objective) value.
    Cleq

    Optimized nonlinear inequality constraint violations.

    The field appears if you specify a nonlinear inequality constraint in optimFcn.

    The value is a m-by-1 vector, where the order of the elements corresponds to the order specified in optimFcn. Positive values indicate that the constraint is not satisfied. Check the exitflag field to confirm that the optimization succeeded.

    Ceq

    Optimized nonlinear equality constraint violations.

    The field appears if you specify a nonlinear equality constraint in optimFcn.

    The value is a double r-by-1 vector, where the order of the elements corresponds to the order specified in optimFcn. Any nonzero values indicate that the constraint is not satisfied. Check the exitflag field to confirm that the optimization succeeded.

    leq

    Optimized linear inequality constraint violations.

    The field appears if you specify a linear inequality constraint in optimFcn.

    The value is a double n-by-1 vector, where the order of the elements corresponds to the order specified in optimFcn. Nonzero values indicate that the constraint is not satisfied. Check the exitflag field to confirm that the optimization succeeded.

    eq

    Optimized linear equality constraint violations.

    The field appears if you specify linear equality constraints in optimFcn.

    The value is a double s-by-1 vector, where the order of the elements corresponds to the order specified in optimFcn. Nonzero values indicate that the constraint is not satisfied. Check the exitflag field to confirm that the optimization succeeded.

    Gradients

    Cost and constraint gradients at the optimized parameter values. See How the Optimization Algorithm Formulates Minimization Problems on how the solver computes gradients.

    This field appears if the solver specified in the Method property of sdo.OptimizeOptions computes gradients.

    The value is a structure whose fields are dependent on optimFcn.

    Jacobian

    Jacobian information at the optimized parameter values.

    The field appears if the solver specified in the Method property of sdo.OptimizeOptions computes Jacobians.

    The value is a structure whose fields are dependent on optimFcn.

    exitflag

    Integer identifying the reason the algorithm terminated. See fmincon, patternsearch (Global Optimization Toolbox), fminsearch, and lsqnonlin for a list of the values and the corresponding termination reasons.

    iterationsNumber of optimization iterations.
    SolverOutput

    Structure with solver-specific output information. The fields of this structure depends on the optimization solver specified in the Method property of sdo.OptimizeOptions. See fmincon, patternsearch (Global Optimization Toolbox), fminsearch, and lsqnonlin for a list of solver outputs and their description.

    Stats

    Structure that contains statistics collected during optimization, such as start and end times, number of function evaluations, and restarts.

    Data Types: struct

    Tips

    By default, the software displays the optimization information for each iteration in the MATLAB command window. To learn more about the information displayed, see:

    You can configure the level of this display using the MethodOptions.Display property of an optimization option set.

    Alternative Functionality

    Apps

    The Response Optimizer app provides a graphical interface to specify design requirements and optimize model parameters. For more information, see Design Optimization to Meet a Custom Objective (GUI) and Design Optimization to Track Reference Signal (GUI).

    The Parameter Estimator app provides a graphical interface to specify experiments and tune model parameters so that the model output matches the experiment data. For more information, see Estimate Model Parameter Values (GUI).

    Extended Capabilities

    Version History

    Introduced in R2011a