|
ソースコードの使い方
はじめに
ソースコードの使い方について説明します。
以下では,P1を例として説明しますが,他のコードでも同様の要領で使うことができます。
ファイル構成
- P1.cpp
P1(エネルギープラント運用計画問題)クラスメインファイル。
- P1.h
P1クラスのヘッダーファイル。
- P1_evaluation.cpp
入力された解の評価を行うプログラム。P1クラスを使うためのサンプルプログラムです。
- P1_x.txt
P1_evaluation.cppで評価する解の設定ファイル。第n行目に第n変数の値を記述して下さい。
- P1_tolerance.conf
制約違反許容量εの設定ファイル。g(x) > ε, |h(x)| > εのときに制約違反と判定します。
- P1_***.conf
P1クラスで読み込まれる定数の設定ファイル。
評価プログラム(サンプルコード)の実行方法
- Visual C++の場合
cl P1.cpp P1_evaluation.cpp /FeP1.exe /EHsc(ソースコードのコンパイル) P1.exe(コードの実行)
- gccの場合
g++ P1.cpp P1_evaluation.cpp -o P1.out(ソースコードのコンパイル) ./P1.out(コードの実行)
- 実行結果
P1_x.txt内に記述した解を評価し,以下を出力します。
- x = ...:入力した解を表示
- y = ...:入力した解から構成した離散決定変数を表示
- f1 = ...:1番目の目的関数値。
Known Feasible Solutionsの目的関数値にはこの値を掲載しています。
- g1 = ...:1番目の不等式制約条件評価値。
- h1 = ...:1番目の等式制約条件評価値。
- Sum of violation = ...:制約違反量合計値V(x,y)。
V(x,y) = max{0, g1(x,y)} + max{0, g2(x,y)} + ... + |h1(x,y)| + |h2(x,y)| + ...。
Known Feasible Solutionsの制約違反量合計値にはこの値を掲載しています。
- Tolerance: ...:P1_tolerance.confで入力した制約違反許容量ε
- Input solution is ***:
入力した解が実行可能解であれば***がfeasible,
実行不可能解であれば***がinfeasibleとなります。
クラス構成 (Public methods)
- void P1::evaluation(double *x, double *y, double *f, double *g, double *h)
目的関数値と制約条件評価値を計算します。
連続決定変数を配列xに,離散決定変数を配列yに代入してください。
目的関数値が配列f,不等式制約条件評価値が配列g,等式制約条件評価値が配列hに
代入されます。
- bool P1::checkFeasibility(double *x, double *y)
解の実行可能性を確認します。
連続決定変数を配列xに,離散決定変数を配列yに代入してください。
P1_tolerance.confで設定した制約違反許容量εを用いて,
g(x) > ε, |h(x)| > εのときに制約違反と判定します。
実行可能解であれば「true」を,実行不可能であれば「false」を返します。
クラス構成 (Public properties)
- int P1.N_x:連続決定変数の数。
- int P1.N_y:離散決定変数の数。
- int P1.P:目的関数の数。
- int P1.M:不等式制約条件の数。
- int P1.Q:等式制約条件の数。
- double P1.eps:制約違反許容量。
|
|