Как использовать программирование ограничений для оптимизации корзин покупок?

У меня есть список предметов, которые я хочу купить. Товары предлагаются в разных магазинах и по разным ценам. В магазинах есть индивидуальные расходы по доставке. Я ищу оптимальную стратегию покупок (и 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 минут, не найдя решения.

Вопрос

Как я должен выразить свои ограничения, чтобы сделать эту проблему разрешимой для решателя программирования ограничений?

Ответы на вопрос(2)

Ваш ответ на вопрос