数理最適化セミナーのご案内

5.2 目的関数クラスObjective

 目的関数はObjectiveというクラスで表現されます.目的関数自身の定義と,目的関数の構造の定義は別々に行う必要があります.例えば$2x + 3y$という目的関数(最小化)を定義したい場合,次のように記述します.

Objective f(type = minimize);
f = 2 * x + 3 * y;

 以下の記述はいずれも誤りです.

Objective 2 * x + 3 * y (type = minimize);
Objective f = 2 * x + 3 * y (type = minimize);

 目的関数を定義する際,扱う問題が最小化問題である場合は引数にtype = minimizeを指定するか,type =を省略します.一方,最大化問題である場合は引数にtype = maximizeを指定します.

Objective f(type = minimize); // 最小化問題
Objective f; // 最小化問題
Objective f(type = maximize); // 最大化問題

 目的関数に添字をつける事はできません.例えば,以下の記述は誤りです.

Objective f(index = i, type = minimize);
f[i] = 2 * x[i] + 3 * y[i];

 Minimize, Maximize という糖衣構文もあります.

Minimize f; // Objective f(type = minimize); と同じ
Maximize f; // Objective f(type = maximize); と同じ

 

 

上に戻る