Поиск корня#

Одной из распространённых категорий оптимизационных задач, решаемых в инженерной практике, является обратная задача, заключающаяся в определении значения \(x\), при котором выполняется равенство (1).

(1)#\[g(x) = \text{const}\]

Каноническая форма равенства (1), известная из школьного курса математики для решения задачи поиска нулей функции, имеет вид \(f(x) = 0\).

Подсказка

Следует напомнить о прямой задаче, заключающейся в вычислении значения \(y = f(x)\) при известном параметре \(x\).

В рамках данного урока будет рассмотрена типовая постановка задачи поиска корня целевой функции, в процессе выполнения которого вы познакомитесь:

  1. С примерами обратных задач в инженерных расчётах;

  2. С простой постановкой задачи поиска корня для получения навыков решения обратных задач с помощью оптимизатора платформы REPEAT VISION.

1.  Постановка задачи поиска корня целевой функции#

Задача поиска корня формулируется следующим образом:

(2)#\[\begin{split}\left\{ \begin{aligned} & f(x) = g(x) - \text{const} = 0 \\ & x \in \chi \end{aligned} \right.\end{split}\]

В задаче поиска корня (2) используются следующие обозначения:

  • \(f\) - целевая функция, у которой нужно найти корень \(x\) при \(f(x) = 0\);

  • \(g\) - функция, у которой нужно найти \(x\) при \(g(x) = \text{const}\);

  • \(\text{const}\) - известное значение функции \(g\);

  • \(x\) - параметр целевой функции (или расчётная точка),

  • \(\chi\) - множество допустимых значений параметра функции.

Значение \(x\), которое принадлежит \(\chi\) и при котором целевая функция \(f(x) = 0\), является корнем уравнения (2), обозначаемым \(x^{*}\).

В задаче поиска корня (2) параметр \(x\) может быть как скаляром, представленным в виде вещественного числа (double в Java), так и вектором, представленным в виде набора \(n\) вещественных чисел (3).

(3)#\[x = [x_1, x_2, ..., x_n]\]

2.  Примеры обратных задач#

Техническое задание (ТЗ) на проектирование новой системы может включать задачу определения заранее неизвестных значений параметров системы на предмет соответствия требуемым технологическим характеристикам системы. Например, определить диаметр дроссельной шайбы - \(x [мм]\) в (1) - для обеспечения требуемого расхода воды - \(\text{const} [кг/с]\) в (1) - в трубопроводной системе. Такое требование ТЗ определяет постановку обратной задачи и необходимость поиска корня \(x\) для решения задачи.

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

Задача

Области моделирования

Определение требуемого расхода жидкости в трубопроводной системе

Гидравлика, Теплогидравлика, Пневматика

Выбор насоса для трубопроводной системы

Гидравлика, Теплогидравлика, Пневматика

Определение номинала токоограничивающего резистора светодиода

Электроника

Обратные задачи из таблицы выше часто не имеют точного аналитического решения.

Ранее обратные задачи решались с помощью проведения расчётного эксперимента над моделью системы. Расчётный эксперимент - процесс многократного выполнения моделирования системы для решения прямой задачи. В начале каждой итерации расчётного эксперимента изменяются входные параметры \(x\) модели, а в завершении моделирования собираются результаты \(f(x)\) расчёта. Цикл экспериментов завершается при выполнении равенства (1) с заданной погрешностью. Такой подход обладает рядом недостатков для решения обратной задачи:

  1. Инженер в ручном режиме изменяет входные параметры \(x\), запускает модель на расчёт, выполняет анализ результатов и проверяет равенство (1);

  2. Затрачивается много рабочего времени на поиск решения \(x^{*}\) задачи;

  3. Инженер эмпирически регулирует шаг изменения параметров \(x\), часто не обеспечивая точного решения \(x^{*}\) задачи;

Для устранения приведённых выше недостатков необходимо использовать современные методики решения обратных задач, которыми обладает оптимизатор платформы REPEAT VISION.

В рамках следующего раздела будет рассмотрена типовая постановка задачи поиска корня целевой функции.

3.  Пример обратной задачи#

