Я использую lp_solve ... Я хочу, чтобы решить этот MILP с различными ограничениямирешить MILP с MILP решатель для нескольких значений переменных
min: Y;
// subject to, constraints are
x1 + z1h1 + (1 - z1)w1 <= x2 + m(x12 + y12);
x1 - z2h2 - (1 - z2)w2 >=x2 - m(1 - x12 + y12);
y1 + z1w1 + (1 - z1)h1 <= y2 + m(1 + x12 - y12);
y1 - z2w2 - (1 - z2)h2 >= y2 - m(2 - x12 - y12);
x1 + z1h1 + (1 - z1)w1 <= x3 + m(x13 + y13);
x1 - z3h3 - (1 - z3)w3 >= x3 - m(1 - x13 + y13);
y1 + z1w1 + (1 - z1)h1 <= y3 + m(1 + x13 - y13);
y1 - z3w3 - (1 - z3)h3 >= y3 - m(2 - x13 - y13);
x1 + z1h1 + (1 - z1)w1 <= x4 + m(x14 + y14);
x1 - z4h4 - (1 - z4)w4 >= x4 - m(1 - x14 + y14);
y1 + z1w1 + (1 - z1)h1 <= y4 + m(1 + x14 - y14);
y1 - z4w4 - (1 - z4)h4 >= y4 - m(2 - x14 - y14);
x2 + z2h2 + (1 - z2)w2 <= x3 + m(x23 + y23);
x2 - z3h3 - (1 - z3)w3 >= x3 - m(1 - x23 + y23);
y2 + z2w2 + (1 - z2)h2 <= y3 + m(1 + x23 - y23);
y2 - z3w3 - (1 - z3)h3 >= y3 - m(2 - x23 - y23);
x2 + z2h2 + (1 - z2)w2 <= x4 + m(x24 + y24);
x2 - z4h4 - (1 - z4)w4 >= x4 - m(1 - x24 + y24);
y2 + z2w2 + (1 - z2)h2 <= y4 + m(1 + x24 - y24);
y2 - z4w4 - (1 - z4)h4 >= y4 - m(2 - x24 - y24);
x3 + z3h3 + (1 - z3)w3 <= x4 + m(x34 + y34);
x3 - z4h4 - (1 - z4)w4 >= x4 - m(1 - x34 + y34);
y3 + z3w3 + (1 - z3)h3 <= y4 + m(1 + x34 - y34);
y3 - z4w4 - (1 - z4)h4 >= y4 - m(2 - x34 - y34);
/* variable type constraints */
x1 >= 0;
x2 >= 0;
x3 >= 0;
x4 >= 0;
y1 >= 0;
y2 >= 0;
y3 >= 0;
y4 >= 0;
x1 + (1-z1)w1 + h1 z1 <= Y;
x2 + (1-z2)w2 + h2 z2 <= Y;
x3 + (1-z3)w3 + h3 z3 <= Y;
x4 + (1-z4)h4 + h4 z4 <= Y;
y1 + (1-z1)h1 + w1z1 <= Y;
y2 + (1-z2)h2 + w2 z2 <= Y;
y3 + (1-z3)h3 + w3 z3 <= Y;
y4 + (1-z4)h4+ w4z4 <= Y;
bin x12, x13, x14, x23, x24, x34;
bin y12, y13, y14, y23, y24, y34;
bin z1, z2, z3, z4;
, но мне нужно, чтобы решить эту проблему для различных значений w1, h1, w2, h2, w3, h3, w4 и h4, m.
можно решить через lp_solve? или с помощью любого другого lpsolver
, где я должен вручную поместить те значения, каждый раз, прежде чем решить
сказать, что я могу получить решение w1 = 3, w2 = 4, w3 = 5, w4 = 8, h1 = 8 , h2 = 8, h3 = 6, h4 = 7, m = 23
В более позднем случае мне просто нужно изменить значения. Я не хочу менять значения при ограничениях каждый раз для каждого значения. Мне нужно, что программа будет принимать эти значения w_i и h_i & м, это LP может быть решен каждый раз, когда с этим фиксированных ограничениями
Являются ли «разные значения» для 'w_i' /' h_i'/'m' всего несколькими наборами констант? Или эти переменные сами по себе? В первом случае это всего лишь несколько проблем вместо одного; в последнем, это не LP. –
sorry.yes для разных значений w_i/h_i/m –
Uhm, LPsolve имеет около [15 API] (http://lpsolve.sourceforge.net/5.5/). откуда вы звоните lpsolve? Из IDE? AFAIK вы не можете сделать это из среды IDE. Вы можете написать сценарий для загрузки 'w_i/h_i/m' и выполнить LPsolve в цикле. – Ioannis