Как суммировать все значения, кроме одного комплекса

#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) по порядку), так что большое вам спасибо!!!!! С уважением