|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,840
|
Вот с этим - рассматривая оптимизацию - согласиться трудно. Просто надо правильные использовать. По сути, то, что делает "тетка" тоже метод - вероятностный.
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381
|
Цитата:
А ученый знает про матрицы, знает, что с их помощью можно быстро массовые операции выполнять и применяет. Но забывает о том, что если в математических формулах можно что-то очень просто описать путем применения соответствующих символов операций, то в компьютерной программе реализацию надо написать средствами соответствующего языка. Использовать надо вычислительные методы. Для конкретных программных возможностей. Поиск кратчайшего пути разными способами выполняется. Есть много отработанных алгоритмов. В том числе не "математических". |
|||
|
||||
Инженер СКС Регистрация: 21.08.2009
г. Домодедово МО
Сообщений: 72
|
Цитата:
P.S. Не помню ... есть какая-нибудь LISP-функция, которая находит все примитивы пересекаемые с заданным ? Последний раз редактировалось NEDIS, 17.09.2010 в 15:11. |
|||
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,840
|
в прямую нет, но можно взять границы примитива (vla-getboundingbox...) и по этим точкам отсечь рамкой, далее отфильтровать набор через (vla-intersectwidth...) но это только при условии нечастого использования - ибо если в цикле - каждая такая итерация - достоточна ресурсоемка.
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381
|
NEDIS, в дополнение к алгоритму стоит подумать о порядке ввода точек (комнат). Это математически они могут быть как угодно перемешаны, а в реальном объекте они группируются. Например, ответвление "коридора", или "этаж".
Достаточно придерживаться хотя бы относительного порядка и можно значительно сократить расчеты. При жестком порядке ввода точек по какому-то правилу можно вообще рассчитать быстро, но все-таки лучше его не делать обязательным - это бывет неудобно. И конкретную задачу лучше бы уточнить. Все-таки "две больших разницы" поиск кратчайших маршрутов и Цитата:
Я сам такое делал. |
|||
|
||||
Инженер СКС Регистрация: 21.08.2009
г. Домодедово МО
Сообщений: 72
|
|
|||
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381
|
Цитата:
1. Обозначаете как-то все порты и точки "перекрестков" (можно, для простоты, целыми числами, хотя удобнее "по-человечески", прямо обозначениями портов). 2. Описываете топологию сети - какая точка с какой соединяется. Вот здесь простор для фантазии. Хотя, с учетом того, что в СКС не разветвлений, это легче - можно легко описать маршруты. 3. Вычисление координат каждого маршрута. Сначала, для простоты, берете осевую линию трассы. А потом для каждого кабеля с учетом смещения на некоторое расстояние, лучше на реальное - порядка 5 мм. Можно с учетом габарита канала, в несколько ярусов. Здесь можно и постараться избежать повторных расчетов участков с несколькими кабелями. 4. Рисование каждого кабеля полилинией. Если надо - присоединение информации (окуда, куда и прочее) в виде расширенных данных для каких-то других расчетов. |
|||
|
||||
КИПиА Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
|
>>Тогда зачем вся эта математика? Описываете геометрию трассы, как это принято во всяких гидравлических расчетах:
Ненадо путать человека. математика тут какраз очень зачем (впрочем как всегда)... трасса опаисывается графом, затем в гугле вбивается "поиск кратчайшего маршрута на графе". единственное место для полета фантазии - как представить граф средствами лиспа и нарисовать примитивами автокада. т.к. предпологается всё сводить на один шкаф - достаточно один раз расчитать кратчайшие расстояния для узлов графа до шкафа с учетом связности узлов и поиск крадчайшего маршрута сведется к поиску ближайшего ребра и дальнейшему перебору смежных узлов с выбором наименьшего растояния до шкафа. остается обозначить рабочие места и шкаф блоками чтоб не тыкать каждый раз мышью точки для трассировки |
|||
|
||||
Инженер СКС Регистрация: 21.08.2009
г. Домодедово МО
Сообщений: 72
|
Цитата:
Так я ее и описываю - графом которой потом решаю. |
|||
|
||||
КИПиА Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
|
>>Без построения графа (двумерной матрицы) и ее решения в поиске оптимального (наикротчайшего) пути не обойтись.
если я правильно понял двумерная матрица получится размера кол-во узлов X кол-во узлов? это очень неэкономично - связей мало, соответственно матрица почти вся заполнена нулями. лучше 2 одномерных массива, один узлы (+возможно примыкающие связи), другой связи с примыкающими узлами и весами |
|||
|
||||
Инженер СКС Регистрация: 21.08.2009
г. Домодедово МО
Сообщений: 72
|
Цитата:
P.S. Кто-нибудь знает можно три вложенных цикла в рекурсивную функцию засунуть, хочу избавиться от работы с переменной во внутреннем цикле. |
|||
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,840
|
Можно - по хорошему переменных быть не должно вообще - в твоем коде прослеживаеться "не правильный" подход - изменение переменной внутри цикла - по хорошему функция не должна обращаться ни к каким "внешним" переменным - тем более для их установки - есть аргументы, есть возврат. В автолиспе с рекурсией надо быть внимательным - т.к. не поддерживаеться т.н. "хвостовая рекурсия"; при начальном уровне для "многовложенных" функций, как правило, проще mapcar, хотя рекурсия безусловно более функциональна. Если есть сложность с построением - напиши разберем.
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
|
||||
- Регистрация: 24.07.2005
Москва
Сообщений: 1,335
|
трассировка http://ru.wikipedia.org/wiki/%D0%A2%...D0%B8%D1%8F%29
достаточно общее понятие, можно вкратце объяснить, что в этой программе трассируется, для какой отрасли? |
|||
|
||||
КИПиА Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
|
>>И как найти оптимальную (самую короткую)
>>трассу без связей i-узла с j-узлом по двум одномерным массивам? это алгоритм Дейкстры - http://ru.wikipedia.org/wiki/Алгоритм_Дейкстры. реализация данного алгоритма на паскале работает без видимых задержек на сложных трассах (в разумных пределах - проверено на разделах ОПС довольно сложных зданий). |
|||
|
||||
Инженер СКС Регистрация: 21.08.2009
г. Домодедово МО
Сообщений: 72
|
|
|||
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,840
|
Не вникая что такое матрица флойда - смотрю твой рекурсивный пример:
1. (= num3 0) -> (zerop num3); 2. (if (or (and много вычислений) (and мало вычислений) ); конец or я не вникал, но вначале надо проверять то, что более вероятно является условием выхода и если равновероятно - то начинать надо с меньшего кол-ва вычислений (быстрее). 3. NDS-recursion-num3 ..... -> забыт запуск функции - нет "(" она видимо перед num1 4. у функции 5 аргументов а вызываешь ты ее с 4 (даже если ошибку с "фуyкцией" num1 убрать - а вобще сейчас 1 получаеться). 5. если у тебя num1 и num2 внутри этой функции не меняются, то зачем на них все время одинаковые вычисления (itoa) делать одного раза будет достаточно. 6. зачем ты передаешь рекурсивно первичную матрицу - наверное там должен быть результат assoc.
__________________
Когда в руках молоток все вокруг кажется гвоздями. Последний раз редактировалось Дима_, 20.09.2010 в 00:57. |
|||
|
||||
Инженер СКС Регистрация: 21.08.2009
г. Домодедово МО
Сообщений: 72
|
Цитата:
Вывод: все считает шустро - таких проблем как с Флойдом, используя даже "неправильный" для LISP-а императивный подход, замечено не было. Спасибо Sleekka за наставление. Обновил топик. Добавил новые функции. В ближайшие дни скомпоную все в отдельные функции (для удобства), ну и соответственно переделаю команду NEDIS-tracing-point-to-point под новые функции. Последний раз редактировалось NEDIS, 05.10.2010 в 13:38. |
|||
|
||||
КИП и А Регистрация: 28.04.2010
Киев
Сообщений: 101
|
Прикольно. Авто трассировка Алгоритм Дейкстры мне напомнила Карту Украины или Киева.
Где указываешь точку А и точку В. (Указать кратчайший путь для проезда автомобилем по дороге от точки А до точки В. Плюс показать длину этого пути.) Но с запуском вашей программы ничего не понятно. Да еще Кад висит Последний раз редактировалось Eddicordo, 10.11.2010 в 13:59. |
|||
|
||||
Инженер СКС Регистрация: 21.08.2009
г. Домодедово МО
Сообщений: 72
|
Цитата:
P.S. На трех машинах разной кофигурации запускал - все считает шустро, проблем не замеченно. Последний раз редактировалось NEDIS, 10.11.2010 в 14:46. |
|||
|
||||
КИП и А Регистрация: 28.04.2010
Киев
Сообщений: 101
|
NEDIS, Все разобрался. Это я загрузил сразу 2 алгоритма. Вот и подвисло.
Но чет странно при команде NEDIS-tracing-point-to-point путь находит вроде бы правильно. А вот поллинию налаживает со сдвигом. То есть не точно по указанному скелету. Это у тебя как пример показаны отрезки ну очень огромные. Ты начерти отрезки по 10-100 мм. и увидишь не точности. Да и при команде NEDIS-input-system-for-tracing наши отрезки должны быть именно в том слое !!SS_zakl_gofra_25. Неудобство в том что при указании наших отрезков они уже должны быть в нужном слое. Был бы неплохо что бы при указании нашего скелета из отрезков все что мы выделяем само переносилось в нужный нам слой. И выделение рамкой скелета ну очень не удобно. А выделить ВСЕ, по моему никому и не нужно. Выделение должно быть указание конкретного отрезка клац, дольше клац., если надо, выделение стандартным методом рамкой справа на лево выделяется все что вошло в рамку ну и слево на права как у Вас сейчас. Создал свои отрезки присвоил им твой слой !!SS_zakl_gofra_25. Указываю NEDIS-input-system-for-tracing Код:
Код:
Последний раз редактировалось Eddicordo, 11.11.2010 в 11:53. |
|||
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Создание форм и шрифтов для AutoCAD | Shoorup | AutoCAD | 6 | 25.01.2013 17:43 |
Информация по идентификационным кодам программ в сетевых лицензиях Autodesk | KSI | AutoCAD | 1 | 14.09.2009 15:59 |