トップ > 製品概要 > NUOPT の更新情報 > NUOPT 7 の更新情報 > SIMPLEによる問題記述の具体例

NUOPT7の更新情報

大域的最適化機能(NUOPT/Global)の問題記述の具体例

  1. 問題例1
  2. 問題例2
  1. 問題例1(Hock & Schttkowski No.56)


    NUOPT/SIMPLEによる記述 MP.doc による記述
        Set S = "1 .. 7";
        Element i(set=S);
        Objective f(type=minimize);
        Variable x(index=S);
       
        f = -x[1]*x[2]*x[3];

        x[i] - 4.2*0.5*(1.0 - cos(2.0*x[i+3])) == 0, i <= 3;
        x[1] + 2*x[2] + 2*x[3] - 7.2*0.5*(1.0 - cos(2.0*x[7])) == 0;

        -10 <= x[i] <= 10, i <= 3;

    本問題に対し、内点法(trust region) は目的関数値を f = 0 とする(x[i] = 0 というtrivial な)局所解を与えますが、NUOPT/Global は f = -3.456 とする大域的最適解を与えます。


    NUOPT/Global による解

    x[1]      2.399796784
    x[2]      1.199982531
    x[3]      1.200119077
    x[4]    -0.8570230621
    x[5]    -0.5639380379
    x[6]    -0.5639740204
    x[7]     -1.570796327

  2. 問題例2 (Hock & Schttkowski No.87)


    NUOPT/SIMPLEによる記述 MP.doc による記述
        Set S;
        Set T;
        Element i(set=S);
        Objective f(type=minimize);
        Variable x(index=S);
        Variable w(index=T);
        double a = 131.078;
        double b = 1.48577;
        double c = 0.90798;
        double d = cos(1.47588);
        double e = sin(1.47588);
       
        S = "1 ... 6";
        T = "1 ... 3";
        f = w[1] + w[2];
        w[1] == ifelse(x[1] >= 300, 31*x[1], 30*x[1]);
        w[2] == ifelse(x[2] >= 200, 30*x[2], w[3]);
        w[3] == ifelse(x[2] >= 100, 29*x[2], 28*x[2]);

        300 - x[1] - (1/a)*x[3]*x[4]*cos(b - x[6]) + (c/a)*d*pow(x[3], 2) == 0;
        200 - (1/a)*x[3]*x[4]*sin(b - x[6]) + (c/a)*e*pow(x[3], 2) == 0;
        - x[2] - (1/a)*x[3]*x[4]*cos(b + x[6]) + (c/a)*d*pow(x[4], 2) == 0;
        - x[5] - (1/a)*x[3]*x[4]*sin(b + x[6]) + (c/a)*e*pow(x[4], 2) == 0;
        0 <= x[1] <= 400;
        0 <= x[2] <= 1000;
        340 <= x[3] <= 420;
        340 <= x[4] <= 420;
        -1000 <= x[5] <= 1000;
        0 <= x[6] <= 0.5236;

    本問題はifelse で微分不可能となる点を持つため、内点法(trust region) では正常に最適化計算を行うことができませんが、NUOPT/Global は目的関数値を f= 8930.940279 とする最適解を与えます。


    NUOPT/Global による解

    x[1]       204.364676
    x[2]              100
    x[3]      356.5870617
    x[4]      401.2685632
    x[5]      18.75405422
    x[6]    0.07979069902
    w[1]      6130.940279
    w[2]             2800
    w[3]             2800