最適化セミナーのご案内

3.2 UNIX・Linux版

  1. SIMPLEモデルを作成する
    適当なテキストエディタを用いて,SIMPLEでモデル記述し,拡張子が.smpとなる適当なファイル名でセーブします.ここでは,以下のようなモデルを記述し,ファイル名foo.smpにセーブします.
    // 集合
    Set S, T;
    Element i(set=S), j(set=T);
    
    // パラメータ
    Parameter c(name="c", index=j);
    Parameter cu(name="cu", index=i);
    Parameter cl(name="cl", index=i);
    Parameter A(name="A", index=(i,j));
    Parameter bu(name="bu", index=j);
    Parameter bl(name="bl", index=j);
    
    // 変数
    Variable x(name="x", index=j);
    
    // 最小化
    Objective f(name="目的関数", type=minimize);
    f = sum(c[j] * x[j], j);
    
    // 条件
    cu[i] >= sum(A[i,j] * x[j], j) >= cl[i];
    bu[j] >= x[j] >= bl[j];
  2. データを作成する
    モデルに与えるデータファイルを作成します.データファイルの拡張子は,.datとします.ここでは,以下のデータファイルdata.datを作成しました.
    c = [1] -3 [2] 1;
    cu = [1] 1000 [2] 1000 [3] 1000;
    cl = [1] -1 [2] -2 [3] 2;
    A =
    [1,1] -1   [1,2] 0.1
    [2,1] -0.2 [2,2] -1
    [3,1] 2    [3,2] 1
    ;
    bu = [1] 1 [2] 2;
    bl = [1] 0 [2] 0;
  3. 最適化計算を行う
    それでは,準備したモデル記述ファイルfoo.smp,データファイルdata.datを使用した場合の最適化計算を説明します.まず最適化計算実行モジュールfooを作成します.シェル上で以下のように入力します.
    prompt% mknuopt foo.smp
    次に最適化計算を実行します.以下のように入力します.
    prompt% ./foo data.dat
    そうしますと,実行経過と実行結果が以下のように出力されます.
    [List of Data Files]
    <reading data_file: data.dat>
    
    [Expand Constraints and Objectives]
    foo.smp:18:info: 展開中 目的関数 (1/3) name="目的関数"
    foo.smp:21:info: 展開中 制約式   (2/3) name=""
    foo.smp:22:info: 展開中 制約式   (3/3) name=""
    
    [About Numerical Optimizer]
    MSI Numerical Optimizer xx.x.x (NLP/LP/IP/SDP module), Copyright (C) 1991 NTT DATA Mathematical Systems Inc.
    
    [Problem and Algorithm]
    PROBLEM_NAME                                              foo
    NUMBER_OF_VARIABLES                                         2
    NUMBER_OF_FUNCTIONS                                         4
    PROBLEM_TYPE                                     MINIMIZATION
    METHOD                                           HIGHER_ORDER
    
    [Progress]
    <preprocess begin>.........<preprocess end>
    <iteration begin>
        res=1.4e+05 .... 4.3e+02 .... 3.8e-04 . 1.3e-08 
    <iteration end>
    
    [Result]
    STATUS                                                OPTIMAL
    VALUE_OF_OBJECTIVE                                         -3
    ITERATION_COUNT                                            12
    FUNC_EVAL_COUNT                                            15
    FACTORIZATION_COUNT                                        13
    RESIDUAL                                      1.341986491e-08
    ELAPSED_TIME(sec.)                                       0.03
    SOLUTION_FILE                                         foo.sol

 

 

上に戻る