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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Крашится долгий цикл WHILE

Крашится долгий цикл WHILE

Ответ
Поиск в этой теме
Непрочитано 26.08.2020, 14:29 #1
Крашится долгий цикл WHILE
hans-zemmer
 
Калининград
Регистрация: 09.10.2012
Сообщений: 7

Предыстория:
Есть алгоритм (lisp) отрисовки полигонов по точкам, использующий в своей основе триангуляцию Делоне. Алгоритм "вирусный" в том плане, что работает до тех пор, пока на заданной дистанции от полигонов есть необработанные точки. Точек обычно очень много: до нескольких десятков тысяч штук. Идея заключается в том, чтобы запустить выполнение скрипта на долгое время и потом получить готовый результат. В основе программы лежит цикл WHILE, по сути бесконечный.
Так вот, по истечении некоторого времени в автокаде наступает фаталити. Главный вопрос: почему? Все переменные в цикле очищаются, бесконечно растущих списков нет.
Просмотров: 3593
 
Непрочитано 26.08.2020, 14:59
1 | 1 #2
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


Без кода можно очень долго гадать.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 26.08.2020, 15:23
#3
hans-zemmer


 
Регистрация: 09.10.2012
Калининград
Сообщений: 7


1100 строк кода.. Вряд ли у кого-то будет желание ковыряться.. На что обратить внимание? Ключевые моменты.
hans-zemmer вне форума  
 
Непрочитано 26.08.2020, 15:32
#4
trir


 
Регистрация: 18.12.2010
Сообщений: 5,047


Offtop: и почему бы не использовать Civil...
trir вне форума  
 
Непрочитано 26.08.2020, 16:06
#5
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,004


Цитата:
Сообщение от hans-zemmer Посмотреть сообщение
Все переменные в цикле очищаются, бесконечно растущих списков нет.
это ваши предположения или анализ потребляемых ресурсов? Попробуйте перед запуском лиспа хотя бы диспетчер задач запустить и по нему посмотреть, как будет память выжираться... Рекурсию насколько глубоко используете - у того же VBA с этим беда, очень маленький стек.
Сергей812 вне форума  
 
Автор темы   Непрочитано 26.08.2020, 17:48
#6
hans-zemmer


 
Регистрация: 09.10.2012
Калининград
Сообщений: 7


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
это ваши предположения или анализ потребляемых ресурсов? Попробуйте перед запуском лиспа хотя бы диспетчер задач запустить и по нему посмотреть, как будет память выжираться... Рекурсию насколько глубоко используете - у того же VBA с этим беда, очень маленький стек.
Память практически без изменений. Процессор только с 27% загрузки упал на 5-7% после окончания цикла. Графический даже не напрягался. Оперативки 32 Гб.
Лог-файлы пишутся при ошибке? Может, там есть ответ?
hans-zemmer вне форума  
 
Непрочитано 26.08.2020, 18:06
#7
metod


 
Регистрация: 09.10.2007
Москва
Сообщений: 451


Цитата:
Сообщение от hans-zemmer Посмотреть сообщение
Память практически без изменений. Процессор только с 27% загрузки упал на 5-7% после окончания цикла. Графический даже не напрягался. Оперативки 32 Гб.
Лог-файлы пишутся при ошибке? Может, там есть ответ?
Вам вопрос задали про рекурсию. Вы не ответили. Очень правильный вопрос.
metod вне форума  
 
Автор темы   Непрочитано 27.08.2020, 10:54
#8
hans-zemmer


 
Регистрация: 09.10.2012
Калининград
Сообщений: 7


Цитата:
Сообщение от metod Посмотреть сообщение
Вам вопрос задали про рекурсию. Вы не ответили. Очень правильный вопрос.
Нет там никакой рекурсии. Простой цикл.
Попробую пояснить:
В начале берутся 3 точки из множества. По ним строится треугольник. Далее назначаются 3 пары точек: координаты отрезков, из которых построен треугольник. Тут начинается цикл: каждая пара находит для себя оптимальную точку в соответствии с триангуляцией, лежащую за пределами треугольника. Строится новый треугольник по трем точкам - начало отрезка, конец отрезка, новая точка. Пара (отрезок) удаляется из списка, вместо нее в список добавляется две новых пары (два новых отрезка к найденной точке). Если точку найти не удается, пара удаляется из списка. И т.д. Из практики, в списке не бывает более 150-170 пар точек. Цикл длится до тех пор, пока не закончится список пар.

----- добавлено через ~6 мин. -----
Видео, как это работает: https://www.youtube.com/watch?v=h3c7bhACBIM
hans-zemmer вне форума  
 
Непрочитано 27.08.2020, 11:41
#9
trir


 
Регистрация: 18.12.2010
Сообщений: 5,047


код покажи
просто смешно, я реализации алгоритма Триангуляция Делоне на lisp'е видел ещё в прошлом десятилетии и вот опять... можно было хотя бы на dotNET попробывать
trir вне форума  
 
Автор темы   Непрочитано 27.08.2020, 12:53
| 1 #10
hans-zemmer


 
Регистрация: 09.10.2012
Калининград
Сообщений: 7


Цитата:
Сообщение от trir Посмотреть сообщение
код покажи
просто смешно, я реализации алгоритма Триангуляция Делоне на lisp'е видел ещё в прошлом десятилетии и вот опять... можно было хотя бы на dotNET попробывать
Могу тебе только направление показать, куда пойти с дотнетом и цивилом3д. Твой дотнет и цивил сгенерирует потом мне xml из полученных полигонов? Эти программы привяжут мне точки к географическим координатам? Если есть, что сказать по делу - говори. Иначе, направление ты знаешь.
hans-zemmer вне форума  
 
