scholar_vit: (Default)
[personal profile] scholar_vit

Нарисовал программу, моделирующую... ну, неважно что, важно, что довольно сложную систему. Посмотрел на результаты пробного прогона - все красиво получается, ура. Запустил настоящие прогоны - на неделю счета. Сделано!

Стал обрабатывать результаты. Так, тут все хорошо, тут прелестно, a тут гораздо лучше, чем надеялся. Ну-с, посмотрим на количество землекопов и... батюшки, даже не полтора, а минус сто двадцать два землекопа!

Ну да, ошибку в алгоритме нашел и исправил. Но теперь получается, что все прогоны с нуля повторять надо.

И главное, такая сволочная ошибка, что на пробных прогонах не могла проявиться - по техническим причинам...

Разумеется, по-хорошему, пока шел счет, надо было на промежуточные результаты смотреть внимательно. Но уж больно на пробах все было хорошо.

Date: 2009-11-19 08:14 pm (UTC)
From: [identity profile] vadim-i-z.livejournal.com
Интересно поймет ли нынешнее поколение заголовок и про землекопов?! Я-то понял.

Date: 2009-11-20 03:25 am (UTC)

Date: 2009-11-19 08:25 pm (UTC)
From: [identity profile] alexey-ivanov.livejournal.com
Не напрасно говорят, что когда с первого раза всё хорошо - это очень подозрительно. :)

Date: 2009-11-19 09:11 pm (UTC)
From: [identity profile] profpr.livejournal.com
Очень давно мой знакомый занимался моделированием пищеварительной системы. Закончил программу, сделал прогон, пошел хвастаться: у него получились колебания об"ема проходящей пищи, "глотки". Бедняга...

Date: 2009-11-20 03:27 am (UTC)
From: [identity profile] scholar-vit.livejournal.com
А что там было на самом деле?

Date: 2009-11-20 03:37 am (UTC)
From: [identity profile] profpr.livejournal.com
Шаг по времени неправильно установил в условно-устойчивой разностной схеме :-)

Date: 2009-11-20 04:22 am (UTC)
From: [identity profile] scholar-vit.livejournal.com
Это была аксиома в ранних экспериментах по измерению гравитационных волн: любая ошибка порождает мощные гравитационные волны.

Date: 2009-11-19 09:33 pm (UTC)
From: [identity profile] ivan-gandhi.livejournal.com
А как насчёт юниттестов?

Date: 2009-11-19 09:43 pm (UTC)
From: [identity profile] nec-p1us-u1tra.livejournal.com
Юнит-тесты тут просто не в кассу. Они тестируют предсказуемость на некотором наборе данных да контрактованность интерфейсов. А у меня например в "олимпиадных" эйлеровских задачах были например алгоритмические ошибки, причем такие что скажем на десятках тысяч натуральных чисел (считаемых программой за секунды, вручную за минуты проверяемых) все идеально, а где-то в районе сотен тысяч, проверяемых руками за десятки минут -- расхождение.

А тут в самом посте, если внимательно прочесть, сказано "ошибку в алгоритме".

Date: 2009-11-22 12:01 am (UTC)
From: [identity profile] ivan-gandhi.livejournal.com
Всех случаев не предусмотришь, но если кусочки хорошо вылизаны (о чём свидетельствуют юниттесты), то ведь и интеграция может быть оттестирована уже отдельно - так что весь этот ужас, при котором получаются минус землекопы, легко локализуется добавлением юниттестов. Которые да, всех случаев не предусмотрят.

Date: 2009-11-20 03:32 am (UTC)
From: [identity profile] scholar-vit.livejournal.com
Как правильно заметил [livejournal.com profile] nec_p1us_u1tra, юниттесты хороши многим, но ошибки в алгоритме они ловят далеко не всегда (хотя и ловят иногда). В данном случае я просто не подумал о возможности некоей хитрой ситуации, которая возникает крайне редко. Ну да, теперь я могу вставить ее в тест - но если бы я подумал о ней, когда тестировал, то я бы и в алгоритме её предусмотрел, верно?

Date: 2009-11-21 11:55 pm (UTC)
From: [identity profile] ivan-gandhi.livejournal.com
Да это всё понятно, конечно.

Date: 2009-11-19 11:21 pm (UTC)
From: [identity profile] roman_sharp.livejournal.com
Напомнило...

1) В старых добрых Sid Meyer's Pirates сумма денег персонажа по всей видимости имела верхним пределом верхний предел integer 32768 (для солидности суммы к этому числу дорисовывался нолик). Игрок же при определенном везении и экспериментах с save-load мог запросто набрать больше. После чего вся система игровых данных шла в совершенный разнос: например, в бою на твоем корабле оказывалось -8 человек, а при попадании в него залпа вражеского корабля их становилось -16.


