|
|
|
Помогите с интересным алгоритмом, пжлст
|
|||
|---|---|---|---|
|
#18+
Добрый день, славный и доблестный народ, программисты! Есть две таблицы. Обе нужны для хранения материалов. У материалов есть свойства: цвет, тип и что самое сложное - форма (или размер?). Нужен алгоритм (или движок?), который сможет по-умному помочь конструктору со сборкой проектов (например деталей). Умность №1 заключается во в чем: для изготовления детали потребуется лист железа размером 2х2 метра квадратной формы. А на складе валяется лист с размером 3х3. Нужно, чтоб программа "обрезала" имеющийся лист на складе (то есть 3х3 - 2х2, вычитание фигур), и запечатлела эти изменения в таблице. Более того, детали же разные, разные формы, поэтому со следующей деталей уже сложнее: она меньше размером и треугольной формы. Умность №2 заключается в следующем: робот ищет подходящий материал в таблице по форме, которую имеют материалы. И прежде всего смотрит те материалы, формы которых уже были изменены ранее. И вот, к примеру, терминатор находит тот тот самый шестигранник, оставшийся с предыдущего раза и примеряет к нему наш треугольник. Видит, что треугольник вмещается и аккуратно с краюшку отрезает квадратную область, из которой потом мастер вырежет треугольник. Умность №3 похожая, только теперь уже с деталью круглой формы. Нюанс №1: терминатор должен всегда отрезать квадратную область независимо от того, какой формы ему нужна деталь. Нюанс №2: терминатор должен всегда отрезать с краюшку имеющегося листа (а не с середины), чтобы можно было потом еще отрезать от этого листа (соблюдать экономичность). Приму любую помощь и совет, пример кода на любом языке, как вам удобно. Мне самое главное - понять принцип, логику. И да: желательно с применением ООП, мне так легче понять будет. Ну это только желательно, а не обязательно ))) Заранее спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2013, 08:10 |
|
||
|
Помогите с интересным алгоритмом, пжлст
|
|||
|---|---|---|---|
|
#18+
Cryptic, Для экономичности нужно отрезать прямоугольник, а не квадрат. Если ослабить условия на экономичность: а) заготовка всегда имеет прямоугольную форму, те терминатор всегда проводит рез только параллельно одной из сторон заготовки и на всю ее длину. то задача сведется только к задаче определения прямоугольника с минимальными линейными размерами, в который можно вписать требуемую деталь. Найти подходящую заготовку в таблице прямоугольников - проблем не представляет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2013, 09:46 |
|
||
|
Помогите с интересным алгоритмом, пжлст
|
|||
|---|---|---|---|
|
#18+
Rivmer, спасибо за идею с всегда прямоугольным отрезом, но ослаблять экономичность недопустимо. А вот то,что экономичней будет отрезать не квадрат, а прямоугольник - это верно, буду иметь ввиду. А как можно хранить изменение формы в бд? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2013, 10:20 |
|
||
|
Помогите с интересным алгоритмом, пжлст
|
|||
|---|---|---|---|
|
#18+
Cryptic, Из перечисленных фигур единственной фигурой, для которой будет выигрыш при отказе от прямоугольной формы заготовки, является треугольник. Если треугольных деталей немного, то на это вполне можно забить, тк выгода от оптимального раскроя врядли превысит расходы на учет и хранение кучи разноформенных заготовок. И вообще если набор деталей фиксированный, то проще заранее рассчитать оптимальный раскрой каждого вида заготовок и не париться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2013, 11:23 |
|
||
|
Помогите с интересным алгоритмом, пжлст
|
|||
|---|---|---|---|
|
#18+
Cryptic, любая форма, в том числе трехмерная, имеет описание в виде системы уравнений то, что одна форма может быть включена в другую - тоже отношение между системами уравнений ЗЫ Из всех, которые включают, выбираем ту, с которой минимальная разница по площади (объему) Также, если сразу много фигур надо вырезать - тоже системы уравнений. Хитрость тогда - умнее строить приближенные решения. ЗЫ В этом вроде и соревнуются метода (построения алгоритмы) оптимального раскроя. Это можно назвать алгебраических подход. И как думается дальше - если все кривые приближать многочленами, то в БД будут храниться коэффициенты многочленов, сгруппированные в системы уравнений. ... ну и пошло поехало до товарного вида ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2013, 19:43 |
|
||
|
Помогите с интересным алгоритмом, пжлст
|
|||
|---|---|---|---|
|
#18+
Cryptic, В качестве алгоритма предлагаю наполнять рюкзак Да и незабудьте хранить место где временно положили обрезки. А то поиск по складу обойдется в бесконечность раз дороже, чем расчет по базе. А также наклейку и сканировку штрихкодов. Если дядя Вася с похмелья переставит детали местами во время технического обслуживания робота. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2013, 02:18 |
|
||
|
Помогите с интересным алгоритмом, пжлст
|
|||
|---|---|---|---|
|
#18+
ДохтаР, Звучит заманчиво. Только вот я понять никак не могу, как применить эту задачу к моей? У меня задача скорее из области оптимального раскроя, т.е. как найти выгодное место, чтоб отрезать. Или я не въезжаю в тему, что скорее всего так и есть ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2013, 19:57 |
|
||
|
Помогите с интересным алгоритмом, пжлст
|
|||
|---|---|---|---|
|
#18+
Cryptic, у тебя только треугольники круги и прямоугольники? Или есть еще фигуры сложной (невыпуклой) полигональной формы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2013, 20:23 |
|
||
|
Помогите с интересным алгоритмом, пжлст
|
|||
|---|---|---|---|
|
#18+
авторCryptic, у тебя только треугольники круги и прямоугольники? Или есть еще фигуры сложной (невыпуклой) полигональной формы? mayton, у меня форма требуемой вырезки может быть и сложной ненормированной формы (любой, короче, формы). Но вот как мне кажется, нужно хотя бы сделать оптимальный расчет, где и какую отрезать прямоугольную область, чтобы мастер, к примеру мог уже из отрезанного прямоугольника вырезать что-то фигурное, что ему требуется. Конечно, при этом есть процент потери материала, но похоже, лучше этого в реальном производстве еще не придумали. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2013, 08:30 |
|
||
|
Помогите с интересным алгоритмом, пжлст
|
|||
|---|---|---|---|
|
#18+
У меня есть идея. Но прокомментируйте ее адекватность, пжлст, ув. программисты. В таблице хранения материалов хранить двумерный массив булевского типа. Количество его элементов будет совпадать с количеством сантиметров в размерах листов материалов. Например 300x300 см. размер листа ДСП. И пока лист еще ни разу не резали, все элементы его массива будут равны true. Но как только отрезали четвертую часть, та область, которой не стало будет равна false. Тем самым форма, которая будет изменяться - фиксируется в бд. Да кстати, еще и площади можно отнимать и записывать новое значение, чтобы по площади можно было автоматически проверять, имеет ли смысл вообще тот или иной лист кроить. Как считаете, внес я новое слово в эту область? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2013, 08:38 |
|
||
|
Помогите с интересным алгоритмом, пжлст
|
|||
|---|---|---|---|
|
#18+
CrypticУ меня есть идея. Но прокомментируйте ее адекватность, пжлст, ув. программисты. В таблице хранения материалов хранить двумерный массив булевского типа. Количество его элементов будет совпадать с количеством сантиметров в размерах листов материалов. Например 300x300 см. размер листа ДСП. И пока лист еще ни разу не резали, все элементы его массива будут равны true. Но как только отрезали четвертую часть, та область, которой не стало будет равна false. Тем самым форма, которая будет изменяться - фиксируется в бд. Да кстати, еще и площади можно отнимать и записывать новое значение, чтобы по площади можно было автоматически проверять, имеет ли смысл вообще тот или иной лист кроить. Как считаете, внес я новое слово в эту область? :) Нет. Это квантование непрерывного пространства листа на никому не нужные отрезки. У тебя будет погрешность расчётов свободного места. И большое количество мелких лекал нельзя будет разместить на листе. Алгоритм скажет что места не хватает хотя фактически место есть за счёт неиспользуемой "сетки" (это гарантированный зазор 1 см между всеми лекалами). Как следствие - расход материалов процентов на 10-20% и анальные кары разработчика тоесть тебя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2013, 13:11 |
|
||
|
Помогите с интересным алгоритмом, пжлст
|
|||
|---|---|---|---|
|
#18+
Cryptic, То, что из кривого материала нужно вырезать несколько кусков - это еще не самое сложное. Как уже сказал AlexandrPlus, вопрос "а получается ли эта фиговина из той заготовки" имеет чисто математическое решение в пределах школьного курса геометрии (ну, может, олимпиадного :). Но, как говорил кто-то из древних, "Нет ничего сложного в том, чтобы пригласить девушку на свидание. Сложности начнутся, когда она согласится". Так вот, тут сложность появляется, когда эта фиговина может получиться из той заготовки множеством способов . Практически бесконечным числом способов. И нужно выбрать из них оптимальный (по каким-то критериям), либо указать, что добиться указанных критериев даже миллионом способов невозможно, и какие-то критерии надо смягчить. Эта задача уже из области высшей математики и диссертаций. На практике, самое интересное в таких задачах - подобрать некие эмпирические алгоритмы для достижения удовлетворительных результатов, вместо попыток перебора всего и вся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2013, 14:43 |
|
||
|
Помогите с интересным алгоритмом, пжлст
|
|||
|---|---|---|---|
|
#18+
ДохтаР, до меня сегодня ночью дошло, как применить задачу рюкзака в моей задаче. Спасибо большое за совет. Сразу и не оценил. Я уже даже нашел алгоритм в сети. Буду продолжать пляски с бубном :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2013, 07:54 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=38210626&tid=1341854]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
151ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
| others: | 218ms |
| total: | 462ms |

| 0 / 0 |