В данном разделе рассматривается функция вида \(g(x) = \sqrt[2]{x}\) при \(x \in [0; 400]\). Необходимо найти \(x\) функции \(g\), при котором \(g(x) = 15\). Такая простая постановка обратной задачи позволит сосредоточиться на получении навыков работы с оптимизатором платформы REPEAT VISION.

../../../_images/opt_simple_sqrt_root.png

Функция, корень которой необходимо найти#

На графике выше приняты следующие обозначения.

Линии

Описание

Синяя линия

Функция \(g(x) = \sqrt[2]{x}\), \(x \in [0; 400]\)

Оранжевая линия

Вспомогательная функция \(y = 15\) для обозначения, где необходимо найти \(x\) на пересечении с \(g(x)\)

3.1.  Аналитическое решение#

Для задачи \(\sqrt[2]{x} = 15\) известно точное аналитическое решение, \(x^{*}= 225\).

3.2.  Создание модели в REPEAT VISION#

Для создания модели для поиска корня целевой функции на платформе REPEAT VISION требуется преобразовать обратную задачу к виду (2). Таким образом исходная задача поиска \(x\) примет вид \(f(x) = \sqrt[2]{x} - 15\). Оптимизатор будет выполнять поиск корня целевой функции, проверяя равенство \(f(x) = 0\).

Для подготовки модели необходимо добавить в новый проект с именем, например, Квадратный корень, 4 блока библиотеки Автоматика.

../../../_images/opt_sqrt_root_repeat_vision.png

Модель поиска корня целевой функции в REPEAT VISION#

Сначала в проект добавляется блок №1 Константа со свойством Значение константы, равным 0. Данный блок будет использоваться в качестве параметра \(x\) (см. уравнение (2)) целевой функции \(f(x)\).

Затем добавляется блок №2 Возведение в постоянную степень, со свойством Показатель степени, равным 0.5. Данный блок будет использоваться для извлечения квадратного корня, \(\sqrt[2]{x}\).

Далее в проект добавляется блок №3 Сравнивающее устройство. Данный блок служит для вычисления целевой функции \(\sqrt[2]{x} - 15\) вместе с блоком №4. В соответствии с постановкой задачи поиска корня (2) данный блок будет использоваться оптимизатором для проверки равенства \(f(x) = 0\).

В завершении подготовки модели необходимо добавить блок №4 Константа со свойством Значение константы, равным 15 в соответствии с постановкой задачи.

Важно

В каждой задаче поиска корня \(x\) целевой функции \(f(x) = g(x) - \text{const} = 0\) необходима пара блоков, выполняющих данную операцию:

  1. Константа для фиксации значения \(\text{const}\), которую функция \(g(x)\) должна принять;

  2. Сравнивающее устройство для выполнения операции вычитания \(g(x) - \text{const}\) с целью проверки оптимизатором равенства \(f(x) = 0\) при поиске корня целевой функции.

Для данной стационарной постановки задачи достаточно будет использовать следующие настройки проекта:

Время моделирования \([с]\)

Шаг интегрирования \([мс]\)

Шаг дискретизации \([мc]\)

0.1

50

50

В следующем разделе выполняется настройка оптимизатора для получения решения задачи поиска корня.

3.3.  Настройка оптимизатора#

Для настройки оптимизатора необходимо нажать на иконку Оптимизация на нижней панели.

../../../_images/opt_root_find_select_optimizer.ru.png

Расположение иконки Оптимизация на нижней панели интерфейса REPEAT VISION#

В открывшейся вкладке необходимо применить настройки для решения задачи поиска корня.

Основное#

В разделе Основное необходимо применить следующие настройки.

Оптимизационная задача

Бюджет оптимизации

Обработка нефизичных величин

Поиск корня

25

Завершить оптимизацию с ошибкой в журнале

Бюджет оптимизации - это количество доступных обращений оптимизатора к расчётной модели вычисления целевой функции. Каждый раз, когда алгоритм передаёт целевой функции очередное значение параметра \(x\) и получает в ответ новое значение целевой функции \(f(x)\), то бюджет уменьшается на 1. Когда бюджет исчерпан, поиск корня принудительно останавливается.

Подсказка

Для простых, гладких, непрерывных целевых функций, схожих с квадратичными функциями, достаточно небольшого бюджета (\(10 \leq budget \leq 100\)) для решения задачи поиска корня.

