![]() |
|
![]() ![]() ![]() |
|
tt0100 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 1.12.2011 Репутация: нет Всего: нет |
Такая задачка. нужно автоматизировать процесс определения точки стабилизации процесса:
![]() ну или та что через одну следующая сходу чето ничего не придумал. т.к. разбросы разные бывают а то когда он стабилизируется - он не к нулю а к какомуто маленькому числу да и то некрасиво. т.е. сходится с колебаниями но нужно найти именно ту точку. пусть даже и несразу число к которому сходится тоже заранее неизвестно. т.е. если отсекать по дельте изменения - непонятно как эту дельту/порог "налету" определить. или по какому количеству точек чтонибудь там вычислить и сказать - вот после этой точки процесс стабилизировался. в общем чето я не понимаю в этой задачке...) |
|||
|
||||
VictorTsaregorodtsev |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 274 Регистрация: 28.7.2006 Репутация: 3 Всего: 8 |
Киньте ещё картинок - там где с колебаниями.
PS. Могу сделать прогу. |
|||
|
||||
Фантом |
|
|||
![]() Вы это прекратите! ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1516 Регистрация: 23.3.2008 Репутация: 2 Всего: 49 |
Странный, возможно, алгоритм, но в таких случаях срабатывает.
Совершаем несколько измерений (предполагая, что за это время процесс точно не успеет стабилизироваться). Затем считаем модули разностей между двумя последовательными измерениями и аппроксимируем зависимость этих разностей от номера измерения прямой. Затем вычисляем номер измерения, при котором зависимость формально даст нулевую разность. Если это не следующее же измерение - повторяем ту же процедуру при получении каждого очередного измерения, это позволит уточнить первоначальную оценку. |
|||
|
||||
_Y_ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1651 Регистрация: 27.11.2006 Репутация: 8 Всего: 34 |
ИМХО: по последним N точкам считаем прямую Y=AX+B (например, методом наименьших квадратов). Процесс считаем стабилизировавшимся если |A|<Eps. При этом, чтобы избежать проблем с осцилляцией (например, когда начало и конец интервала находятся внизу прямой, а середина вверху и, как результат, A=0) учитываем коеффициент корреляции для полученной прямой; т.е. если корреляция плохая - процесс еще не стабилизировался. В результате алгортм простейший, но надо правильно (подходяще к физике вашего процесса) выбрать N, Eps и граничное значене коеффициента корреляции.
-------------------- Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:) |
|||
|
||||
tt0100 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 1.12.2011 Репутация: нет Всего: нет |
![]() да ято прогу и сам написать умею. а вот про что ее писать - непонятно (...
да. я тоже думаю что это через итерации както делается. но млин пока не могу только взвешенные экспоненциально дисперсии в голову лезут.. а критерий когда останавливаться придумать не могу. т.к. оно сходится почти к нулю а критерий "красивости" только дарбина вотсона пытался сделать (когда модуль от того что на графике брал). но он не совсем ту точку что нужно указывал... а прямые это был мой первый вариант) - чето немного не так получается... но фенькс. может еще раз к ним вернусь. раз у других такиеже идеи) ... да там как раз и проблема что эпсилон я не знаю. нужна какато идея откуда ее брать. корреляцию не брал. брал эр-квадрат. но т.к. там наклон близок к нулю - это очень плохой показатель... Это сообщение отредактировал(а) tt0100 - 2.12.2011, 18:54 |
|||
|
||||
_Y_ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1651 Регистрация: 27.11.2006 Репутация: 8 Всего: 34 |
A что мешает преобразовать координаты? Да и вариантов метода наименьших квадратов немеряно. -------------------- Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:) |
|||
|
||||
миг |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 158 Регистрация: 15.9.2008 Репутация: нет Всего: 1 |
_Y_, может имеется ввиду. Когда процесс стабилизируется наверно график функции не обязательно прямая линия. в этом случаи можно с такой же легкостью записать y=cos(x) или любую другую функцию.
tt0100, Первое, что пришло в голову после чтение твоей задачи найти расстояния двух последних отрезков. Вычесть эти расстояния и получить eps. Далее разности соседних отрезков сравниваем с eps(которое получили от первого вычитания).. Если расхождение больше, чем на 5%-10%, то процесс перестал быть стабилизированным. Это сообщение отредактировал(а) миг - 3.12.2011, 14:50 --------------------
Oaks may fall when reeds stand the storm. |
|||
|
||||
_Y_ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1651 Регистрация: 27.11.2006 Репутация: 8 Всего: 34 |
миг, судя по графику, стабильность процесса определяется именно как горизонтальная прямая линия. С допуском на ошибку измерения и соответствующий разброс точек, разумеется.
Но, конечно, существуют всякие автоосциллирующие процессы, которые на прямую никогда не выходят. Поэтому и задача должна решаться с учетом физики происходящего. Тогда и надо думать чем стабильное состояние аппроксимировать. Косинусом например. Но ИМХО если простая формула работает, не стОит использовать сложную. Поэтому сначала надо решить что волнами (второй график - маленькие такие волночки ![]() -------------------- Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:) |
|||
|
||||
VictorTsaregorodtsev |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 274 Регистрация: 28.7.2006 Репутация: 3 Всего: 8 |
Так никто и не предложил ту же идею, которой воспользовался бы я сам.
Идея (алгоритм) - из книги 99г новосибирского ученого и из его более ранних работ. Одни могут продолжить придумывать алгоритм. Другие - попробовать "угадать мелодию" (книгу) по названным трём нотам (по году выпуска книги, местожительству и периоду научной деятельности автора книги). Третьи могут заказать мне прогу. |
|||
|
||||
tt0100 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 1.12.2011 Репутация: нет Всего: нет |
... очень неплохо. на 2х наборах дало плюс/минус одну точку - норм. только там 55% процентов). на третем дало 1. ![]() хотя хотелосьбы 2. но это уже детали. там можно чуток доработать и будет ок. .... единственное на последок хотелось узнать есть какиенить теории ну или там формулы или метрики чтобы более строго в статистическом смысле было. это просто чтобы кругозор расширить. ... имеется в виду близкие по смыслу) ссылки на учебники по статистике не нужны) "купи слона". непроверенные алгоритмы мне както неочень. ну а так как я не давал тебе данных - гарантий нет. да и еслибы давал - присылай прогу. я потесчу ее. и если все норм - тогда подумаю. хотя вроде уже более менее нормальное решение найдено.... да и в принципе не факт что ты мне его и не впаришь |
|||
|
||||
Pavia |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 418 Регистрация: 6.12.2008 Репутация: 11 Всего: 12 |
tt0100,
Устойчивость системы уравнений определяется производной, там ещё много вариантов. Подробнее советую почитать про устойчивость систем. Матанализ. В основном описано в ТАУ(теория автоматического управления). Также в теории обработки сигналов. Правда у вас тут устойчивость не системы, а скорее дифференциального уравнения. А вообще теорию творим мы. Как говорил один человек наука там где есть формулы или математика. Вот опиши это математически и будет тебе научно. Для этого надо дать формальное определение той области в которой рассмотреть, описать свойства. И вывести теоремы которые близки к твоей. |
|||
|
||||
_Y_ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1651 Регистрация: 27.11.2006 Репутация: 8 Всего: 34 |
Может и так. Но всегда ли это нужно? Анекдот старый напомнило (не в обиду, а просто для развлечения расскажу) Поставлена задача - выключить компьютер пользуясь только мышью. Программист: пользуясь толко мышью пишет-кликает-перетаскивает создает системную утилиту выключения компьютера. Запускает. Задача выполнена. Инженер: берет мышь и нажимает ею кнопку питания. -------------------- Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:) |
|||
|
||||
Pavia |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 418 Регистрация: 6.12.2008 Репутация: 11 Всего: 12 |
_Y_, Я с этим согласен.
|
|||
|
||||
миг |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 158 Регистрация: 15.9.2008 Репутация: нет Всего: 1 |
Pavia, Угу. Отдаленно напоминает затухающие колебания системы, которые описываются диффурами.
--------------------
Oaks may fall when reeds stand the storm. |
|||
|
||||
_Y_ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1651 Регистрация: 27.11.2006 Репутация: 8 Всего: 34 |
миг, вообще-то подобные автозатухающие колебания очень типичны для внешней регулировки процессов обладающих инерцией.
Самый известный пример - регулирование нагревателя. Если нагреватель просто отключать с помощью реле по достижении граничной температуры, на плато кривая может и не выйти никогда. Причина - время нужное на теплоперенос между нагревателем и датчиком температуры. Т.е. нагреватель уже бы пора отключить, но теплоперенос занимает время. Поэтому к моменту когда датчик посылает сигнал о достижении температуры нагреватель уже перегрел систему. Для регулировки таких систем существует алгоритм PID. В языках, предназначенных для управления процессами, этот алгоритм даже в библиотеках имеется. Но вопрос о регулировании системы не стоял и я признаю что пишу полный ОФФ ![]() -------------------- Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:) |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Алгоритмы" | |
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Алгоритмы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |