Я занимаюсь оптимизацией в лесном хозяйстве, где набор компаний C может вычесть несколько пиломатериалов из некоторого ассортимента A из набора урожая I. Параметр x [I, J, V, T, C, A] представляет собой поток из зоны сбора I в лесопилку J, использующую транспортное средство V в момент времени T для компании C с ассортиментом A.Нужно переделать, чтобы избежать infeasiblity
У меня есть проблема в том, что каждая лесопилка должна соответствовать минимальная потребность, d_minus. Это делается в:
# The total flow into a node at time period t must exceed the minimum demand.
subject to Constraint2 {j in J, t in T, p in T, c in C, a in A: p <> t}:
sum{v in V, i in I} x[i,j,v,p,c,a] >= d_minus[j,t,c,a];
Проблема состоит в том, что транспортные средства V имеют удельную емкость, смоделированный в:
# The flow must not exceed the total capacity for each vehicle and time period
subject to Constraint6 {v in V, t in T}:
sum{i in I, j in J, c in C, a in A} x[i,j,v,t,c,a] <= capacity[v];
Это заставляет компилятор однако жаловаться над невозможные рамки на constraint2. Например
presolve: constraint Constraint2[1,1,6,1,3] cannot hold:
body >= 1000 cannot be <= 273; difference = 727
Im, используя 4 транспортных средств и емкость 40 для каждого транспортного средства (я попытался с помощью 400 и 1000, а также, но осталась ошибка). Параметр d_minus находится между 500 и 1000.
Im думает, что параметры не должны быть слишком узкими. Используя мощность 1000, они должны соответствовать потребностям с автопарком из 3, которые я хотел бы получить. Я склонен, что ограничения «для всех» - это то, что ограничивает решение, вызывая ошибку. Я попытался использовать «для всех t в T, j в J» для Constraint2, но тогда он не может найти эти индексы для d_minus. У кого-нибудь есть ключ?
С уважением
Спасибо за ваш ответ! Я использую сервер NEOS, и добавление этой команды в файл .run ничего не печатало. Пробовал Google, как использовать solexpand с NEOS, но я ничего не нашел. Вы знаете какой-либо способ отслеживания ошибок с помощью NEOS? – Cenderze
Теперь он работал с помощью solexpand! Спасибо за это, не знал об этом. Спасибо за ваш ответ! Я пробовал использовать solexpand, который дал мне выход, отредактированный в моем исходном сообщении. Я изменил ограничение d_minus, чтобы стать 1 для всех комбинаций. Это дало мне решение, что все переменные x должны быть 0. Знаете ли вы, как это могло бы быть? – Cenderze
Я решил эту проблему сейчас благодаря вашему вводу. Разумеется, принят и подтвержден ваш ответ. Еще раз спасибо! – Cenderze