| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Алгоритмы > Определение точки стабилизации процесса |
| Автор: tt0100 1.12.2011, 23:05 |
Такая задачка. нужно автоматизировать процесс определения точки стабилизации процесса:![]() ну или та что через одну следующая сходу чето ничего не придумал. т.к. разбросы разные бывают а то когда он стабилизируется - он не к нулю а к какомуто маленькому числу да и то некрасиво. т.е. сходится с колебаниями но нужно найти именно ту точку. пусть даже и несразу число к которому сходится тоже заранее неизвестно. т.е. если отсекать по дельте изменения - непонятно как эту дельту/порог "налету" определить. или по какому количеству точек чтонибудь там вычислить и сказать - вот после этой точки процесс стабилизировался. в общем чето я не понимаю в этой задачке...) |
| Автор: VictorTsaregorodtsev 2.12.2011, 15:33 |
| Киньте ещё картинок - там где с колебаниями. PS. Могу сделать прогу. |
| Автор: Фантом 2.12.2011, 16:24 |
| Странный, возможно, алгоритм, но в таких случаях срабатывает. Совершаем несколько измерений (предполагая, что за это время процесс точно не успеет стабилизироваться). Затем считаем модули разностей между двумя последовательными измерениями и аппроксимируем зависимость этих разностей от номера измерения прямой. Затем вычисляем номер измерения, при котором зависимость формально даст нулевую разность. Если это не следующее же измерение - повторяем ту же процедуру при получении каждого очередного измерения, это позволит уточнить первоначальную оценку. |
| Автор: _Y_ 2.12.2011, 17:30 |
| ИМХО: по последним N точкам считаем прямую Y=AX+B (например, методом наименьших квадратов). Процесс считаем стабилизировавшимся если |A|<Eps. При этом, чтобы избежать проблем с осцилляцией (например, когда начало и конец интервала находятся внизу прямой, а середина вверху и, как результат, A=0) учитываем коеффициент корреляции для полученной прямой; т.е. если корреляция плохая - процесс еще не стабилизировался. В результате алгортм простейший, но надо правильно (подходяще к физике вашего процесса) выбрать N, Eps и граничное значене коеффициента корреляции. |
| Автор: _Y_ 2.12.2011, 20:40 |
A что мешает преобразовать координаты? Да и вариантов метода наименьших квадратов немеряно. |
| Автор: миг 3.12.2011, 13:24 |
| _Y_, может имеется ввиду. Когда процесс стабилизируется наверно график функции не обязательно прямая линия. в этом случаи можно с такой же легкостью записать y=cos(x) или любую другую функцию. tt0100, Первое, что пришло в голову после чтение твоей задачи найти расстояния двух последних отрезков. Вычесть эти расстояния и получить eps. Далее разности соседних отрезков сравниваем с eps(которое получили от первого вычитания).. Если расхождение больше, чем на 5%-10%, то процесс перестал быть стабилизированным. |
| Автор: _Y_ 3.12.2011, 13:32 |
| миг, судя по графику, стабильность процесса определяется именно как горизонтальная прямая линия. С допуском на ошибку измерения и соответствующий разброс точек, разумеется. Но, конечно, существуют всякие автоосциллирующие процессы, которые на прямую никогда не выходят. Поэтому и задача должна решаться с учетом физики происходящего. Тогда и надо думать чем стабильное состояние аппроксимировать. Косинусом например. Но ИМХО если простая формула работает, не стОит использовать сложную. Поэтому сначала надо решить что волнами (второй график - маленькие такие волночки |
| Автор: VictorTsaregorodtsev 3.12.2011, 15:52 |
| Так никто и не предложил ту же идею, которой воспользовался бы я сам. Идея (алгоритм) - из книги 99г новосибирского ученого и из его более ранних работ. Одни могут продолжить придумывать алгоритм. Другие - попробовать "угадать мелодию" (книгу) по названным трём нотам (по году выпуска книги, местожительству и периоду научной деятельности автора книги). Третьи могут заказать мне прогу. |
| Автор: tt0100 3.12.2011, 17:13 |
... очень неплохо. на 2х наборах дало плюс/минус одну точку - норм. только там 55% процентов). на третем дало 1. ![]() хотя хотелосьбы 2. но это уже детали. там можно чуток доработать и будет ок. .... единственное на последок хотелось узнать есть какиенить теории ну или там формулы или метрики чтобы более строго в статистическом смысле было. это просто чтобы кругозор расширить. ... имеется в виду близкие по смыслу) ссылки на учебники по статистике не нужны) "купи слона". непроверенные алгоритмы мне както неочень. ну а так как я не давал тебе данных - гарантий нет. да и еслибы давал - присылай прогу. я потесчу ее. и если все норм - тогда подумаю. хотя вроде уже более менее нормальное решение найдено.... да и в принципе не факт что ты мне его и не впаришь |
| Автор: Pavia 3.12.2011, 21:19 |
| tt0100, Устойчивость системы уравнений определяется производной, там ещё много вариантов. Подробнее советую почитать про устойчивость систем. Матанализ. В основном описано в ТАУ(теория автоматического управления). Также в теории обработки сигналов. Правда у вас тут устойчивость не системы, а скорее дифференциального уравнения. А вообще теорию творим мы. Как говорил один человек наука там где есть формулы или математика. Вот опиши это математически и будет тебе научно. Для этого надо дать формальное определение той области в которой рассмотреть, описать свойства. И вывести теоремы которые близки к твоей. |
| Автор: _Y_ 3.12.2011, 22:55 | ||
Может и так. Но всегда ли это нужно? Анекдот старый напомнило (не в обиду, а просто для развлечения расскажу) Поставлена задача - выключить компьютер пользуясь только мышью. Программист: пользуясь толко мышью пишет-кликает-перетаскивает создает системную утилиту выключения компьютера. Запускает. Задача выполнена. Инженер: берет мышь и нажимает ею кнопку питания. |
| Автор: Pavia 3.12.2011, 22:58 |
| _Y_, Я с этим согласен. |
| Автор: миг 4.12.2011, 00:26 |
| Pavia, Угу. Отдаленно напоминает затухающие колебания системы, которые описываются диффурами. |
| Автор: _Y_ 4.12.2011, 20:15 |
| миг, вообще-то подобные автозатухающие колебания очень типичны для внешней регулировки процессов обладающих инерцией. Самый известный пример - регулирование нагревателя. Если нагреватель просто отключать с помощью реле по достижении граничной температуры, на плато кривая может и не выйти никогда. Причина - время нужное на теплоперенос между нагревателем и датчиком температуры. Т.е. нагреватель уже бы пора отключить, но теплоперенос занимает время. Поэтому к моменту когда датчик посылает сигнал о достижении температуры нагреватель уже перегрел систему. Для регулировки таких систем существует алгоритм PID. В языках, предназначенных для управления процессами, этот алгоритм даже в библиотеках имеется. Но вопрос о регулировании системы не стоял и я признаю что пишу полный ОФФ |
| Автор: миг 6.12.2011, 17:34 |
| _Y_, Я немножко другое имел ввиду. Есть такой предмет называется теория колебаний. Вот там системой называется тело подвешенное на пружине. После воздействии на тело силой. Тело какое-то время колеблется. Такой характер колебаний можно описать дифф уравнением второго порядка. |
| Автор: _Y_ 6.12.2011, 19:04 | ||
Ну флеймить так флеймить
Сколь я понимаю, самозатухающие колебания типа пружины затухают благодаря дествию постоянных факторов (трение в данном случае). Эти факторы либо совсем уж постоянны, либо линейно зависят от скорости движения (переход от ламинарного к турбулентному треную об воздух вряд-ли учитывается |
| Автор: миг 6.12.2011, 20:04 | ||||
вообще то там демпфер успокаивает пружину. Хотя можно и трение учесть. А величина демпфирования(которая влияет на затухания колебаний) может меняться в зависимости от других параметров(например времени).
Это не проблема. Достаточно знать по какому закону изменяется сила во времени(можно даже записать, что в начальный момент времени сила изменяется по косинусу до времени t, а после этого времени сила либо отсутствует, либо меняется по другому закону). Даже существуют параметрические колебания. В которых учитывается изменение не только внешней силы, но и физические параметры самой системы например массы тела, жесткости пружины и т.д. Правда иногда приходиться решать системы из дифф уравнений второго порядка. |
| Автор: Pavia 6.12.2011, 20:14 | ||
Решать не проблема. Компьютер легко справляется. А вот с оставлением системы. Если знаешь как это делается, то легко. А вот для не подготовленного человека это выглядит трудным. У нас в вузе целый курс был хорошо все по полочкам в плоть до мелочей разобрали. |
| Автор: _Y_ 7.12.2011, 12:15 | ||
А я согласная. Если знать |
| Автор: 1000000dollars 8.12.2011, 09:57 |
| А как насчёт такого варианта: обрисовываем точки минимально возможным прямоугольником, и двигая его левую границу вправо очень внимательно смотрим как меняется площадь. Меняется быстро - процесс не стабилизировался, меняется медленно - стабилизировался. UPD: собственно можно и не прямоугольник, а выпуклый многоугольник. |
| Автор: миг 8.12.2011, 19:22 |
| 1000000dollars, тогда уж проще замерять расстояние от точек до горизонтальной оси. |
| Автор: 1000000dollars 8.12.2011, 23:17 |
Проще, но если процесс стабилизируется к какой-то синусоиде с достаточно большой амплитудой, то расстояние не будет показателем, в то время как скорость изменения площади многоугольника вполне отловит такую стабилизацию. |
| Автор: _Y_ 9.12.2011, 15:48 |
| 1000000dollars, мне кажестся, что скорость изменения площади тоже будет осциллировать, хоть и меньше. Поэтому в алгоритме разницы никакой не будет - только разные граничные значения при которых осциллирующая кривая будет считаться горизонтальной прямой. ЗЫ: Но я не проверял - это только догадка |
| Автор: 1000000dollars 10.12.2011, 01:09 |
Безусловно будет, но осциллировать она будет меньше и плавнее в случае стабилизации процесса, и при этом будет реагировать на резкие изменения протекания процесса. То есть на первый взгляд получается достаточно адекватная (на мой взгляд) оценка. Так как в теме так и не было дано формального понятия "стабилизации процесса" оценивать тот или иной способ обнаружения точки стабилизации тоже возможным не представляется. Плюс к тому, процессы бывают разные и в общем случае нельзя сказать, что если на какой-то момент времени процесс выглядит "стабилизировавшимся", то он таковым и является. Например медленное охлаждение чистой воды: вода охлаждается и до некоторых (достаточно больших) отрицательных температур, средняя скорость молекул снижается плавно, но потом внезапно появляется центр кристаллизации и вся вода очень быстро превращается в лёд, то есть скорость молекул падает очень резко. И что считать за точку стабилизации процесса? |