2) Я все вспоминаю, как я нашел ошибку в алгоритме нашего преподавателя, академика. При определенных исходных векторах алгоритм зацикливался, - очередная итерация выдавала совершенно те же векторы. Ошибки в реализации алгоритма не было - я проверил все вручную на калькуляторе. Обсуждение с партнером по курсачу свелось к "Рома, ты же умный, ты разберешься, сделай что-нибудь". Идея подойти к преподавателю с заявлением об ошибке в алгоритме не рассматривалась нами как здравая, - и тогда был предпринят другой шаг, корректировка программы расчета ;)

Ну, кто скажет, какая? :)

Date: 2009-11-20 04:19 am (UTC)
From: [identity profile] scholar-vit.livejournal.com
Добавляли случайные смещения к повторяющимся векторам?

Date: 2009-11-20 07:00 pm (UTC)
From: [identity profile] roman_sharp.livejournal.com
Нет, совсем сердито ;) Дописал сравнение ввода и результата итерации, и в случае их совпадения с определенной точностью - выдачу полученного как конечного результата.

Date: 2009-11-19 11:25 pm (UTC)
From: [identity profile] cheeha.livejournal.com
Знакомо, сочувствую. :))

Date: 2009-11-20 02:36 am (UTC)
From: [identity profile] dmpogo.livejournal.com
> Но теперь получается, что все прогоны с нуля повторять надо.

Big deal, my colleagues just run 250 CPUs for month and a half and then realized that they were writing out the wrong stuff ...

Date: 2009-11-20 04:20 am (UTC)
From: [identity profile] scholar-vit.livejournal.com
И небось на деньги налогоплательщиков :)

Date: 2009-11-20 09:40 pm (UTC)
From: [identity profile] dmpogo.livejournal.com
В конечном счете - конечно

да, досадно, но ...

Date: 2009-12-18 02:30 pm (UTC)
From: [identity profile] dr-trollin.livejournal.com
да, досадно, :)
но хоть не реального времени задача и то лепско :)

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

Re: да, досадно, но ...

Date: 2009-12-18 05:51 pm (UTC)
From: [identity profile] scholar-vit.livejournal.com
Стыдно признаться, но ничего специального для счета не использую. Все пишу сам. Сложные кусочки вычислений - на C (даже, увы на фортране, когда мне нужен lapack), обвязки - Perl и make, и прочие вещи.

То есть типичный случай с простыми вычислениями выглядит так:

1. Я вставляю в TeXовский файл \includegraphics{analysis/234-12-17.eps}

2. Makefile строит dependency и понимает, что нужна картинка analysis/234-12-17.eps

3. Make вызывает перловский скрипт, который осознает, что мне нужен анализ с параметрами 234, 12 и 17.

4. Этот скрипт прогоняет анализ - на C, Perl, что придется и создает файл с данными.

5. Make вызывает gnuplot и создает рисунок

6. Make строит pdf с отчетом.

Re: да, досадно, но ...

Date: 2009-12-19 07:10 pm (UTC)
From: [identity profile] dr-trollin.livejournal.com
ыч как!

нет,- в общем-то поддерживаю.
сам таким был, когда свой рентген расплавов надо было считать.

просто теперь пакетов поразвелось всяцких...
думал, что в вашенских краях оные эксплуатируют шустро.

но, в принципе ежели,- таким образом возможно что и удобнее будет ибо напороть тяжелее, но (как показал опыт) таки тож проруха,- да... -- бывает.

Re: да, досадно, но ...

Date: 2009-12-19 08:36 pm (UTC)
From: [identity profile] scholar-vit.livejournal.com
Специализированных пакетов очень много, верно. Но на то, чтобы изучить, как они работают, нужно время. А на то, чтобы понять, где там засады и проблемы - очень много времени.

У нас есть "специалисты по пакету XXX". Они несколько лет моделируют именно с данным пакетом, и хорошо знают, где там что.

Кстати, нашел старый пост про свой инструментарий: http://scholar-vit.livejournal.com/136432.html

Date: 2010-02-04 02:55 pm (UTC)
From: [identity profile] al-zatv.livejournal.com
слушай, а у меня вопрос немного не по теме, но по программированию
http://al-zatv.livejournal.com/137474.html
если есть чего посоветовать, буду признателен.

Profile

scholar_vit: (Default)
scholar_vit

January 2019

S M T W T F S
  12345
678 9101112
13141516171819
20212223242526
2728293031  

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Feb. 15th, 2026 12:18 am
Powered by Dreamwidth Studios