Имя: Пароль:
IT
 
Проектирование: Задача по оптимальной упаковке в контейнер на практике. Шаг 1 - определение
0 DGorgoN
 
29.08.07
10:35
Основные параметры задачи:
Есть некое количество объектов со следующими свойствами:
1)Форма объекта (Параллелепипед, рулон, конус, шар и т.п.).
2)Размеры объекта (Длинна ребер объекта, к примеру для параллелепипед это высота, ширина и длина).
3)Вес объекта.
4)Прочность объекта.
5)Возможные варианты положения объекта (Пример: рулон не может быть поставлен на свое основание, но может быть положен. Конус может быть поставлен только на свое основание)
6)Важность загрузки (при плотной упаковке определяется стоимость, к примеру есть большая кабина и её желательно загрузить в первую очередь, нежели кучу болтов)

Объекты должны быть уложены в минимальное количество контейнеров с параметрами:
1)Размеры контейнера (Предполагается что контейнеры изначально имеют форму параллелепипеда).
2)Варианты загрузки в контейнер (Различное расположение дверей накладывают свое ограничение, так-же есть понятие разгрузки в нескольких точках)

Это пока теория. буду думать что получиться на практике. Пока самый надежный, но не в коем случае не оптимальный, вариант решения – перебор. Однако с помощью вычислительных методов: эвристика, ген. алгоритмы, оптимизация перебора и т.п. возможен поиск результата за сравнительно короткое время с приличным качеством.

Задача состоит в нахождении оптимального решения по укладке объектов в контейнеры или хотя-бы упрощение решения данной задачи.

Прошу добавить если чего пропустил.
1 DGorgoN
 
29.08.07
10:36
Совсем забыл про равномерную загрузку в контейнере..
2 DGorgoN
 
29.08.07
10:38
3 masky
 
29.08.07
10:40
пипетц. ты хоть книжки то открывал?
4 DGorgoN
 
29.08.07
10:40
(3) Ты о чем? намек не понятен..
5 masky
 
29.08.07
10:42
о том что эту задачу уже много веков как решили
http://ru.wikipedia.org/wiki/Задача_о_рюкзаке
6 masky
 
29.08.07
10:43
7 DGorgoN
 
29.08.07
10:47
(5), (6) Какой по вашему мнению программный продукт необходимо было бы выпустить

Вот тут вот указывается что программного продукта, совместимого с 1с под условия в (0) и (1) - нету..
Итого решение для 1с нет - значит нужно его выпустить.

Из ссылок, что ты привел:
Задача об упаковке в контейнеры:
"В теории сложности вычислений или Теории комплексности задача об упаковке в контейнеры — NP-трудная комбинаторная задача"

"Так как задача является NP-трудной зачастую используют алгоритмы с эвристическим и метаэвристическим методом решения для получения оптимальных результатов. Так же активно используются методы искусственного интеллекта как например нейронные сети."

Внимательно прочитай Википедию. В ней сказано что это не такая уж и простая задача. Интересует именно оптимальный алгоритм, заточенный под специфику рынка!!!
8 DGorgoN
 
29.08.07
10:57
Вообще задача сводиться к написанию исскуственного интеллекта для ПК. Если честно..
9 Feanor
 
29.08.07
11:01
Мдя... Товарищ в (5) и (6) немного погорячилсо.
(0) А не много параметров учитываешь?
10 DGorgoN
 
29.08.07
11:05
(9) От малого к великому:

Сначала будут параллелепипеды с единственным положением, разным весом, прочностью и все типы контейнеров. Для начала думается хватит хотя бы и этого..
11 DGorgoN
 
29.08.07
11:07
(9) Я тоже вот думаю, что погорячился, но раз кто-то сделал, то можно и мне. Хотя бы минимум :)
12 Feanor
 
29.08.07
11:13
(10) Правильно, однако имей ввиду, что добавление сложность перебора растет экспоненциально от числа параметров. То есть добавишь один параметр - и твой метод может стать неэффективным. Лучше сразу все учитывать с этой позиции :)
13 France
 
29.08.07
11:20
решать простым перебором нельзя.
14 MMF
 
