3.2 UNIX・Linux版
- 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];
- データを作成する
モデルに与えるデータファイルを作成します.データファイルの拡張子は,.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;
- 最適化計算を行う
それでは,準備したモデル記述ファイル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
上に戻る