Задача оптимизации

У меня проблема с функцией оптимизации для генерации документа TAX FREE.

Я добавляю позиции заказа с помощью: имени, цены, веса и числа (количество).

Подобно:

product = array();
product[0] = array('name'=>'product_a','price'=>32.00,'weight'=>5.23,'numbers'=>100);
product[1] = array('name'=>'product_b','price'=>22.00,'weight'=>2.23,'numbers'=>140);
product[2] = array('name'=>'product_c','price'=>12.10,'weight'=>3.03,'numbers'=>150);
product[3] = array('name'=>'product_d','price'=>5.12,'weight'=>4.03,'numbers'=>10);
product[4] = array('name'=>'product_e','price'=>52.22,'weight'=>5.13,'numbers'=>22);

Нет, с этих позиций мне нужно сгенерировать самый маленький документ TAX FREE. В одном документе у меня может быть сумма весов максимум 50 и сумма цен 2000 (цена указана за один элемент. Если у меня число 100, результат равен 100 * цена).

Поэтому мне нужно взорвать позицию и сгенерировать новый документ с наименьшим количеством.
Когда я использую только 10 элементов (все 100), я должен добавить 90 элементов в следующие документы.

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

0

Решение

Сначала разделите цены с соответствующими весами.

Затем отсортируйте их в порядке убывания.

Выберите наибольшее значение и сохраните соответствующие значения цены и веса в различных переменных.

Выберите второе по величине значение и добавьте соответствующую цену и вес к переменным, объявленным в предыдущем пункте.

Повторяйте шаг 4 до тех пор, пока цена не станет> = 2000 ИЛИ вес> = 50.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]