|
|
|
Хранение изменяемой формы фигуры в бд
|
|||
|---|---|---|---|
|
#18+
mayton, maytonПо сабжу я так и не понял тебе надо автоматизировтаь авто-раскрой или человек будет мышкой ставить лекалы? В данном случае - задача, чтобы было либо первое, либо второе. Либо человек, либо машина, но чтобы геометрия резки учитывалась в системе и раскрой (или резка) материалов была с максимальной экономичностью (естессно на уровне дипломной работы, а не уровня реал предприятия). Вот в чем задача. Научный руководитель хочет, чтобы именно геометрия как-то учитывалась, и в идеале, чтоб машина сама искала подходящую геометрию и совершала резку. Но если не получится, то хотя б, чтобы человек вводил нужную длину-ширину и выбирал из представленных ему кусков сам (хотя вводить длину-ширину ему в любом случае придется самому). Но кто осуществит этот поиск и выбор нужного куска? Be or not to be, вот в чем вопрос :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2013, 18:48 |
|
||
|
Хранение изменяемой формы фигуры в бд
|
|||
|---|---|---|---|
|
#18+
Что-то типа во этого. Для каждой формы есть набор точек с порядком, чтобы потом понять что с чем соединять. Что думаете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2013, 08:11 |
|
||
|
Хранение изменяемой формы фигуры в бд
|
|||
|---|---|---|---|
|
#18+
Cryptic, Ещё раз. Вы храните _фигуру_. Всю. Целиком. В одном поле. В виде WKT или WKB (в зависимости от того, что вам нужнее --- удобство отладки или производительность). Вы работаете с фигурами средствами GIS-расширения, благо координатная система для простого Декарта есть у всех. Вы _не_ изобретаете г-велосипед, потому что вы понятия не имеете, каких офигительный усилий требует создание даже г-велосипеда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2013, 08:28 |
|
||
|
Хранение изменяемой формы фигуры в бд
|
|||
|---|---|---|---|
|
#18+
AndreTM, авторОдин из путей я вам приводил - сделайте таблицу "примитивов" раскроя (как можно порезать такой-то кусок на такие-то части), пусть эта таблица будет "справочником", пусть большим (БД стерпит), но позволяющим не заниматься математикой, а оперировать в OLAP Пытаюсь осмыслить эту фразу...А как эти самые примитивы раскроя будут выглядеть? Например квадрат? Мне нужно хранить его различные размеры? Но как мне это может помочь? Все равно придется путем алгоритма находить и вычитать фигуры. Поясните на примере, пжлст. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2013, 06:57 |
|
||
|
Хранение изменяемой формы фигуры в бд
|
|||
|---|---|---|---|
|
#18+
iv_an_ru, приведите пример wkt создания и помещения в таблицу полигона Г-формы, пжлст. А то что-то не могу найти простого и понятного примера... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2013, 08:06 |
|
||
|
Хранение изменяемой формы фигуры в бд
|
|||
|---|---|---|---|
|
#18+
CrypticAndreTMОдин из путей я вам приводил - сделайте таблицу "примитивов" раскроя (как можно порезать такой-то кусок на такие-то части)...Пытаюсь осмыслить эту фразу...А как эти самые примитивы раскроя будут выглядеть? Например квадрат? Мне нужно хранить его различные размеры? Но как мне это может помочь? Все равно придется путем алгоритма находить и вычитать фигуры.Например... Для простоты картины - будем считать, что пока круги не учитываем (хотя и можем). Мы имеем куски материала с известными параметрами, который можно порезать на заготовки различными путями. Естественно, сначала это "целые" куски, например, прямоугольной формы, в процессе использования они изменяются... Пусть кусок материала описывается "квадратиками" известного размера (1 кв.см или 1 кв.дм или т.п.). Пусть заготовки, которые требуются, будут только прямоугольниками. Пусть мы имеем в поставках кусок квадратной формы 2*2, описываемый как {1,2,3,4}. Рассчитаем единоджы и заранее , что же мы можем из него получить: - одну заготовку формы {1,2,3,4} - одну заготовку 1*1 и 1 кусок формы {2,3,4}. Таких вариантов 4 (отрезаем квадратик с каждого из углов), но в силу симметрии - они эквивалентны, поэтому такой вариант раскроя считается за один - две заготовки 1*1 и 1 кусок формы {3,4}. Аналогично, один вариант раскроя - три заготовки 1*1 и 1 кусок формы {4} - четыре заготовки 1*1 - одну заготовку 2*1 и 1 кусок {3,4} - две заготовки 2*1 В процессе расчета мы, на самом деле, должны были рассчитать раскрой остающихся предыдущих кусков, если они не заготовки, рекурсивно: (2) -- {2,3,4} (режем, у нас не предполагается заготовок такой формы): -- одна заготовка 1*1 и 1 кусок {3,4} --- {3,4} = одна заготовка 2*1 --- 1 заготовка 1*1 и 1 кусок {4} ---- {4} = заготовка 1*1 (3) -- {3,4} = одна заготовка 2*1 -- 1 заготовка 1*1 и 1 кусок {4} --- {4} = заготовка 1*1 (4) -- {4} = заготовка 1*1 (6) -- {3,4} = одна заготовка 2*1 -- 1 заготовка 1*1 и 1 кусок {4} --- {4} = заготовка 1*1 Итак, создадим таблицы (куски, заготовки, раскрой) и заполним их Куски IdРазмерФорма14{1;2;3;4}23{2;3;4}32{3;4}41{4} IdРазмер12*222*131*1 Раскрой Id_КускаId_ЗаготовкиКоличествоЗаготовокId_КускаОстатка43103314332032102313232423302214131213231334134012131220И так для каждого исходного куска материала. Оптимальные раскрои видны - при подборе (имеем в наличии столько то таких-то кусков -> получить такое количество таких-то заготовок) мы просто будем пытаться минимизировать размеры кусков-остатков в соответствии с Раскрой и Куски.Размер . Да, таблица с раскроями будет большой, но ведь можно её и оптимизировать, исключив заведомо ненужные варианты (например, разрез куска 100*100 на 10000 заготовок 1*1 и т.п.). Ещё, мы можем исключить из таблицы Раскрой строки с количеством>1 (и затем вообще отказаться от поля КоличествоЗаготовок ), тогда расчеты можно проводить, "отделяя по одной заготовке" и затем рекурсивно обращаясь к Раскрою снова. В целом, вы тогда можете сосредоточить логику именно на получении оптимального плана по изготовлению заготовок, не отвлекаясь при этом каждый раз на расчеты по раскроям исходных кусков материала. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2013, 14:58 |
|
||
|
Хранение изменяемой формы фигуры в бд
|
|||
|---|---|---|---|
|
#18+
AndreTM, Пусть у нас всего 9 типов деталей (простейшая тумбочка с ящиками одинаковых размеров, фанерные донца не в счёт). Пусть на лист влезает примерно до 8 деталей корпуса или до 32 деталей ящиков. Тогда в базу придётся залить порядка (1 + 4^4) ^ 8 = 2x10^19 вариантов кроя. Многовато. Лучше всё же кроить on denamd. Без вариантов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2013, 15:50 |
|
||
|
Хранение изменяемой формы фигуры в бд
|
|||
|---|---|---|---|
|
#18+
iv_an_ru, Симметрию учли? Последнее примечание (про незабивание всех вариантов, а "пошаговую" работу) учли? Оптимизацию с той точки зрения, что при массовом раскрое (1000 исходников -> 500 запчастей тумбочек) можно для 95% набора сначала использовать уже когда-то ранее найденные "оптимальные" шаблоны (с нулевыми остатками) учли? И к тому же, я не предлагаю полностью отказаться от "модуля произвольного раскроя", если он требуется постановкой задачи, я предлагаю упростить и ускорить типовые разложения... Квадратные уравнения всяко проще решать по теореме Виета, нежели методом Ньютона (это не по теме топика, если чо) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2013, 16:14 |
|
||
|
Хранение изменяемой формы фигуры в бд
|
|||
|---|---|---|---|
|
#18+
AndreTM, Не решается эта задача "пошагово". Во-первых, не факт, что для кроя листа на 3 детали X и 2 детали Y надо отрезать сначала все X а потом все Y или наоборот. Во-вторых, для какого-то набора крой может быть отрисован вручную, и его надо быстро найти. Или даже подсказать, что вот такой набор можно сделать из стольки-то таких кроев, столько-то эдаких, дорезать вон ту детальку так-то из того-то отхода, а остаток сложить на склад, Или выдать оператору кучу вариантов, по одной полосе на вариант, пусть он сам голову греет. А то, что получится в результате кроя, вовсе не обязательно совпадёт с вашими ожиданиями, и надо предусматривать сценарий, в котором получается брак и не те отходы, которые ожидались. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2013, 17:30 |
|
||
|
Хранение изменяемой формы фигуры в бд
|
|||
|---|---|---|---|
|
#18+
авторзадачи такого раскроя решаются быстро Не верно. =) Задачи рюкзака в подновляющем большинстве невозможно решить в лоб поэтому используют приближенные решения этим они и интересны. имхо: Автор даже для себя не может точно сформулировать задачу - Прежде всего меня интересует что подразумевается под фигурой(прямоугольник, треугольник, выпуклый или не выпуклый многоугольник) и оптимальным раскроем (например минимальные отходы или остатки правильной формы или максимальное использование остатков) необходима четкая формулировка без этого вперед двигацо глупо. Пока не очень понятно что такое оптимальный раскрой без четкого определения сложно написать оценочную функцию которая будет решать оптимальный ли раскрой или нет. Попробую предположить что при производстве мебели в основном будут использоваться прямоугольные части, чуть реже прямоугольники будут иметь треугольные спилы, потом не выпуклые многоугольники затем выпуклые многоугольники (окружности можно описать как многоугольники погрешности будут небольшими) на основании этого уже можно ввести квалификацию остатков и деталей Прямоугольные треугольные многоугольники также для фикции подбора раскроя не будет лишней информация о площади (остатка/детали)минимальный и максимальный прямоугольник(радиус) в который вписывается фигура это поможет отфильтровать заведомо неверные решения После того как более или менее определимся с фигурами можно строить раскрой для начала отсортировать материалы запчасти остатки по размерам площади прямоугольники к прямоугольникам треугольники к треугольникам большое к большому маленькое к маленькому выпуклое к впуклому после этого уложить все это каким нить простым алгоритмом типа оценить оценочной функцией результат Попробывать изменить(мутировать) результат на основе оценки изменить -> оценить -> изменить -> оценить .... и так N число раз Результат получится заведомо не идеален но весьма близок к этому (генетический алгоритм) процентов на 5% не попадет в идеальное решение можно использовать скрещивание удачных изменений но имхо это осложнит решение и весьма слабо улучшит результат простого перебора при небольшом числе итераций если же задача стоит в максимальной оптимизации то скрещивание обязательно. Основной упор можно сделать на прямоугольники их даже можно оптимизировать отдельно т.к. они очень легко считаются и подбираются если бы я решал такую задачу то: 1. Выбрал бы все неправильные фигуры и попытался их уместить в минимальный прямоугольник не превышающий размером исходный матерьял ( умолчу про множество нюансов ... =) ) т.к. Все оставшиеся детали будут прямоугольными то и оптимизировать их как прямоугольники имхо2: задача весьма и весь мутная следовательно и ответы весьма мутные ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2013, 17:32 |
|
||
|
Хранение изменяемой формы фигуры в бд
|
|||
|---|---|---|---|
|
#18+
iv_an_ru, Хотите бесплатный продарок --- идею действительно полезной софтины? Пусть камера делает снимок стола с лежащими на нём отходами, определяет их размеры и заносит в базу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2013, 17:33 |
|
||
|
Хранение изменяемой формы фигуры в бд
|
|||
|---|---|---|---|
|
#18+
iv_an_ruНе решается эта задача "пошагово". Во-первых, не факт, что для кроя листа на 3 детали X и 2 детали Y надо отрезать сначала все X а потом все Y или наоборот. Во-вторых, для какого-то набора крой может быть отрисован вручную, и его надо быстро найти. Или даже подсказать, что вот такой набор можно сделать из стольки-то таких кроевПочему отрезАть надо по порядку? Предложено: " отрЕзать одну из{X,Y,Z,..}, от оставшегося отрЕзать ещё одну из {X,Y,Z,..},.. ", просто все результаты этих "отрезаний" уже рассчитаны и занесены в базу. Ну и "быстрый поиск", "такое-то из такого-то" - это тоже предложено, запоминать заранее уже находившиеся оптимальные раскрои, по типу "Из трёх листов этого и пяти листов того мы получаем шашнацать наборов тумбочек без отходов/с минимумом отходов" - и мы можем просто минусовать исходный материал и плюсовать продукцию... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2013, 18:01 |
|
||
|
Хранение изменяемой формы фигуры в бд
|
|||
|---|---|---|---|
|
#18+
Народ, вы замечаете, что если и не на теорию диплома, то на курсовик мы уже тут настрадали ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2013, 18:05 |
|
||
|
Хранение изменяемой формы фигуры в бд
|
|||
|---|---|---|---|
|
#18+
iv_an_ruiv_an_ru, Хотите бесплатный продарок --- идею действительно полезной софтины? Пусть камера делает снимок стола с лежащими на нём отходами, определяет их размеры и заносит в базу. Ахахаха! Рассмешили. С чувством юмора у вас ништяк. Мне на мейл.ру посоветовали фотографировать на смартфон листы и клеить на них штрихкоды (их считывать тоже смартфоном) )))) авторАвтор даже для себя не может точно сформулировать задачу Обижаете... автор- Прежде всего меня интересует что подразумевается под фигурой(прямоугольник, треугольник, выпуклый или не выпуклый многоугольник) и оптимальным раскроем (например минимальные отходы или остатки правильной формы или максимальное использование остатков) необходима четкая формулировка без этого вперед двигацо глупо. Пока не очень понятно что такое оптимальный раскрой без четкого определения сложно написать оценочную функцию которая будет решать оптимальный ли раскрой или нет. 1) Фигуры - это прямоугольники. Из этих прямоугольников будут в дальнейшем вырезаться нужные формы, но это уже не наша задача. Наша задача - именно прямоугольные области. 2) Оптимизация - максимальная экономичность. То есть отрезает прямоугольную область от листа не с середины, а с краю, чтобы из этого куска потом еще можно было оттяпать кусок. 3) Кто ищет и режет листы, терминатор или Джон Коннор? Это вопрос кого быстрее заставить :) т. е. что быстрее и легче реализовать. Предполагаю, что легче запрограммировать авто раскрой, пусть примитивный, ну и ладно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2013, 18:05 |
|
||
|
Хранение изменяемой формы фигуры в бд
|
|||
|---|---|---|---|
|
#18+
AndreTMНарод, вы замечаете, что если и не на теорию диплома, то на курсовик мы уже тут настрадали Конечно замечаем :) А если присовокупить к этому топику еще и вот http://www.sql.ru/forum/actualthread.aspx?tid=1014585 , http://www.sql.ru/forum/actualthread.aspx?tid=1016894 и вот http://www.sql.ru/forum/actualthread.aspx?tid=1016933 , то получается есть над чем поразмыслить. З.Ы. Стоит отметить конкретно именно ваши сообщения, как одни из самых смыслонагруженных и полезных, на мой взгляд. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2013, 19:29 |
|
||
|
Хранение изменяемой формы фигуры в бд
|
|||
|---|---|---|---|
|
#18+
Господа мы уклоняемся и лезем в дебри. Еще раз по автоматизации 1) Ссылка на вики http://en.wikipedia.org/wiki/Cutting_stock_problem 2) Фундаментальные работы математиков. Канторович Л.В., Залгаллер В.А. Рациональный раскрой промышленных материалов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2013, 21:15 |
|
||
|
Хранение изменяемой формы фигуры в бд
|
|||
|---|---|---|---|
|
#18+
Еще пару книжек для автора. 3) Э. А. Мухачева "Рациональный раскрой промышленных материалов" 4) Ф.В. Бабаев "Оптимальный раскрой материалов с помощью электронно-вычислительных машин". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2013, 21:24 |
|
||
|
Хранение изменяемой формы фигуры в бд
|
|||
|---|---|---|---|
|
#18+
AndreTMiv_an_ruНе решается эта задача "пошагово". Во-первых, не факт, что для кроя листа на 3 детали X и 2 детали Y надо отрезать сначала все X а потом все Y или наоборот. Во-вторых, для какого-то набора крой может быть отрисован вручную, и его надо быстро найти. Или даже подсказать, что вот такой набор можно сделать из стольки-то таких кроевПочему отрезАть надо по порядку?Потому что порядок резки на практике важен. Если резать напроход, то обычно все равно (если нет слишком узких деталей). Если не напроход, то пила проходит длину детали плюс ещё чуть-чуть, оставляет засечку. Если вы хотели положить туда деталь, то при этом порядке реза вам придётся чуть-чуть отступить и потом срезать подпорченную засечкой сторону, а это лишние время и отходы. На практике часто надо сначала из листа резами напроход сделать несколько заготовок, а уже их (по возможности опять-таки напроход) порезать на детали. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2013, 21:37 |
|
||
|
Хранение изменяемой формы фигуры в бд
|
|||
|---|---|---|---|
|
#18+
iv_an_ru, Я, как бы, не только теорию изучал... И такие вещи понимаю. И предложенный мной подход к проектированию раскроя отнюдь не является чем-то новым, всё это уже было. И, кстати, вполне (да что там, - именно) позволительно реализовать то, что вы рассказываете, ведь никто не запрещает в модели предусмотреть "промежуточные заготовки", вот в чём дело-то... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2013, 01:23 |
|
||
|
Хранение изменяемой формы фигуры в бд
|
|||
|---|---|---|---|
|
#18+
AndreTM, Ну а я наоборот даже теории этого самого кроя не изучал, и ничего в той области не писал. Зато у нас среди прочих был и мебельный цех, и я стал продвинуто-матерящимся юзером программ для всей этой беды. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2013, 02:10 |
|
||
|
Хранение изменяемой формы фигуры в бд
|
|||
|---|---|---|---|
|
#18+
iv_an_ruя стал продвинуто-матерящимся юзером программ для всей этой беды. Это я от сочувствия... Ну не могу удержаться... ... Сам в таких ситуациях бывал. Тут только одно помогает (сугубое ИМХО) - если только сразу взять и переписАть. Я один раз сумел хорошо. И ещё один раз сумел достаточно хорошо. Не мебельное производство, конечно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2013, 03:26 |
|
||
|
Хранение изменяемой формы фигуры в бд
|
|||
|---|---|---|---|
|
#18+
mayton, Спасибо за книги! Очень полезно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2013, 13:30 |
|
||
|
Хранение изменяемой формы фигуры в бд
|
|||
|---|---|---|---|
|
#18+
Господа, как считаете, подойдет хранить фигуры в postgreSQL с расширением PostGIS? Есть ли там готовые функции вычитания и проверки вхождения полигонов один в другой? Или может кто знает СУБД с готовым набором функций для работы с типом polygon. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2013, 13:33 |
|
||
|
Хранение изменяемой формы фигуры в бд
|
|||
|---|---|---|---|
|
#18+
AndreTM, авторописываемый как {1,2,3,4} Что значит эта запись? Это номера вершин? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2013, 13:38 |
|
||
|
Хранение изменяемой формы фигуры в бд
|
|||
|---|---|---|---|
|
#18+
Всем спасибо. Общими усилиями участников форума, я нашел решение своих задач. Итак: 1) Создал бд с таблицей Shape и полями id, geometry и dateOfChange. Поле geometry обычное текстовое поле. Но в нем я храню запись фигур в wkt формате. Например: Код: sql 1. 2) Дальше я нашел opensource библиотеку NET Topology Suite (портированная для .NET библиотека JTS, Java) для работы с геометрическими формами и геоданными. 3) Немного дописал под свои нужды некоторые функции (конвертация wkt в набор точек Point и обратно и т.д.) И все! Теперь можно производить резку материалов любой формы и легко сохранять изменения в одном поле таблицы. То, что собственно и хотел в рамках топика :) Еще раз всем спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2013, 15:17 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=38224745&tid=1341836]: |
0ms |
get settings: |
7ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
172ms |
get topic data: |
12ms |
get forum data: |
4ms |
get page messages: |
77ms |
get tp. blocked users: |
1ms |
| others: | 212ms |
| total: | 508ms |

| 0 / 0 |
