Может ли Excel Solver решить эту оптимизацию в стиле ранца?

662
Hairgami_Master

Я покупаю еду и хочу получить больше калорий за свои деньги.

У меня есть бюджет $ 12,00. Есть 3 группы еды, и мне нужно выбрать 2 блюда из каждой из этих групп. Есть также Десертная группа - мне нужно выбрать один десертный предмет. Это в общей сложности 7 предметов. Вы не можете купить предмет более одного раза.

Итак, вот мои пункты:

ID Food Group Calories Price 1 Banana Fruit (must pick 2 fruits) 160 $.75 2 Apple Fruit (must pick 2 fruits) 120 $.65 3 Orange Fruit (must pick 2 fruits) 160 $1.25 4 Sausage Meat (must pick 2 meats) 260 $3.05 5 Bologna Meat (must pick 2 meats) 230 $1.15 6 Ground Beef Meat (must pick 2 meats) 310 $3.15 7 Salami Meat (must pick 2 meats) 320 $2.73 8 Carrots Veg (must pick 2 vegetables) 70 $1.80 9 Cucumbers Veg (must pick 2 vegetables) 90 $2.10 10 Bell Pepper Veg (must pick 2 vegetables) 110 $1.35 11 Cake Dessert (must pick 1 dessert) 350 $2.28 12 Pie Dessert (must pick 1 dessert) 320 $2.90 13 Ice Cream Dessert (must pick 1 dessert) 380 $1.86 

Могу ли я решить эту проблему в Excel с помощью надстройки Solver? Не могли бы вы указать мне правильное направление?

1

1 ответ на вопрос

1
LDC3

К сожалению нет. Excel может изменять только один элемент за раз, и вам нужно изменить как минимум 4 переменные.

Но, с другой стороны, вам не нужен решатель, чтобы получить лучшее расположение. Сначала вы рассчитываете стоимость одной калории. Выберите 2 младших (или 1) элемента из каждой группы. Вы сделали

Это была моя первоначальная реакция, но это не обязательно так. Самая низкая цена за калорию может использовать предметы, которые в совокупности превышают предел в 12 долларов. Это, вероятно, плохой пример, используемый для иллюстрации проблемы. В общем случае, более высокое количество калорий в пищевой группе может иметь более высокую стоимость. Чтобы остаться в рамках бюджета, может потребоваться выбор продуктов с меньшим количеством калорий или более высокой ценой за калорию, но с меньшей стоимостью товара. fixer1234 9 лет назад 0
@ fixer1234 Используя вышеупомянутый метод, я получаю 1410 калорий за 10,59 $. Так как это оставляет мне 1,41 доллара, я могу включить другой предмет или поменять товар. Поскольку переключение предметов даст мне меньше калорий за более высокую стоимость, было бы лучше добавить еще один предмет. Кроме того, некоторые цены основаны на спросе и предложении. Стейк Чака может стоить 4,99 долл. США / фунт, но стейк филе - почти 15,99 долл. США / фунт, но у них почти одинаковые калории. LDC3 9 лет назад 0
В приведенном примере вы правы. Я предположил, что это был выдуманный пример, чтобы проиллюстрировать проблему, а ценности не были продуманы. С реальными данными возможны противоречивые решения. Например, в Болонье возможна продажа в большом экономичном пакете с хорошей ценой / фунт. Это может привести к самой низкой стоимости / калорийности, но цена товара может быть слишком высокой. Точно так же, лучший выбор для трех групп продуктов питания может дать вам достаточно денег на последний продукт с низкой стоимостью, но высокой стоимостью / калорией. В общем случае, я думаю, что это может понадобиться VBA для итерации решения. fixer1234 9 лет назад 0
Спасибо, ребята. Думаю, мне придется использовать MatLAB для решения подобных проблем. Я не уточнил, что пытаюсь максимизировать свои расходы - дополнительное ограничение, которое, похоже, будет иметь значение. Hairgami_Master 9 лет назад 0

Похожие вопросы