29.08.07
11:29
ИМХО, на 1С приемлемого решения не сделаешь. Даже двумерная упаковка для нее слишком тяжела.
PS постоянные вопли в ответ на замечания о медлительности интерпретатора 1С - "для учетной системы не нужно быстродействие", таки нужно иногда
15 Feanor
 
29.08.07
11:33
(14) Для хорошего алгоритма быстродействие - не принципиально. Тока придумать такой алгоритм - не два палца об асфальт
16 DGorgoN
 
29.08.07
11:34
(12)

Дай хоть силы проверить - может даже и это не смогу (а вдруг), к тому же уже будет опыт и написаны классы для решения простых участков задачи

(13) Ну это да, хотя простой перебор тоже может быть учтен. Простой перебор может быть оптимизирован ;) Иногда даже до приемлемости по скорости и качеству решений..

(14) Буду на .Net ваять.. Сначала отдельную прогу. Если успехов добьюсь, то и ВК сваяю..
17 MMF
 
29.08.07
11:37
(16) перебором? ну-ну
18 Херрес
 
29.08.07
11:38
объясните мне как человеку далёкому от этих вещей - как перебирать варианты, если они не дискретны.
Например одну коробку сверху другой можно положить бесконечным количеством вариантов, сдвигая по миллиметру
19 Херрес
 
29.08.07
11:40
значит наверно надо предполагать, что каждый новый устанавливаемый груз по вертикали имеет естественнно фиксированную координату, а по горизонтали степени свободы надо попытаться ограничить ? Задвигая груз по направлению от загрузочной стороны и прижимая... влево ? вправо ?
20 DGorgoN
 
29.08.07
11:40
(17) Допустим есть функция, нужно найти её экстремум на заданном промежутке. Что-бы этот экстремум найти можно воспользоваться простым перебором с шагом, а можно просто каждый раз делить отрезок поплам (или на 3 части) и отсекать ненужные. Далее с указанной точностью можно найти оптимальный вариант решения.

Это перебор, просто оптимизированный.. как метод называется - не помню, давно уже ВМ сдавал :)
21 DGorgoN
 
29.08.07
11:41
(18) Сделать эти варианты дискретными
22 France
 
29.08.07
11:42
(18) дискретность сдвига можно задать, чтоб количество переборов не было неограниченным...
например, задать дискретность в зависимости от площади основания..
но в любом случае - простой перебор не даст решения.
23 BabySG
 
29.08.07
11:43
(0) Обычно проблема состоит не в том, как запихать, а как запихать так, что бы последовательно выгружать. Т.е. берем 40 кубов и нам нужно заполнить товаром таким  образом, что бы учитывать, что первым на разгрузку пойдет этот товар, потом этот, потом этот. Сложность то вот в чем...

PS. К примеру вагон идет через 5 городов, выгрузка через один проем, разгрузка во всех городах своя, но в определенной последовательности.
24 DGorgoN
 
29.08.07
11:48
(22) перебор даст - просто к моменту решения уже ничего не будет нужно ;) :)

(23) Это в условии есть..
25 Херрес
 
29.08.07
11:50
предлагаю способ задать дискретность: не координатно а правилом:
Положим мы укладываем товар слой за слоем, от дальнего борта слева на право
тогда перебор станет тривиален

единственое только... а что значит "слой за слоем"
Если скажем у нас ящики одной высоты - всё ясно
а если высоты X, X*1.5, X*2 - это какой слой, первый или второй ?  И не помешает ли ящик X*2 укладывать следующий слой за ним ?
26 DGorgoN
 
29.08.07
11:52
(25) сортировать по высоте пойдет? Сначала более высокие, потом более низкие..
27 MMF
 
29.08.07
11:56
(21) прежде чем написать неездящий велосипед с квадратными колесами необходимо исследовать литературу (хотя бесплатных алгоритмов ты не найдешь, разве что в бумажных библиотеках), почесать репу, потом пойти в бригаду опытных погрузчиков поработать и понять, что ни одна программа не учтет всех нюансов - "этот диван дохлый, его надо наверх; а эти два ящика надо первыми достать, а на эту фиговину нельзя нагружать сверху больше 100 кг, а вот этот ящик должен лежать только этой стороной вверх, иначе побъется содержимое и т.д."
28 Херрес
 
