Dear Robert,
Thank you for your help, my model is feasible now!
It doesnot output the desired result, but this will come.
I have a more general question:
It seems like AMPL is ignoring one of my constraints or I am missunderstanding AMPL's output.
I have two constraints that should limit each other to only produce certain values.
Constraint 1:
var_item_orientation[A,a,i] is a binary variable
include_all_items: sum {i in ITEMS} sum {A in AXIS_CONTAINER} sum {a in AXIS_ITEM} var_item_orientation[A,a,i] = 15;
....looks like this...
ampl: expand include_all_items;
subject to include_all_items:
var_item_orientation['X',1,1] + var_item_orientation['X',1,2] +
var_item_orientation['X',1,3] + var_item_orientation['X',1,4] +
var_item_orientation['X',1,5] + var_item_orientation['X',2,1] +
var_item_orientation['X',2,2] + var_item_orientation['X',2,3] +
var_item_orientation['X',2,4] + var_item_orientation['X',2,5] +
var_item_orientation['X',3,1] + var_item_orientation['X',3,2] +
var_item_orientation['X',3,3] + var_item_orientation['X',3,4] +
var_item_orientation['X',3,5] + var_item_orientation['Y',1,1] +
var_item_orientation['Y',1,2] + var_item_orientation['Y',1,3] +
var_item_orientation['Y',1,4] + var_item_orientation['Y',1,5] +
var_item_orientation['Y',2,1] + var_item_orientation['Y',2,2] +
var_item_orientation['Y',2,3] + var_item_orientation['Y',2,4] +
var_item_orientation['Y',2,5] + var_item_orientation['Y',3,1] +
var_item_orientation['Y',3,2] + var_item_orientation['Y',3,3] +
var_item_orientation['Y',3,4] + var_item_orientation['Y',3,5] +
var_item_orientation['Z',1,1] + var_item_orientation['Z',1,2] +
var_item_orientation['Z',1,3] + var_item_orientation['Z',1,4] +
var_item_orientation['Z',1,5] + var_item_orientation['Z',2,1] +
var_item_orientation['Z',2,2] + var_item_orientation['Z',2,3] +
var_item_orientation['Z',2,4] + var_item_orientation['Z',2,5] +
var_item_orientation['Z',3,1] + var_item_orientation['Z',3,2] +
var_item_orientation['Z',3,3] + var_item_orientation['Z',3,4] +
var_item_orientation['Z',3,5] = 15;
And
Constraint 2: item_orientation_constraint_1 {i in ITEMS}: sum {A in AXIS_CONTAINER} var_item_orientation [A,1,i] <= 1;
...which looks like this ...
ampl: expand item_orientation_constraint_1;
subject to item_orientation_constraint_1[1]:
var_item_orientation['X',1,1] + var_item_orientation['Y',1,1] +
var_item_orientation['Z',1,1] <= 1;
subject to item_orientation_constraint_1[2]:
var_item_orientation['X',1,2] + var_item_orientation['Y',1,2] +
var_item_orientation['Z',1,2] <= 1;
subject to item_orientation_constraint_1[3]:
var_item_orientation['X',1,3] + var_item_orientation['Y',1,3] +
var_item_orientation['Z',1,3] <= 1;
subject to item_orientation_constraint_1[4]:
var_item_orientation['X',1,4] + var_item_orientation['Y',1,4] +
var_item_orientation['Z',1,4] <= 1;
subject to item_orientation_constraint_1[5]:
var_item_orientation['X',1,5] + var_item_orientation['Y',1,5] +
var_item_orientation['Z',1,5] <= 1;
Based on this
the variables var_item_orientation['X',1,1] , var_item_orientation['Y',1,1] , var_item_orientation['Z',1,1] should have in sum maximum a value of 1.
But when using expand on the first constraint the model tells me it gave variables following values:
ampl: expand var_item_orientation['X',1,1], var_item_orientation['Y',1,1];
Coefficients of var_item_orientation['X',1,1]:
include_all_items 1
item_orientation_constraint_1[1] 1
item_orientation_constraint_2[1] -1
item_orientation_constraint_3[1,'Y'] -1
item_orientation_constraint_3[1,'Z'] -1
containtment_condition_1[1,'X'] 90
containtment_condition_2[1,'X'] -90
non_overlapping_condition_2[2,'X'] 90
non_overlapping_condition_4[2,'X'] -90
non_overlapping_condition_6[2] -1
non_overlapping_condition_10[2] 1
CONSTRAINT1_for_var_Dim_CC_conversion1[1,'X'] -600
CONSTRAINT3_for_var_Dim_CC_conversion1[1,'X'] -600
CONSTRAINT1_for_var_Dim_NC_conversion2[2,'X'] -600
CONSTRAINT3_for_var_Dim_NC_conversion2[2,'X'] -600
Coefficients of var_item_orientation['Y',1,1]:
include_all_items 1
item_orientation_constraint_1[1] 1
item_orientation_constraint_2[1] -1
item_orientation_constraint_3[1,'X'] -1
item_orientation_constraint_3[1,'Z'] -1
containtment_condition_1[1,'Y'] 90
containtment_condition_2[1,'Y'] -90
non_overlapping_condition_2[2,'Y'] 90
non_overlapping_condition_4[2,'Y'] -90
non_overlapping_condition_6[2] -1
non_overlapping_condition_10[2] 1
CONSTRAINT1_for_var_Dim_CC_conversion1[1,'Y'] -600
CONSTRAINT3_for_var_Dim_CC_conversion1[1,'Y'] -600
CONSTRAINT1_for_var_Dim_NC_conversion2[2,'Y'] -600
CONSTRAINT3_for_var_Dim_NC_conversion2[2,'Y'] -600
Already here I stopped, since var_item_orientation['X',1,1] and var_item_orientation['Y',1,1] shouldn't have both the value 1, since they are constrained by constraint item_orientation_constraint_1 .
Why does this happen?
Am I misunderstanding the expand function?
Is there another way to find out, which value has been chosen of a variable by AMPL?
The model is the same as posted in this thread beforehand.
Thank you in advance.
Pascal