Как использовать программирование ограничений для оптимизации корзин покупок?
У меня есть список предметов, которые я хочу купить. Товары предлагаются в разных магазинах и по разным ценам. В магазинах есть индивидуальные расходы по доставке. Я ищу оптимальную стратегию покупок (и java-библиотеку, поддерживающую ее), чтобы купить все предметы с минимальной общей стоимостью.
Пример:Item1 предлагается в Shop1 за 100 долларов, в Shop2 за 111 долларов.Item2 предлагается в Shop1 за 90 долларов, в Shop2 за 85 долларов.Стоимость доставки Shop1: 10 долларов, если общий заказ <150 долларов; 0 долларов в противном случаеСтоимость доставки Shop2: 5 долларов США, если общая сумма заказа <50 долларов США; 0 долларов в противном случаеЕсли я куплю Item1 и Item2 в Shop1, общая стоимость составит $ 100 + $ 90 + $ 0 = $ 190.Если я куплю Item1 и Item2 в Shop2, общая стоимость составит $ 111 + $ 85 + $ 0 = $ 196.Если я куплю Item1 в Shop1 и Item2 в Shop2, общая стоимость составит $ 100 + $ 10 + $ 85 + $ 0 = 195.Я получу минимальную цену, если закажу Item1 и Item2 в Shop1: 190 долларов
Что я пробовал до сих порЯ спросилДругой вопрос до этого привел меня в область программирования ограничений. Я посмотрел накрем а такжешоколадно, но я не понял, как создать модель для решения моей проблемы.
| shop1 | shop2 | shop3 | ...
-----------------------------------------
item1 | p11 | p12 | p13 |
item2 | p21 | p22 | p23 |
. | | | |
. | | | |
-----------------------------------------
shipping | s1 | s2 | s3 |
limit | l1 | l2 | l3 |
-----------------------------------------
total | t1 | t2 | t3 |
-----------------------------------------
Моя идея состояла в том, чтобы определить эти ограничения:
каждая цена "рху«определяется в домене (0, с), гдеc это цена товара в этом магазинетолько одна цена в строке должна быть ненулевойесли один или несколько предметов куплены в одном магазине, а сумма цен ниже предела, то добавьте стоимость доставки к общей стоимостиОбщая стоимость магазина - это сумма цен на все товары в магазине.общая стоимость - сумма всех сумм магазинаЦелью является «общая стоимость». Я хочу минимизировать это.
В креме я не смог выразить ограничение «если тогда» для условных транспортных расходов.
В choco эти ограничения существуют, но даже для 5 предметов и 10 магазинов программа работала в течение 10 минут, не найдя решения.
ВопросКак я должен выразить свои ограничения, чтобы сделать эту проблему разрешимой для решателя программирования ограничений?