2012-03-29 3 views
2

Когда я смотрю на проблемы оптимизации, я вижу много вариантов. Один из них - линейное программирование. Я понимаю в абстрактных терминах, как работает LP, но мне трудно понять, подходит ли конкретная проблема для LP или нет. Существуют ли какие-либо эвристики, которые могут помочь в решении этого решения?Как я могу решить, когда использовать линейное программирование?

Например, работа, описанная в Is there a good way to do this type of mining?, заняла несколько недель, прежде чем я увидел, как правильно структурировать проблему. Возможно ли «заранее» знать, что эта проблема может быть решена ЛП, не видя сначала «как ее обозначить»?

Есть ли контрольный список, который я могу использовать, чтобы решить, подходит ли проблема для LP? Есть ли стандартная (читаемая) ссылка для этой темы?

ответ

6

Эвристика (и/или контрольные списки), чтобы решить, действительно ли проблема - это линейная программа.

Вот моя попытка ответить, и я также попытался описать, как я подхожу к этой проблеме.

Вопросы, которые указывают, что данная проблема является подходящей для формулировалась как LP/IP:

  1. Существуют ли решения, которые необходимо принимать регулярно, через разные промежутки времени?
  2. Есть ли количество ресурсов (работников, машин, транспортных средств), которым необходимо назначать задания? (часы, вакансии, места назначения)
  3. Является ли это проблемой маршрутизации, где нужно посещать разные «точки»?
  4. Является ли это проблемой местоположения или «макета»? (Целый класс проблем с отсечением приходится на эту группу)

Ответ на этот вопрос означает, что формулировка LP может работать.

Обычно встречающиеся LP включают: Распределение ресурсов: (Назначение, Транспортировка, Транспортировка, Рюкзак), Распределение портфеля, Планирование задания и проблемы с сетевым потоком. Here's a good list of LP Applications для всех, кто знаком с LP или IP-адресами. Тем не менее, существует буквально 1000 различных проблем, которые могут быть сформулированы как LP/IP. Люди, с которыми я работал (исследователи, коллеги), развивают интуицию. Они хорошо понимают, что проблема - это определенный тип целочисленной программы, даже если они не помнят детали, которые они могут искать.

Почему этот вопрос сложно ответить: Есть много причин, почему это не всегда просто, чтобы знать, если препарат LP будет резать.

  1. В подходе к моделированию/формулировке существует много «искусства» (субъективности).
  2. Опыт помогает. Люди хорошо понимают, что эта проблема может быть «сравнена» с другой известной формулировкой.
  3. Даже если проблема не является прямым LP, существует множество умных методов ведущий-ведомый (подсуммы) или методы вложенности, которые делают общую работу по составлению.
  4. . Похоже, что несколько целей могут быть объединены в одну целевую функцию с соответствующим набором весов.
  5. Опытные моделисты используют разложение и Ограничитель-релаксация техники и более поздняя компенсация за это.

Как действовать, чтобы получить основную формулировку?

Следующее всегда направило меня в правильном направлении. Обычно я начинаю с перечисления переменных принятия решений, ограничений и объектной функции. Затем я обычно повторяю эти три, чтобы убедиться, что все «подходит».

Так что, если у вас есть проблемы под рукой, спросите себя:

  • Какие переменные решения (DV)? Я нахожу, что это всегда хорошее место, чтобы начать процесс формулировки. Количество типов от DV's есть? (Какой ресурс получает какую задачу и когда она должна начинаться?)
  • Каковы ограничения?
    Некоторые ограничения очень легко видны. Другие немного поддразнивают. Ограничения должны быть записаны с точки зрения ваших переменных принятия решений и любых установленных констант/ограничений.
  • Что такое объектная функция?
    Какие количества необходимо максимизировать или минимизировать? Примечание. Иногда неясно, что такое объектная функция. Это нормально, потому что это вполне может быть проблемой с удовлетворением проблемы.

Несколько быстрых Sanity Проверка как только вы думаете, что ваша формулировка LP сделано:

  1. Я всегда стараюсь, чтобы увидеть, если тривиальное решение (все 0s или все большие числа) не является частью множества решений. Если да, то формулировка , скорее всего, неверна. Некоторое ограничение - .
  2. Убедитесь, что каждое ограничение связано с переменными решений. (Я иногда найти ограничения, которые просто «висит там.» Это означает, что «бухучет ограничение» было пропущено.)

В моем опыте, люди, которые держат в нем почти всегда развиваться нужна интуиция. Надеюсь это поможет.