CPLEX (+Java): использовать все пользовательские вызовы, но не обязательно все целочисленные

У меня есть следующая проблема: Используя CPLEX, я решаю TSP-подобную структуру. Очевидно, я использую ветвление и границу над линейной релаксацией. Для исключения подуровня я впоследствии добавляю ограничения. Для меня не важно найти наилучшее из возможных решений, но решение S, которое доказуемо лучше, чем другое решение S'. Таким образом, S должен выполнить исключение subtour, но мне не нужно, чтобы все (целочисленные) переменные были целочисленными. (Я выполняю эту операцию несколько раз, в конце у меня будет полностью целочисленное решение, но на предыдущих итерациях достаточно, чтобы исключение было выполнено, а все переменные a, но не x, были целыми числами). У меня все еще есть проблемы, чтобы сформулировать правильный Stackru или запрос Google, я надеюсь, что кто-то здесь понимает, что я имею в виду, и может указать мне правильное направление. Спасибо:)

Улучшенный пример: я смотрю на проблему конкурентного прибыльного тура, то есть вершины в графе связаны с доходами. Тем не менее, доход зависит от того, посещает ли конкурент также те же местоположения (тогда, доход распределяется поровну). Я (оптимально) рассчитал стратегию Si против стратегии Sj моего конкурента, но теперь мой конкурент меняет свою стратегию на S'j. Я легко могу рассчитать прибыль Si против S'j, но я не могу гарантировать, что никакая другая стратегия не лучше. Таким образом, я хочу прекратить ветвление и привязку, как только я найду стратегию S'i, которая имеет более высокий доход, чем Si (потенциально без фиксации всех переменных маршрутизации).

0 ответов

Другие вопросы по тегам