Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Оптимизация параметров константной функции
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Математика и Физика
NikolyaN
Здравствуйте уважаемые коллеги!

Возникла не совсем стандартная оптимизационная задача.
Нужно подобрать параметры некоей функции (линеаризирующей температурную характеристику датчика). F(t) -> Const
То есть есть сигнал с датчика, измеренный при нескольких температурах. Есть таблица характеристик термокомпенсирующих элементов. И нужно подобрать параметры дополнительных элементов.
Простейший вариант который пришел в голову и был реализован, вычисляется значение функции в какой-то температурной точке (Tconst). Затем берется сумма квадратов разностей между функцией и функцией в определенной температурной точке Sum((F(t) - F(Tconst)) Pow 2), и методом наименьших квадратов вычисляются параметры. Но результат сильно зависит от того, какая точка была взята за константную, при этом для разных датчиков получается сильно по-разному. Получается, что заранее выбранная константа это неправильно.
То есть собственно задача: оптимизировать параметры чтобы выходное значение функции было максимально приближено к константе при том, что сама константа неопределена и может быть любой.
Может есть какой готовый метод оптимизации, или может кто подскажет как это правильно математически выразить для МНК.
Не знаю насколько прозрачно объяснил. Надеюсь кто в теме - поймет.
RHnd
Извините, но, на мой взгляд, совсем непонятно объяснили. Попробуйте объяснить, что за функция, какие измерения, какие параметры?
NikolyaN
Цитата(RHnd @ Dec 3 2013, 12:13) *
Извините, но, на мой взгляд, совсем непонятно объяснили. Попробуйте объяснить, что за функция, какие измерения, какие параметры?

Я намеренно не приводил здесь всю модель, т.к. на мой взгляд она не должна влиять на метод оптимизации. К тому же модель достаточно запутанная, берутся интерполированные значения для термокомпенсационных элементов из таблиц производителя для определенной температуры, все это подставляется в функцию, перемножается с показаниями датчика. Боюсь, если я тут все это изложу, то количество непонятного только увеличится.
И с другой стороны, если я вдруг пойму, что у меня термокомпенсационная цепочка не совсем правильная и как-то поменяю целевую функцию в оптимизации, то что от этого должен измениться сам метод оптимизации?
Для примера, сильно упрощенная модель. Если сможете предложить метод для нее, то для своей модели надеюсь я его смогу адаптировать.
d(t)*(x1(t)*k1 + x2(t)*k2 + k3) -> Const
d(t) - измеренный сигнал датчика от температуры
x1(t) - значение 1-го термокомпенсационного элемента при температуре снятия показаний датчика (берется из одной таблицы)
k1 - 1-ый оптимизируемый параметр
x2(t) - значение 2-го термокомпенсационного элемента при температуре снятия показаний датчика (берется из другой таблицы)
k2 - 2-ой оптимизируемый параметр
k3 - 3-ий оптимизируемый параметр

Оптимизация должна проводиться по критерию минимального отклонения значения функции во всех снятых температурных точках от какого-то константного значения. Константное значение не определено заранее.
Т.е. идеальный график целевой функции это прямая параллльная оси температуры.
fontp
QUOTE (NikolyaN @ Dec 3 2013, 11:34) *
Может есть какой готовый метод оптимизации, или может кто подскажет как это правильно математически выразить для МНК.
Не знаю насколько прозрачно объяснил. Надеюсь кто в теме - поймет.


Для суммы квадратов нелинейных функций (в частности МНК) действительно есть специальный метод оптимизации. Называется он алгоритм Маркуардта-Левенберга

Сама задача не очень понятна, но в любом случае, вы можете составить сумму квадратов разностей своих нелинейных функций для разных t и эту весовую функцию прооптимизировать по параметрам. Хотя та функция, что вы написали линейна по параметрам, а значит можно сформировать нормальные уравнения и получить решение в замкнутом виде (псевдоинверсия, минимизирующая невязку)
RHnd
Я правильно понимаю, что d(t) - набор измеренных значений сигнала d для разных значений t: t1, t2,..., tn? И аналогично для x1 и x2? И вы ищете такие k1, k2, k3, чтобы функция F(t)=d(t)*(x1(t)*k1 + x2(t)*k2 + k3) имела одно и то же значение для всех t? Скажем, C. Тогда у вас линейная регрессия с 4 неизвестными параметрами: Y=X*Q, Y=0(t), X=[d(t)*x1(t), d(t)*x2(t), d(t), -1], Q'=[k1, k2, k3, C]. Решается в лоб через МНК. Надеюсь, у вас много этих t и сигналы достаточно "частотно богаты".
Tanya
Цитата(NikolyaN @ Dec 3 2013, 14:06) *
Я намеренно не приводил здесь всю модель, т.к. на мой взгляд она не должна влиять на метод оптимизации.

Пора менять взгляды. Вы бы все же изложили свои вопросы и соображения русским языком с разумным использованием слов: модель, оптимизация, параметр, если не хотите получить ответ: тщательнее оптимизируйте модель по параметрам для снижения невязки.
NikolyaN
Цитата(RHnd @ Dec 4 2013, 03:30) *
Я правильно понимаю, что d(t) - набор измеренных значений сигнала d для разных значений t: t1, t2,..., tn? И аналогично для x1 и x2? И вы ищете такие k1, k2, k3, чтобы функция F(t)=d(t)*(x1(t)*k1 + x2(t)*k2 + k3) имела одно и то же значение для всех t? Скажем, C.

Да, это вы абсолютно точно поняли. И главная проблема здесь в том что в качестве С я не могу задать какую-то конкретную величину.
Цитата(RHnd @ Dec 4 2013, 03:30) *
Тогда у вас линейная регрессия с 4 неизвестными параметрами: Y=X*Q, Y=0(t), X=[d(t)*x1(t), d(t)*x2(t), d(t), -1], Q'=[k1, k2, k3, C]. Решается в лоб через МНК.

Правильно ли я понял, что то к чему должна стремиться целевая функция, Вы предлагаете тоже использовать в качестве параметра оптимизации?
Как говорится, все гениальное просто. Теперь удивляюсь почему самому не пришло такое на ум. Спасибо за подсказку, сейчас буду пробовать.
У меня была идея считать кореляцию, между различными температурными точками, но как потом все это привязать к МНК для получения параметров у меня в голове так и не сложилось.
Цитата(RHnd @ Dec 4 2013, 03:30) *
Надеюсь, у вас много этих t и сигналы достаточно "частотно богаты".

Если под "сигналы достаточно частотно богаты" Вы имели в виду присутствие в них белого шума, то он там присутствует, местами даже больше чем хотелось бы http://electronix.ru/forum/style_images/1/...icons/icon1.gif
В качестве эксперимента t можно менять и сигналы снимать хоть через градус, но в последствии при реальном производстве, температурных точек должно быть 4, в крайнем случае 5. Сейчас мне важно понять что данной цепочкой действительно можно скомпенсировать характеристику датчика.
RHnd
Да, правильно поняли.
Частотно богатый - это такой жаргноизм, в системах управления ему соответствует понятие неисчезающего возбуждения (PE condition). В вашем случае, если вы для температуры t1 сформируете вектор X1, для t2 вектор X2, а потом составите матрицу [X1; X2; ...; Xn], то получившаяся матрица должна быть матрицей полного ранга. Это зависит не только от шума в измерениях d, но и от соотношения между табличными значениями x1, x2.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.