Main Content

sdo.optimize

설계 최적화 문제 풀기

    설명

    설계 요구 사항을 충족하는 설계 변수의 값을 구하기 위해 최적화 문제를 풉니다.

    sdo.optimize를 사용하여 다음과 같은 형식의 설계 최적화 문제를 풉니다.

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

    여기서 각각은 다음을 나타냅니다.

    • F는 비용(목적 함수)입니다.

    • p는 설계 변수의 스칼라 또는 벡터입니다.

    • Cleq와 Ceq는 각각 비선형 부등식 제약 조건과 비선형 등식 제약 조건입니다.

    • A와 B는 선형 부등식 제약 조건입니다.

    • Aeq와 Beq는 선형 등식 제약 조건입니다.

    • lb와 ub는 각각 p의 하한과 상한입니다.

    sdo.optimize는 연속적으로 변하는 파라미터와 이산 값 파라미터를 최적화(혼합 정수 최적화)할 수 있습니다. 이산 값 파라미터를 조정하려면 Global Optimization Toolbox가 필요합니다.

    [optimParam,optimInfo] = sdo.optimize(optimFcn,param)는 디폴트 최적화 방법인 fmincon을 사용하여 optimFcn에 지정된 요구 사항을 충족하는 파라미터 값 optimParam을 구합니다.

    예제

    [optimParam,optimInfo] = sdo.optimize(optimFcn,param,options)options에 지정된 최적화 옵션을 사용하여 최적화 문제를 풉니다. sdo.OptimizeOptions를 사용하여 이러한 옵션을 설정합니다.

    [optimParam,optimInfo] = sdo.optimize(prob)는 최소화할 함수, 설계 변수, 최적화 옵션을 포함하는 구조체 prob에 지정된 최적화 문제를 풉니다.

    예제

    모두 축소

    sdoExampleCostFunction에 지정된 최적화 문제를 풉니다. 예제 비용 함수는 Simulink® Design Optimization™ 소프트웨어에 포함되어 있습니다.

    이 예제 함수는 다음 비용을 계산합니다.

    f(x)=x2

    예제 함수에는 다음과 같은 비선형 부등식 제약 조건과 선형 부등식 제약 조건도 포함되어 있습니다.

    x2-4x+10

    2x3-30

    최적화할 때 f(x)를 최소화하면서 제약 조건이 충족되도록 합니다. 예제 함수는 비용과 제약 조건 기울기도 계산합니다.

    초기값 1을 사용하는 설계 변수를 만듭니다.

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

    fmincon 솔버를 사용하기 위해 디폴트 최적화 옵션을 지정합니다. 이 예제에서는 sdoExampleCostFunction의 비용과 제약 조건 기울기 평가를 포함하기 위해 GradFcn 옵션을 'on'으로 설정합니다.

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

    파라미터를 최적화합니다.

    [pOptim,optim_info] = sdo.optimize(@(p) sdoExampleCostFunction(p),p,opts);
     Optimization started 2024-Mar-07, 18:27:21
    
                                   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.
    

    최적화된 파라미터 값은 반환된 param.Continuous 객체 pOptimValue 속성에 저장됩니다.

    pOptim.Value
    ans = 0.2679
    

    입력 인수

    모두 축소

    최소화할 비용 함수로, 함수 핸들로 지정됩니다. 최적화 솔버는 최적화하는 동안 이 함수를 호출합니다.

    함수에는 다음이 필요합니다.

    • 하나의 입력 인수: 조정할 파리미터로 구성된 벡터로, param.Continuous 객체, param.Discrete 객체 또는 이 두 객체의 혼합으로 구성됩니다.

      참고

      응답 최적화 또는 파라미터 추정을 수행할 때 이산 값 파라미터를 사용하려면 sdo.OptimizeOptions로 지정된 surrogateopt 최적화 방법을 사용해야 합니다.

      추가 입력 인수를 전달하려면 익명 함수를 사용합니다. 예를 들어 new_fcn = @(p) fcn(p,arg1,arg2,...)와 같이 지정합니다.

    • 하나의 출력 인수: 다음 필드 중 하나 이상을 갖는 구조체입니다.

      필드
      F

      p를 사용하여 평가된 비용(목적 함수). 솔버는 F를 최소화합니다.

      F는 double형 스칼라입니다.

      Cleq

      p를 사용하여 평가된 비선형 부등식 제약 조건 위반. 솔버가 Cleq(p) ≤ 0을 충족합니다.

      Cleq는 double형 m×1 벡터입니다. 여기서 m은 비선형 부등식 제약 조건의 개수입니다.

      Ceq

      p를 사용하여 평가된 등식 제약 조건 위반. 솔버가 Ceq(p) = 0을 충족합니다.

      Ceq는 double형 r×1 벡터입니다. 여기서 r은 비선형 등식 제약 조건의 개수입니다.

      leq

      p를 사용하여 평가된 선형 부등식 제약 조건 위반. 솔버가 leq(p) ≤ 0을 충족합니다.

      leq는 double형 n×1 벡터입니다. 여기서 n은 선형 부등식 제약 조건의 개수입니다.

      eq

      p를 사용하여 평가된 선형 등식 제약 조건 위반. 솔버가 eq(p) = 0을 충족합니다.

      eq는 double형 s×1 벡터 또는 []입니다. 여기서 s는 선형 등식 제약 조건의 개수입니다.

      순수 실현가능성 문제를 지정하려면 F를 생략하거나 F = []로 설정하십시오. 최소화 문제를 지정하려면 Cleq, Ceq, leq, eq를 생략하거나 이러한 값을 []로 설정하십시오.

      소프트웨어는 수치 섭동을 사용하여 비용과 제약 조건 위반의 기울기를 계산합니다. 기울기가 계산되는 방식을 지정하려면 두 번째 출력 인수를 포함시키고 sdo.OptimizeOptionsGradFcn 속성을 'on'으로 설정하십시오. 이러한 인수는 다음 필드 중 하나 이상을 갖는 구조체여야 합니다.

      필드
      FdF(p)/dp를 포함하는 double형 n×1 벡터로, 여기서 n은 스칼라 파라미터의 개수입니다.
      CleqdCleq(p)/dp를 포함하는 double형 n×m 행렬로, 여기서 m은 비선형 부등식 제약 조건의 개수입니다.
      CeqdCeq(p)/dp를 포함하는 double형 n×r 행렬로, 여기서 r은 비선형 등식 제약 조건의 개수입니다.

      해당되는 모든 목적 함수와 제약 조건 위반의 도함수를 반환해야 합니다.

    예: Simulink® Design Optimization™ 소프트웨어를 사용하여 최적화할 수 있는 비용 함수의 예제를 보려면 MATLAB® 명령 창에 edit sdoExampleCostFunction을 입력하십시오.

    데이터형: function_handle

    최적화할 모델 파라미터로, 다음과 같이 지정됩니다.

    • 하나의 param.Continuous 객체(1개의 연속적으로 변하는 파라미터 조정)

    • 하나의 param.Discrete 객체(1개의 이산 값 파라미터 조정)

    • param.Continuous 객체 또는 param.Discrete 객체가 포함된 벡터 또는 이 두 객체가 혼합된 벡터(여러 개의 파라미터 조정)

    param에 대한 파라미터 객체를 가져오려면 sdo.getParameterFromModel을 사용합니다.

    참고

    응답 최적화 또는 파라미터 추정을 수행할 때 이산 값 파라미터를 사용하려면 sdo.OptimizeOptions로 지정된 surrogateopt 최적화 방법을 사용해야 합니다.

    최적화 옵션으로, sdo.OptimizeOptions를 사용하여 생성된 객체로 지정됩니다. 이 옵션 세트를 사용하여 다음을 지정합니다.

    • 최적화 방법

    • 최대 반복 횟수

    • 허용오차

    최적화 문제 구조체로, 다음 필드를 갖는 구조체로 지정됩니다.

    필드 이름
    OptFcn최소화할 비용 함수. 이 함수의 입력 인수와 출력 인수 요구 사항은 optimFcn에서 확인하십시오.
    Parameters최적화할 모델 파라미터로, param.Continuous 객체 또는 param.Discrete 객체로 지정됩니다.
    Options최적화 옵션으로, sdo.OptimizeOptions를 사용하여 생성됩니다.

    데이터형: struct

    출력 인수

    모두 축소

    최적화된 파라미터 값으로, param.Continuous 객체, param.Discrete 객체 또는 이 두 객체가 모두 포함되어 있는 벡터로 반환됩니다. optimParam의 크기와 구성은 param과 동일합니다. 최적화된 파라미터 값은 해당하는 반환된 param.Continuous 객체 또는 param.Discrete 객체의 Value 속성에 저장됩니다. 최적화된 값을 사용자의 Simulink 모델로 가져오려면 sdo.setValueInModel을 사용하십시오.

    최적화 정보로, 다음 필드 중 하나 이상을 갖는 구조체로 반환됩니다.

    필드
    F최적화된 비용(목적 함수) 값.
    Cleq

    최적화된 비선형 부등식 제약 조건 위반.

    이 필드는 optimFcn에 비선형 부등식 제약 조건을 지정하는 경우 나타납니다.

    값은 m×1 벡터입니다. 여기서 요소의 순서는 optimFcn에 지정된 순서와 일치합니다. 양의 값은 제약 조건이 충족되지 않음을 나타냅니다. 최적화에 성공했는지 확인하려면 exitflag 필드를 검토합니다.

    Ceq

    최적화된 비선형 등식 제약 조건 위반.

    이 필드는 optimFcn에 비선형 등식 제약 조건을 지정하는 경우 나타납니다.

    값은 double형 r×1 벡터입니다. 여기서 요소의 순서는 optimFcn에 지정된 순서와 일치합니다. 0이 아닌 값은 제약 조건이 충족되지 않음을 나타냅니다. 최적화에 성공했는지 확인하려면 exitflag 필드를 검토합니다.

    leq

    최적화된 선형 부등식 제약 조건 위반.

    이 필드는 optimFcn에 선형 부등식 제약 조건을 지정하는 경우 나타납니다.

    값은 double형 n×1 벡터입니다. 여기서 요소의 순서는 optimFcn에 지정된 순서와 일치합니다. 0이 아닌 값은 제약 조건이 충족되지 않음을 나타냅니다. 최적화에 성공했는지 확인하려면 exitflag 필드를 검토합니다.

    eq

    최적화된 선형 등식 제약 조건 위반.

    이 필드는 optimFcn에 선형 등식 제약 조건을 지정하는 경우 나타납니다.

    값은 double형 s×1 벡터입니다. 여기서 요소의 순서는 optimFcn에 지정된 순서와 일치합니다. 0이 아닌 값은 제약 조건이 충족되지 않음을 나타냅니다. 최적화에 성공했는지 확인하려면 exitflag 필드를 검토합니다.

    Gradients

    최적화된 파라미터 값에서의 비용과 제약 조건 기울기. 솔버가 기울기를 계산하는 방식에 대해서는 How the Optimization Algorithm Formulates Minimization Problems 항목을 참조하십시오.

    이 필드는 sdo.OptimizeOptionsMethod 속성에 지정된 솔버가 기울기를 계산하는 경우 나타납니다.

    값은 구조체이며, 구조체의 필드는 optimFcn에 따라 달라집니다.

    Jacobian

    최적화된 파라미터 값에서의 야코비 행렬 정보.

    이 필드는 sdo.OptimizeOptionsMethod 속성에 지정된 솔버가 야코비 행렬을 계산하는 경우 나타납니다.

    값은 구조체이며, 구조체의 필드는 optimFcn에 따라 달라집니다.

    exitflag

    알고리즘이 종료된 이유를 나타내는 정수. 값의 목록과 그에 해당하는 종료 이유는 fmincon, patternsearch (Global Optimization Toolbox), fminsearch, lsqnonlin에서 확인하십시오.

    iterations최적화 반복 횟수.
    SolverOutput

    솔버에 따라 다른 출력 정보를 갖는 구조체. 이 구조체의 필드는 sdo.OptimizeOptionsMethod 속성에 지정된 최적화 솔버에 따라 달라집니다. 솔버 출력의 목록과 그에 대한 설명은 fmincon, patternsearch (Global Optimization Toolbox), fminsearch, lsqnonlin에서 확인하십시오.

    Stats

    시작 시간과 종료 시간, 함수 실행 횟수, 재시작 횟수 등 최적화 중에 수집된 통계량을 포함하는 구조체.

    데이터형: struct

    기본적으로 MATLAB 명령 창에 각 반복에 대한 최적화 정보가 표시됩니다. 표시되는 정보에 대해 자세히 알아보려면 다음 항목을 참조하십시오.

    최적화 옵션 세트의 MethodOptions.Display 속성을 사용하여 이 표시되는 정보의 수준을 구성할 수 있습니다.

    대체 기능

    응답 최적화기 앱은 설계 요구 사항을 지정하고 모델 파라미터를 최적화하기 위한 그래픽 인터페이스를 제공합니다. 자세한 내용은 Design Optimization to Meet a Custom Objective (GUI) 항목과 Design Optimization to Track Reference Signal (GUI) 항목을 참조하십시오.

    파라미터 추정기 앱은 모델 출력이 실험 데이터와 일치하도록 실험을 지정하고 모델 파라미터를 조정하기 위한 그래픽 인터페이스를 제공합니다. 자세한 내용은 모델 파라미터 값 추정하기(GUI) 항목을 참조하십시오.

    확장 기능

    버전 내역

    R2011a에 개발됨