ILP может быть использован для решения по существу любой проблемы, связанной с принятием множества решений, каждое из которых имеет только несколько возможных результатов, известных заранее, и в которых общее «качество» любогоКомбинация вариантов может быть описана с использованием функции, которая не зависит от «взаимодействий» между вариантами.Чтобы увидеть, как это работает, проще всего ограничиться переменными, которые могут быть только 0 или 1 (наименьший полезный диапазон целых чисел).Теперь:
- Каждое решение, требующее ответа да / нет, становится переменной
- Целевая функция должна описывать то, что мы хотим максимизировать (или минимизировать), как взвешенную комбинацию этих переменных
- Вам необходимо найти способ выражения каждого ограничения (комбинации вариантов, которые нельзя сделать одновременно), используя одно или несколько ограничений линейного равенства или неравенства
Пример
Например, предположим, что у вас есть 3 рабочих, Энн, Билл и Карл, и 3 рабочих места, «Чистка», «Печать» и «Упаковка».Все люди могут выполнять все работы, но у каждого из них разные уровни эффективности / способностей на каждой работе, поэтому мы хотим найти лучшую задачу для каждого из них, чтобы максимизировать общую эффективность.Мы хотим, чтобы каждый человек выполнял ровно 1 задание.
Переменные
Один из способов решения этой проблемы - 9 переменных, по одной на каждую комбинацию работника и задания.Переменная x_ad получит значение 1, если Anne должна Dust в оптимальном решении, и 0 в противном случае;x_bp получит значение 1, если Билл должен упаковать оптимальное решение, и 0 в противном случае;и т. д.
Целевая функция
Следующее, что нужно сделать, это сформулировать целевую функцию, которую мы хотим максимизировать или минимизировать.Предположим, что, основываясь на самых последних оценках производительности Анны, Билла и Карла, у нас есть таблица из 9 чисел, показывающая, сколько минут требуется каждому из них для выполнения каждого из 3 заданий.В этом случае имеет смысл взять сумму всех 9 переменных, каждая из которых умножена на время, необходимое этому конкретному работнику для выполнения этой конкретной работы, и попытаться минимизировать эту сумму, то есть минимизировать общее время, необходимое дляВыполняйте всю работу.
Ограничения
Последний шаг - это предоставление ограничений, обеспечивающих, что (а) каждый выполняет ровно 1 задание и (б) каждую работу выполняет ровно 1 человек.(Обратите внимание, что на самом деле эти шаги могут быть выполнены в любом порядке.)
Чтобы убедиться, что Анна выполняет ровно 1 задание, мы можем добавить ограничение: x_ad + x_at + x_ap = 1. Аналогичные ограничения можно добавить дляБилл и Карл.
Чтобы убедиться, что ровно 1 человек пылится, мы можем добавить ограничение, которое x_ad + x_bd + x_cd = 1. Аналогичные ограничения могут быть добавлены для набора текста и упаковки.
В целомЕсть 6 ограничений.Теперь вы можете поставить эту задачу с 9 переменными и 6 ограничениями для решателя ILP, и она выплюнет значения переменных в одном из оптимальных решений - ровно 3 из них будут равны 1, а остальные - 0.3, которые равны 1, говорят вам, какие люди должны выполнять какую работу!
ILP является общим
Как это происходит, эта конкретная проблема имеет специальную структуру , которая позволяет ейбыть решена более эффективно, используя другой алгоритм.Преимущество использования ILP состоит в том, что вариации проблемы могут быть легко включены: например, если на самом деле было 4 человека и только 3 рабочих места, тогда нам нужно было бы ослабить ограничения, чтобы каждый человек делал максимум 1 работа, а не ровно 1 работа.Это можно выразить, просто изменив знак равенства в каждом из первых 3-х ограничений на знак «меньше или равно».