Математическая модель в сложно
Привет,
у меня есть некоторые сомнения, связанные с кодом CPLEX, который я пытаюсь написать. Сам код (модель) вроде бы хорошо написан, но когда дело доходит до заполнения данных, у меня возникает ошибка. ***Примечание: в модели нет никаких ограничений, потому что я пытаюсь провести пробную версию модели только для того, чтобы убедиться, что она работает.***
Вот этот код:
использование CP;
// ПАРАМЕТРЫ СЕТИ
инт грузовиков=...;
грузовик диапазон= 1..грузовые автомобили;
int емкость [грузовик]=...;
кортеж nodeinfo {
строковое имя;
инт начала;
int endtime;
плавающий спрос;
}
{nodeinfo} departurenode=...;
{nodeinfo} arrivalnode=...;
{nodeinfo} startingnode=...;
дуга кортежа {
nodeinfo departurenode;
nodeinfo arrivalnode;
nodeinfo startingnode;
инт тревелсимки;
}
{arc} дуги=...;
плавающая стоимость [дуги][грузовик];
// ПЕРЕМЕННЫЕ ПАРАМЕТРЫ
время группа булевскую [дуг,грузовик];
dvar int+ arrivaltime [arrivalnode,грузовик];
// ЦЕЛЕВАЯ ФУНКЦИЯ
dexpr float totalcost =
сумма (i в дугах, j в грузовике) x [i,j] * стоимость [i,j];
минимизировать totalcost;
// СУЩЕСТВУЮЩИЕ ОГРАНИЧЕНИЯ
подлежит {}
выполнять {
writeln(дуги);
};
Вот эти данные:
грузовики= 2;
departurenode= [[а,0,10000,0],[Б,0,10000,0],[С,0,10000,10],[Д,0,10000,10]];
arrivalnode= [[а,0,10000,0],[Б,0,10000,0],[С,0,10000,10],[Д,0,10000,10]];
startingnode=[[а,0,10000,0],[Б,0,10000,0],[С,0,10000,10],[Д,0,10000,10]];
см= [[&ЛТ;а,0,10000,0 и GT;,&ЛТ;а,0,10000,0 и GT;,&ЛТ;с,0,10000,10&ГТ;,5], [в<а,0,10000,0 и GT;,&ЛТ;а,0,10000,0 и GT;,&ЛТ;Д,0,10000,10&ГТ;,5],
[&ЛТ;Б,0,10000,0 и GT;,&ЛТ;Б,0,10000,0 и GT;,&ЛТ;с,0,10000,10&ГТ;,5], [&ЛТ;Б,0,10000,0 и GT;,&ЛТ;Б,0,10000,0 и GT;,&ЛТ;Д,0,10000,10&ГТ;,5],
[&ЛТ;с,0,10000,0 и GT;,&ЛТ;с,0,10000,0 и GT;,&ЛТ;а,0,10000,10&ГТ;,5], [в<с,0,10000,0 и GT;,&ЛТ;с,0,10000,0 и GT;,&ЛТ;Б,0,10000,10&ГТ;,5],
[&ЛТ;Д,0,10000,0 и GT;,&ЛТ;Д,0,10000,0 и GT;,&ЛТ;а,0,10000,10&ГТ;,5], [&ЛТ;Д,0,10000,0 и GT;,&ЛТ;Д,0,10000,0 и GT;,&ЛТ;Б,0,10000,10&ГТ;,5]]
***Примечание: в каждом промежутке дуги перед временем путешествия (последнее значение промежутка=5) должны быть данные из departurenode, узла прибытия и startingnode, но они не отображаются, и я не знаю почему ***
стоимость= [&ЛТ;1,1&ГТ;,&ЛТ;1,1&ГТ;,&ЛТ;1,1&ГТ;,&ЛТ;1,1&ГТ;,&ЛТ;1,1&ГТ;,&ЛТ;1,1&ГТ;,&ЛТ;1,1&ГТ;,&ЛТ;1,1&ГТ;]
Еще одно сомнение: что касается ограничений модели, то я не знаю, как записать их в CPLEX.
1) starttime <= arrivaltime <= endtime //(для каждого arrivalnode)
2) х * (arrivaltime (узел I) + тревелсимки) &ЛТ;= arrivaltime (узлу J)
3) инициализируйте переменную arrivaltime для каждого грузовика равным 0. (в начале моделирования)
4)спрос на каждый узел прибытия должен быть равен сумме (выбранных дуг * вместимости грузовика)
Огромное спасибо.
Что я уже пробовал:
Я попытался реализовать код, показанный выше, в CPLEX, но, как уже было сказано, у меня есть некоторые сомнения, и мне нужно решить показанные ошибки.