Originally posted by: rdumeur
Hi,
First, my apologies for getting back to you so lately, and I hope you have solved your problem independently.
I've been running your model with COS12.5 and tried your model with TimeLimit=120 to see what kind of solution you get:
250.7454098705181 1 0 0 0 0 0 0 0 0 250.7454098705181 2 7 13 4 0 0 0 0 0 193.1655047636558 1 0 0 0 0 0 0 0 0 193.1655047636558 2 0 0 4 7 9 3 0 0 191.4177897940998 1 0 0 0 0 0 0 0 0 191.4177897940998 2 0 0 4 8 7 1 0 0 189.8425598373151 1 0 0 0 0 0 0 0 0 189.8425598373151 2 2 0 1 0 3 6 10 4 179.5644436179416 1 0 0 0 0 0 0 0 0 179.5644436179416 2 2 0 10 3 4 6 2 4 168.5311006424702 1 0 0 0 0 0 0 0 0 168.5311006424702 2 5 0 2 3 4 6 10 4 166.4180795051958 1 0 0 0 0 0 0 0 0 166.4180795051958 2 5 0 2 3 4 7 9 4 165.1535019386117 1 0 0 0 0 0 0 0 0 165.1535019386117 2 5 0 2 4 4 7 9 4 163.7964645562817 1 0 0 0 0 0 0 0 0 163.7964645562817 2 5 0 2 4 5 7 9 4
which is normal you don't have set per floor area constraint, so it is normal that some floor may have null area. Your constraint is on the sum of areas. So your model should probably state:
forall(f in Floor)
{ Area3[f] >= 49 ; Area3[f] <= 70;
}
instead of :
Area >= 49 && Area <= 70;
which only constrains the global area. And you need also to replace:
dexpr
float Area1[f in Floor] = ((sum(f in Floor, i in aPoints)((x[f][i-1]*y[f][i])-(x[f][i]*y[f][i-1])))); dexpr
float Area2[f in Floor] = ((sum(f in Floor)((x[f][numPoints]*y[f][1])-(x[f][1]*y[f][numPoints]))));
where expressions won't actually uses the index of the floor since 'f' is redefined in the sum, with:
dexpr
float Area1[f in Floor] = ((sum(i in aPoints)((x[f][i-1]*y[f][i])-(x[f][i]*y[f][i-1])))); dexpr
float Area2[f in Floor] = ((x[f][numPoints]*y[f][1])-(x[f][1]*y[f][numPoints]));
I hope this helps, and sorry again for the late answer.
Cheers,
#ConstraintProgramming-General#DecisionOptimization