# CotPy
## Cybernetic Overlord's Toolkit "CotPy"
Библиотека для исследования алгоритмов идентификации и адаптивного управления

## Алгоритмы идентификации

1) Метод наименьших квадратов (МНК)
2) Адаптивный метод наименьших квадратов (стандартный и с экспоненциальным забыванием информации)
3) Простейший адаптивный алгоритм
4) Робастные алгоритмы МНК
5) Алгоритм Cipra (Cipra T. Robust smoothing and forecasting procedures)
6) ~~Алгоритм Поляка (робастный и нет)~~

## Метод синтеза закона адаптивного управления

1) Строиться модель объекта:

x(t) = f(x(t-1), u(t-1-tao), a) + e(t), t=1,2,3,...

y(t|a(t)) = f(x(t-1), u(t-1-tao), a(t))

2) Делается прогноз на 1 такт:

y(t+1|a(t)) = f(x(t), u(t-tao), a(t))

3) Процедура посторяется пока в правой части не появиться u(t):

y(t+1+tao|a(t)) = f(y(t+tao|a(t)), u(t), a(t))

4) Прогноз приравнивается к значению желаемой траектории в момент t+1+tao:

y(t+1+tao|a(t)) = x(t+1+tao)*

5) Из полученного равенства находиться u(t)

Если tao = 0, то достаточно сделать прогноз на 1 такт, т.е. на момент t+1.

## Использование

1) Создать модель на основе математического описания объекта
2) Если имеются неизвестные коэффициенты - создать идентификатор
3) инициализировать начальные значения входов, выходов и коэффициентов
4) выбрать алгоритм идетификации
5) Если необходим расчет управляющего воздействия - создать регулятор
6) Синтезировать закон управления
7) В цикле измерять значения выхода объекта, проводить идентификацию
неизвестных коэффициентов и вычислять значение управляющего воздействия.
