У меня проблема с функцией оптимизации для генерации документа 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 элементов в следующие документы.
Может ли кто-нибудь помочь мне с этим? Какой алгоритм я должен использовать? Может кто-то сказал мне шаг за шагом, как это сделать?
Сначала разделите цены с соответствующими весами.
Затем отсортируйте их в порядке убывания.
Выберите наибольшее значение и сохраните соответствующие значения цены и веса в различных переменных.
Выберите второе по величине значение и добавьте соответствующую цену и вес к переменным, объявленным в предыдущем пункте.
Повторяйте шаг 4 до тех пор, пока цена не станет> = 2000 ИЛИ вес> = 50.
Других решений пока нет …