29.08.07
12:01
(26) а не приведёт ли это к заведомо неоптимальному решению ?
И кстати: один и тот же длинный ящик может быть и высоким и низким, так ведь ?
т.е. перебор будет заключаться ещё и в пространственном развороте
29 DGorgoN
 
29.08.07
12:03
(28) Есть такое..
(27) Поэтому в (0) указаны многие максимальные параметры..
30 Херрес
 
29.08.07
12:05
(27) ну вообще-то прога которую тут приводили - это всё делает
31 France
 
29.08.07
12:05
(24) "Цель, растянутая в бесконечность, бессмысленна" (с) вроде бы А.Азимов
(25) к "тривиальному" перебору - вот, тривиальным перебором уложили все, а вот последнее, мля, не умещается.. и чо делаем? опять тривиальный перебор, и опять последнее не уместилось.. а теперь считаем полное количество "тривиальных переборов", охреневаем от количества, и сматываем удочки с форума)))
32 Херрес
 
29.08.07
12:16
(31) ну вообще-то полный перебор не требуется, все эти задачи о рюкзаках имеют оптимальное решение, колеблющееся около варианта "сначала кладём самые большие помидоры"

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

хотя тут же возникает вопрос: а какой груз больше - тонкий и длинный или толстый и короткий ? :))
33 DGorgoN
 
29.08.07
12:34
короче меньше слов - больше дела..
34 Feanor
 
29.08.07
12:35
(32) Что то как то не очевидно...
35 Wehrmacht
 
29.08.07
12:47
Мало того, что груз можно сдвигать на бесконечно малые величины... его ж еще можно и вращать в любых плоскостях... даже параллепипед можно на ребро там поставить, или вообще на вершину :) Еще некоторые можно деформировать... например подушку, если в нормально состоянии не влазит, можно и «заархивировать» :)
36 avkend
 
29.08.07
13:19
чувствую скоро все это потянет на какую нить как минимум математическую премию
37 DGorgoN
 
29.08.07
13:26
(36) Даешь нобелевскую премию участникам Мисты!!!
38 Wehrmacht
 
29.08.07
13:48
(36) Чувствую, что ничего не получится :)
39 Михаил Козлов
 
29.08.07
14:55
(5) и (6) к этой задаче отношения не имеют - никакой это не рюкзак и в википендии пишут неаккуратно. А нейронные сети - чистая спекуляция.
Не пытайтесь задачу решать алгоритмически - ничего не получится. Даже перебора не сделаете.
40 Молния
 
29.08.07
19:46
помоему для каждого груза придется описывать набор критериев. Как он правильно лежит.
И после каждого изменения положения проверять для каждого из грузов все критерии. Так же можно будет описать куда и как может перемещаться груз.
При этом еще до погрузки придется сортировать груз на очередность загрузки и начинать с самых важных. При этом полюбому нужно будет в итоге выдавать несколько вариантов которые оптимальны по разным критериям и уже потом выбирать самый оптимальный.
41 Молния
 
29.08.07
19:50
А еще может получать такая глупость типа - везти груз надо по 4 точкам, но програма загрузила в машину только груз для первой точки, потому что так больше всего влезло. В итоге на 3 остальных точки машина едет пустая.
42 Молния
 
29.08.07
19:52
Помоему алгоритмически решить можно. Но для ограниченного количества заранее запланированых ситуаций.
А ситуацию типа - тут "горит" объект и надо срочняк забить на все и везти туда бетон врядли получится предусмотреть.
43 DGorgoN
 
24.09.07
09:53
Полунедобэтта - http://transportlogistik.narod.ru/

Очень сырая и т.п. - но можно уже поюзать - посмотреть что и как там. Пояснение - открываеться журнал документов. Кликаем по 1-му документу, в документе есть кнопка "Расчитать". Откроется окно расчета, там кнопка "Поместить". Топаем по кнопке до полной загрузке. 3Д вьювер можно покрутить - колесиком изменяться масштаб..

В данный момент только позволяет загрузить кубики.

Алгоритм неоптимален - буду делать..
44 DGorgoN
 
24.09.07
09:54
zcxvb, выйди на связь!!!
45 DGorgoN
 
24.09.07
10:21
up