Как оптимизировать выбор прямоугольной рамки - PHP - PullRequest
0 голосов
/ 28 сентября 2018

Расчет коробок / Объем / Размер Мне нужно поместить m коробок n разных размеров в другую прямоугольную коробку!

Как рассчитать, чтобы получить наименьшую коробку (с минимально возможным объемом)) на основе m коробок n разных размеров?

Я знаю размеры коробок м, а также знаю, сколько их.Имейте в виду, что, например:

два поля с 3 x 3 x 3

только лучше организованы в поле 6 x 3 x 3

, и формула работает хорошо:

sum of the smallest measure X the largest measure X the other major measure

Другой пример - два поля:

4 X 5 X 7

6 X 8 X 2

сумма наименьшей меры = (4 + 2) X (8) X (7)

Однако, когда у нас есть, например, 10 полей, это вообще не работает!Как организовать и каков объем наименьшего возможного ящика на основе размеров ящиков, которые у меня есть?

Я не знаю, можно ли ответить на этот вопрос только с помощью основных инструментов (я пробовал через оптимизацию (Производная) а я не смог)

Мне нужно сделать расчет через PHP из почтовых ящиков!И я не могу решить эту проблему математически до преобразования в код

У меня нет проблем с PHP-кодом, у меня проблемы с Math, я не знаю, как решить эту проблему наилучшим возможным способом!

Я использовал приведенный ниже код, но, как объяснено, он не будет работать для многих ящиков, только для 2 или 3.

$length = 0;
$height = 0;
$width = 0;

foreach ($products as $key => $product) {
    for ($quantity = 0; $quantity < $product['quantity']; $quantity ++) { 
        $length = $length + (float) $product['dimension'][0];
    }

    if($product['dimension'][1] > $height) {
        $height = (float) $product['dimension'][1];
    }

    if($product['dimension'][2] > $width) {
        $width = (float) $product['dimension'][2];
    }
}

$box = ($length . ' x '. $height . ' x '. $width);
...