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

Я не знаю названия, чтобы описать проблему, поэтому я просто собираюсь привести пример и попросить помощи с алгоритмом, который лучше, чем грубая сила, решить.

Есть 6 ведер, каждое разного размера, каждое из которых содержит различный начальный объем. Каждое ведро также имеет ссылку на сумму приза - назовите это деньгами - которая выдается, когда корзина заполнена.

Есть 8 клапанов. Каждый клапан подает различное подмножество ковшей при открытии, и каждый ковш может получать различное количество добавляемого при открытии клапана. Каждый клапан имеет фиксированную стоимость для поворота.

Частичный пример: Ведро 1: 14 из 20 галлонов. Платит $2,00 Ведро 2: 12 из 25 галлонов. Платит $1,50 Ведро 3: 18 из 35 галлонов. Платит $4.00 и т.д...

Клапан 1: стоит $0,50. кладет 2 галлона в 2 и 1 галлон в 3. Клапан 2: стоит $0,40. Ставит 3 галлона в 1 и 5 галлонов в 2 и т.д...

Таким образом, вы платите немного денег, чтобы повернуть клапан, и если вы наполняете ведро, вы выигрываете немного денег.

Цель: Рассчитать наилучший порядок клапанов, чтобы превратить в чистую наибольшую прибыль при заполнении ковшей, если существуют какие-либо прибыльные комбинации.

Когда ведро заполнено, оно сбрасывается до предварительно установленного начального объема (который может отличаться от его текущего объема - ведра сохраняют состояние от поворота клапана к повороту клапана). Теоретически нет ограничений на количество сбросов, так что потенциально можно поворачивать клапаны навсегда.

Очевидное решение здесь - грубая сила. Сбросьте свои переменные в начальное положение, поверните один клапан, проверьте выход, сбросите, перейдите к следующему клапану и т. Д. После того, как все 8 повернуты, начните поворачивать два клапана (11, 12, 13, 14, ... 25, 26, 27, 28). Каждый раз, когда вы находите комбинацию, которая заполняет хотя бы одно ведро, рассчитывайте чистый выигрыш / убыток и сравнивайте его с предыдущими результатами, чтобы определить лучший.

Медленно и сыро. Довольно прямой, но медленный и грубый.

Так:

  1. Как называется этот тип проблемы? а также
  2. Есть ли известный алгоритм, который помогает решить его более эффективно?

Чтобы быть ясным - математические особенности не нуждаются в улучшении - я могу легко рассчитать результат любой последовательности операций с клапанами независимо от незначительных изменений в математике.

Это итерация грубой силы, которую я хочу избежать. Я не хочу делать 8 одиночных операций (v1, v2, v3...), затем 64 двойных операции (v1v1, v1v2, v1v3 и т. Д.), Затем 512 тройных операций (v1v1v1, v1v1v2, v1v1v3), если я можно избежать этого.

0 ответов

Другие вопросы по тегам