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です.
上に戻る
