У меня есть сценарий, в котором мне нужна помощь в формулировании вопроса, чтобы я мог правильно реализовать метод оптимизации. Я надеюсь, что кто-то может немного помочь мне, это кажется таким простым на первый взгляд, но мне трудно понять, как правильно кодировать переменные, ограничения и т. Д.
Сценарий такой:
- В мусорные ведра / рюкзаки нужно поместить несколько предметов.
- У каждого предмета есть два фактора, которые необходимо учитывать при упаковке.
- У меня есть несколько типов мусорных баков / рюкзаков, которые можно использовать для упаковки
- Запас урн / ранцев бесконечен.
- У каждого бункера / рюкзака есть ограничения на каждое из значений из предметов, так что значения предметов складываются кумулятивным образом, но не могут превышать любое ограничение для бункера / рюкзака.
- У каждого бункера / рюкзака своя стоимость (цена) за его использование.
- Существует верхний предел количества предметов, которые могут поместиться в мусорное ведро / рюкзак, независимо от того, какие предметы в нем находятся.
Пример:
Вектор элементов с двумя значениями каждый:
Элементы = [[7,6], [14,2], [27,23], [5,15]]
Вектор корзин / рюкзаков с первым значением, являющимся верхним пределом, который он может принимать для первых значений элемента. Второе значение то же самое, но применяется ко второму значению каждого предмета в корзине / рюкзаке. Третье значение - это максимальное количество предметов, которое может вместить корзина / рюкзак. Последнее значение - цена / стоимость корзины / рюкзака.
BinOptions = [[64000,1450,350,22000], [8000,450,64,8000]]
Цель состоит в том, чтобы упаковать все предметы наиболее эффективным образом с наименьшими затратами (исходя из стоимости контейнеров / рюкзаков).
Я рассматривал два способа решения проблемы:
- OR-инструменты с подходом MILP
- ИЛИ-инструменты с ранцевым решателем
Я не обязательно застрял на OR-Tools, это просто то, с чем я играл, и, судя по отчетам, которые я видел, хорошо работает на разных языках. Было бы неплохо иметь возможность смоделировать это, а потом выбрать язык.
Единственная вещь, которая, вероятно, не очевидна, - это то, что количество доступных разновидностей контейнеров меняется. Иногда у меня будет два или три на выбор, иногда намного больше, возможно, до сотни. Количество входящих предметов для упаковки также будет меняться в зависимости от дня.
Если кто-нибудь может дать какое-то руководство по решению этой проблемы, я был бы очень признателен.
Ваше здоровье
Лягушка