поиск оптимального пути, привязка к сетке.
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > поиск оптимального пути, привязка к сетке.

поиск оптимального пути, привязка к сетке.

Ответ
Поиск в этой теме
Непрочитано 12.01.2013, 15:12 #1
поиск оптимального пути, привязка к сетке.
amadey18
 
студент 5 курса
 
Харьков\Украина
Регистрация: 18.11.2012
Сообщений: 8

Добрый день.

Задача состоит в том что бы найти оптимальный путь трассировки платы.
Прочитал кучу алгоритмов по трассировке, но как применить хотя бы один из них на ЛИСПе не понимаю...
например есть схема соединения элементов

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

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

может кто нибудь сталкивался с похожими задачами поиска оптимального пути. Помогите составить какой нибудь алгоритм, или код работы данной программки.

Миниатюры
Нажмите на изображение для увеличения
Название: форум_1.PNG
Просмотров: 355
Размер:	19.3 Кб
ID:	94119  Нажмите на изображение для увеличения
Название: форум_2.PNG
Просмотров: 297
Размер:	19.6 Кб
ID:	94120  

Просмотров: 3370
 
Непрочитано 12.01.2013, 21:29
#2
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,839


Цитата:
Сообщение от amadey18 Посмотреть сообщение
Прочитал кучу алгоритмов по трассировке, но как применить хотя бы один из них на ЛИСПе не понимаю...
Что вы понимаете под словом "прочитал" - посмотрел на код на елезнакомом диалекте или разобрался с принципом. Если второе - то что конкретно не получается реализовать в автолиспе, если первое - то вначале следует разобратся, что писать, а уж потом "браться за шашки".
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Автор темы   Непрочитано 13.01.2013, 16:18
#3
amadey18

студент 5 курса
 
Регистрация: 18.11.2012
Харьков\Украина
Сообщений: 8
Отправить сообщение для amadey18 с помощью Skype™


Цитата:
Сообщение от Дима_ Посмотреть сообщение
Что вы понимаете под словом "прочитал" - посмотрел на код на елезнакомом диалекте или разобрался с принципом. Если второе - то что конкретно не получается реализовать в автолиспе, если первое - то вначале следует разобратся, что писать, а уж потом "браться за шашки".
Возьмем например волновой алгоритм Ли
из первого элемента распространяется волна(цифрами), которая является следующей точкой распространения волны.

при этом он должен проверять занята ли следующая ячейка или нет.
значит в автокаде ячейками будут являться точки привязки.

как организовать проверку на наличие чего либо на пути я примерно понял, используя функцию ssget загоняем в набор круги(контактные площадки) и полилинии(уже проведенные трассы), используя фильтр, затем вытаскиваем данные из набора в список, проверяем на пересечение, если есть, то значит на пути объект, который нужно обойти.
когда на пути больше нет объектов, то нарисовать поверх этих точек линию.
загвоздка возникла в организации рисования линии(т.е. волны), в каком направлении она пойдет(вверх, вниз, вправо, влево), при этом ее по идее не должно быть видно.
Миниатюры
Нажмите на изображение для увеличения
Название: Lee_algorithm.png
Просмотров: 532
Размер:	101.3 Кб
ID:	94161  Нажмите на изображение для увеличения
Название: 222.PNG
Просмотров: 260
Размер:	20.8 Кб
ID:	94162  
amadey18 вне форума  
 
Непрочитано 14.01.2013, 11:11
#4
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,839


Цитата:
Сообщение от amadey18 Посмотреть сообщение
как организовать проверку на наличие чего либо на пути я примерно понял, используя функцию ssget загоняем в набор круги(контактные площадки) и полилинии(уже проведенные трассы), используя фильтр, затем вытаскиваем данные из набора в список, проверяем на пересечение, если есть, то значит на пути объект, который нужно обойти.
Я бы не стал проверять по "физическому" наличию линий и окружностей. Тут надо 1 раз прочитать данные, построить на ее основе мат. модель и прогнать выбранный алгоритм по ней, а по результату уже нарисовать трассы (1 раз)- т.к. как не оптимизируй, а перибирать тут придется не слабо, а если Вы этот "перебор" чертить будете, да еще и потом смотреть что начертили (програмно) - работать будет подобная программа до пенсии (если раньше fatal не словит).
з.ы. в вышеприведенном алгоритме, по моим прикидкам, при построении "волны" список будет "крайне неэффективен", а т.к. это единственный "родной" тип коллекций в АВТОлиспе, то стоит задуматся о смене либо алгоритма, либо языка.
__________________
Когда в руках молоток все вокруг кажется гвоздями.

Последний раз редактировалось Дима_, 14.01.2013 в 11:25.
Дима_ вне форума  
 
Непрочитано 14.01.2013, 11:11
#5
Елпанов Евгений

программист
 
Регистрация: 20.12.2005
Москва
Сообщений: 1,439
Отправить сообщение для Елпанов Евгений с помощью Skype™


по алгоритмам, я бы посоветовал не пытаться сразу создавать идеальную трассировку!
Думаю, наиболее простым решением будет первоначальная трассировка с плохим результатом.
Далее, написать несколько программ улучшайзеров, которые будут улучшать текущую трассировку по какому нибудь параметру, при этом, возможно ухудшать трассировку в целом.
Все эти программы можно будет запустить единой программе по принципам генетического алгоритма, те. поставить проверку лучше/хуже, запускать все программы по очереди и смотреть результат. Если программа делает хуже, отменяем действие...

Для создания простейшей трассировки, думаю достаточно все прорисовать вертикально - горизонтально и при получении пересечений сразу делать новый слой для удаления пересечения.
В качестве улучшайзеров, можно использовать переброску на один слой, когда задача сводится к удалению пересечения между двумя линиями. Укорачивание трассы - убрать лишние петли итд. В целом, не вижу огромных трудностей по реализации.

ps. Поддерживаю Дима_, не вижу смысла помогать в этой теме, если amadey18 сам не пишет кодов, только ждет результатов. Эта задача для меня понятна, но ее решение, лично мне, совершенно не нужно. Удачи!
__________________
Чем гениальнее ваш план, тем меньше людей с ним будут согласны.
/Сунь Цзы/
Елпанов Евгений вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > поиск оптимального пути, привязка к сетке.



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
relative path - как работает? Angel_and AutoCAD 20 10.08.2016 14:43
Некорректная привязка к сетке Domnika AutoCAD 8 27.04.2011 14:46
Палитра инструментов. Быстрая замена пути к источникам данных для всех элементов сразу. hwd AutoCAD 10 30.11.2009 16:06
3d моделирование зданий. поиск наикротчайшего пути. sasha_nt Разное 6 18.06.2008 18:24