最適化セミナーのご案内

5.16 条件分岐関数ifelse

 条件分岐関数は,区間によって定義が異なる目的関数Objectiveや式Expressionを定義するためのものです.次の例では,目的関数$f = \left\{ \begin{array}{c} x^2, x\ge 0  \\ 0, x \le 0 \end{array} \right.$ifelse関数を使用して定義しています.

Variable x;
Objective f(type=minimize);
f = ifelse(x>=0, x*x, 0);

 条件分岐関数を用いる場合,対象の関数は領域全体で連続かつ微分可能である必要があります.折れ線関数は連続ですが微分可能でないため,条件分岐関数を用いて記述することはできません.以下の例は誤りです.

Variable x;
Objective f(type=minimize);
f = ifelse(x>=0, x, -x);

 なお,折れ線関数を記述する方法に関しては17.1折れ線関数の表現をご覧ください.


 

 

上に戻る