#cplex
Вопрос:
Я хочу суммировать все значения, кроме одного, но при попытке использовать sum(n-1 по порядку) я получаю сообщение об ошибке. Вот мой код:
int fixed_cost = 75;
dvar int x[truck, order] in 0..1;
dvar float expected_fixed_cost[truck];
forall(h in truck) expected_fixed_cost[h] >= sum(n-1 in order) x[h,n]*fixed_cost;
minimize sum(h in truck) expected_fixed_cost[h];
Может кто-нибудь, пожалуйста, помочь мне и посмотреть, что я делаю не так? Почему CPLEX не поддерживает функцию sum(n-1 по порядку)?
Заранее спасибо!!
Ответ №1:
range truck=1..3;
range order=1..10;
int fixed_cost = 75;
dvar int x[truck, order] in 0..1;
dvar float expected_fixed_cost[truck];
minimize sum(h in truck) expected_fixed_cost[h];
subject to
{
// sum(n in order:(n-1) in order) means
// sum for all i in order such as n-1 belongs to order
forall(h in truck) expected_fixed_cost[h] >= sum(n in order:(n-1) in order) x[h,n]*fixed_cost;
}
работает нормально
Комментарии:
1. Это работает! Я не знал, что вам нужно было смоделировать это как сумму(n по порядку:(n-1) по порядку), так что большое вам спасибо!!!!! С уважением