Hi all,
I'd like to introduce a penalty into my objective, but the pennalty is a piecewise function, whose value depends on a decision variable. How to deal with it?
tuple Order{
key int no;
int SupDem[nodes];
int volume;
int schedule_release_time; }
{Order} orders =...;
float penalty_slope;
dvar int+ release_time[orders];
execute INIT_penalty_slope
{for (var k in orders)
{if (k.schedule_release_time - release_time[k]>=0)
penalty_slope = -1000;
else
penalty_slope = 500;}
}
dexpr float penalty = sum(k in orders,j in nodes:k.SupDem[j]<0) k.volume*penalty_slope*(release_time[k] - k.schedule_release_time);
------------------------------
Ying Qi
------------------------------
#DecisionOptimization