В настройке Обработка нефизичных величин необходимо выбрать Завершить оптимизацию с ошибкой в журнале поскольку в простой модели не будет проблем с вычислением целевой функции, которые могли бы приводить к возникновению ошибок при моделировании. Поэтому нет необходимости в дополнительной обработке результатов вычислений с проверкой на физичность результатов расчёта целевой функции.

Алгоритм оптимизации#

В разделе Алгоритм оптимизации необходимо применить следующие настройки.

Метод поиска корня

Абсолютное отклонение варьируемого параметра

Метод Брента

1e-15

В настройке Метод оптимизационной задачи необходимо выбрать Метод Брента для поиска корня методом Брента, гарантирующего сходимость решения задачи для целевой функции, вычислимой в заданных границах.

Настройке Абсолютное отклонение варьируемого параметра необходимо присвоить значение 1e-15 для фиксации критерия сходимости решения оптимизационной задачи по параметру \(x\).

Примечание

Необходимо отметить, что малое значение 1e-15, близкое к точности вещественного значения типа double в Java, пригодно для Метода Брента и гладких, непрерывных целевых функций.

Настройки параметров#

В настройке Блок вычисления целевой функции, расположенного в разделе Оптимизируемые параметры, необходимо выбрать порт Выход блока №3 Сравнивающее устройство, который выполняет завершающую операцию вычисления целевой функции \(f(x)\).

В настройке Варьируемое свойство блока, расположенного в разделе Варьируемые свойства, необходимо выбрать свойство Значение константы блока №1 Константа. Значение константы блока будет использовано оптимизатором в качестве изменяемого параметра \(x\) для поиска корня целевой функции \(f(x)\) (см. уравнение (2)).

Также необходимо указать границы, в которых выполняется поиск корня. В текущем примере границы целевой функции приняты \(x \in [0; 400]\). Таким образом в поле Минимальное значение необходимо ввести 0, а в поле Максимальное значение необходимо ввести 400.

4.  Запуск оптимизации#

После завершения настройки оптимизатора необходимо запустить оптимизацию. Для запуска оптимизации необходимо нажать на кнопку Оптимизировать.

../../../_images/opt_root_find_run_optimizer.ru.png

Кнопка Оптимизировать для запуска оптимизации#

После нажатия кнопки появятся уведомления о запуске оптимизации и об успешном завершении оптимизации.

../../../_images/opt_find_root_popup_optimizer.ru.png

Уведомления этапов процесса поиска корня#

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

4.1.  Анализ результатов оптимизации#

Результаты оптимизации доступны в соответствующем разделе для выполнения анализа после успешного завершения поиска корня.

../../../_images/opt_root_result_optimizer.ru.png

Результаты поиска корня#

Оптимизатор определил корень целевой функции \(f(x)\) при значении параметра \(x\), равным 225, что соответствует точному аналитическому решению.

Далее необходимо нажать на кнопку Применить все для передачи корня целевой функции \(x^{*} = 225\) свойству Значение константы блока №1 Константа. После нажатия кнопки появится уведомление об успешном применении оптимальных свойств.

../../../_images/opt_accept_all_root_results_optimizer.ru.png

Применение к модели оптимальных свойств#

В завершении анализа необходимо выполнить запуск на расчёт модели со значением корня \(x^{*} = 225\) и получить результат расчёта на порте Выход блока №3 Сравнивающее устройство, который выполняет завершающую операцию вычисления целевой функции \(f(x)\).

../../../_images/opt_root_result.ru.png

Значение целевой функции при x = 225.#

В результате расчёта получено:

  • Значение целевой функции \(f(x^{*}) = 0\) на порте Выход блока №3,

  • Значение функции \(g(x^{*}) = 15\) на порте Вход 1 блока №3

при значении параметра \(x^{*} = 225\), что соответствует точному аналитическому решению.

5.  Выводы#

В результате выполнения ознакомительного урока по решению задачи поиска корня, вы узнали:

  1. О понятии обратной задачи и её месте в оптимизации;

  2. О способе преобразования обратной задачи к задаче поиска корня;

  3. О целевой функции для решения задач поиска корня;

  4. На простом примере освоили оптимизатор платформы REPEAT VISION для решения задач поиска корня.