Непрочитано 27.08.2020, 13:08
#11
trir


 
Регистрация: 18.12.2010
Сообщений: 5,047


Цитата:
Твой дотнет и цивил сгенерирует потом мне xml из полученных полигонов? Эти программы привяжут мне точки к географическим координатам?
легко, я даже это делал - всеми тремя способами
trir вне форума  
 
Непрочитано 27.08.2020, 13:54
#12
bigden


 
Регистрация: 05.08.2008
Сообщений: 821


может где-нибудь деление на ноль

----- добавлено через ~1 мин. -----
а компилятор какие-то ошибки выдает?
bigden вне форума  
 
Непрочитано 28.08.2020, 09:13
#13
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,588


hans-zemmer, Вы не могли бы поделиться dwg файлом с точками, так сказать для тестов, а то из расчетных комплексов все более или менее однородное выходит, а вот такой топологии не попадалось...
Boxa вне форума  
 
Непрочитано 28.08.2020, 12:15
#14
trir


 
Регистрация: 18.12.2010
Сообщений: 5,047


На самом деле очень интересно, что за xml ты делаешь и как "привязываешь точки к географическим координатам" - сомневаюсь, что делаешь это правильно

Последний раз редактировалось trir, 28.08.2020 в 12:28.
trir вне форума  
 
Непрочитано 28.08.2020, 12:44
#15
===AAA===


 
Регистрация: 15.08.2005
г. Норильск
Сообщений: 451


Как вариант - нелицензионный Акад. "Ломанные, пропатченные" подобным страдали. Но давно это было...
Если да - то попробуй запустить код на "легальном" Акаде.
__________________
Счастливо, Алексей!
===AAA=== вне форума  
 
Непрочитано 28.08.2020, 18:34
#16
rebus


 
Регистрация: 20.04.2014
Сообщений: 38


Цитата:
Сообщение от hans-zemmer Посмотреть сообщение
Так вот, по истечении некоторого времени в автокаде наступает фаталити. Главный вопрос: почему?
Может быть какой-нибудь особый аргумент операции с плавающей точкой вызывает необрабатываемое автокадом исключение, и он падает.
Надо добавить в цикл логирование в файл и потом анализировать состояние, предшествующее падению.
rebus вне форума  
 
Непрочитано 28.08.2020, 19:59
#17
CalcProg


 
Регистрация: 02.10.2016
Сообщений: 205


отследить пошагово выполнение программы не судьба?
сперва выявить на каком операторе происходит остановка выполнения программы.
потом включить мозг и устранить ошибку.
CalcProg вне форума  
 
Непрочитано 02.09.2020, 17:59
#18
trir


 
Регистрация: 18.12.2010
Сообщений: 5,047


https://www.keanw.com/2009/07/triang...using-net.html
trir вне форума  
 
Непрочитано 03.09.2020, 21:40
#19
ciril

САПР
 
Регистрация: 29.09.2011
СПб
Сообщений: 283


Цитата:
Сообщение от hans-zemmer Посмотреть сообщение
1100 строк кода.. Вряд ли у кого-то будет желание ковыряться.. На что обратить внимание? Ключевые моменты.
А желание строить предположения в воздухе, конечно же, у каждого будет. Без кода можно только и сказать, что нужно обратить внимание на код - ключевой момент.

----- добавлено через ~2 ч. -----
А вообще, установи logfilemode в 1, выполняй в критических участках (mem), потом парсь полученный лог, будет по крайней мере понятно, что по памяти происходит.
__________________
На работе было скучно:shout:
ciril вне форума  
 
Непрочитано 04.09.2020, 07:51
#20
nickname2019


 
Регистрация: 18.11.2019
Сообщений: 1,492


Когда я был студентом - пытался написать алгоритм создания полигонов по точкам на Делфи. Алгоритм постоянно фаталил. Я его так и не доделал, но усвоил, что при построении алгоритма не нужно использовать тригонометрические функции, у которых разрывная область определения (tan и atan). Также ошибка может возникать, когда полигон оказывается вырожденным (совпадают точки, или три точки почти на одной прямой, на грани погрешности).
Нужно в цикл ввести счетчик (i), при выполнении цикла выводить i в поле какой-нибудь формы и форму обновлять при каждом изменении i. При падении - вы увидите при каком значении счетчика происходит краш.
Соответственно, при следующем выполнении следует поставить брякпойнт в цикле на это значение i - тогда можно остледить момент, когда возникает ошибка.

Если значение i сбрасывать в файл (log) - не факт, что при краше последнее значение сохраниться, так как файл не будет закрыт нормальным образом.
nickname2019 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Крашится долгий цикл WHILE

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Какой язык перспективен для инженера-конструктора с условием The_Mercy_Seat Программирование 705 17.03.2021 14:19
Как выполнять СГП на нулевой цикл? Поделитесь примером. Matiss Поиск литературы, чертежей, моделей и прочих материалов 0 05.05.2014 12:33
VBA 2010 медленно работает цикл по сравнению с 2008 sergtranes Программирование 23 04.09.2011 17:37
Цикл с неизвестным числом итераций? Tonic Программирование 4 01.04.2009 09:52
Перечень актов за полный цикл СМР Технадзор Разное 2 28.12.2008 23:15