2015-04-01 2 views
0

У меня есть проблема с функцией оптимизации для создания документа НАЛОГ БЕСПЛАТНО.Задача оптимизации

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

Как:

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

Вы можете поделиться с вами тем, что вы попробовали? –

+0

Я пробовал sord индивидуальное положение (когда у меня есть числа 20 Я меняю его как 20 позиций с ценой, весом) Далее я сортирую эти данные по весу и цене. Затем я стараюсь принимать самые высокие значения и дополнять меньшие. – marczak

+0

Ваши объяснения не очень понятны. Вы пытаетесь сделать пакеты, где пакет 'weight <= 50' и' price <= 2000'? Каковы позиции заказа? Вам нужно следить за порядком или вы можете создавать пакеты случайно, чтобы иметь самый эффективный пакет с продуктами? –

ответ

0

Первый разделить цены с соответствующими весами.

Тогда отсортируйте их по убыванию.

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

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

Повторите шаг 4 до цены = = 2000 или вес> = 50.

Смежные вопросы