6.2 目的関数クラスObjective
wcsp利用時にも目的関数クラスObjective
を用いますが,引数target
で目標値を指定する必要があります.目的関数がtarget
で指定された値を上回っている分(最大化問題の場合は下回っている分)が「ソフト制約としての制約違反量」に加算されます.次の例では,target
に10を設定しています.
Objective f(type = minimize, target = 10);
target
の初期設定は0で,明示的にtarget
を指定しない場合はtarget
は0
であると解釈されます.すなわち,次の二つは同じ意味です.
Objective f(type = minimize, target = 0);
Objective f(type = minimize);
target
の値は,定数Parameter
から設定する事もできます.
Parameter p; p = 10; Objective f(type = minimize, target = p);
target
の値は,求解オプションdefaultObjectiveTarget
で指定することもできます.
options.defaultObjectiveTarget = 5;
Objective
の引数でのtarget
値と,求解オプションdefaultObjectiveTarget
の値が競合した場合は,Objective
の引数の値の方が優先されます.
目的関数の重みは求解オプションdefaultObjectiveWeight
で指定します.次の例では,目的関数の重みに5を指定しています.
options.defaultObjectiveWeight = 5;
求解オプションdefaultObjectiveWeight
の初期値は1です.
上に戻る