lsqlin Решающее устройствоВ этом примере показано, как использовать задачу «Оптимизировать интерактивный редактор» для решения проблемы ограниченных наименьших квадратов.
Задача в этом примере - найти точку на плоскости x1 + 2x2 + 4x3 = 7, ближайшую к началу координат. Самый простой способ решения этой задачи - минимизировать квадрат расстояния от точки x = (x1, x2, x3) на плоскости до начала координат, что возвращает ту же оптимальную точку, что и минимизация фактического расстояния. Поскольку квадрат расстояния от произвольной точки (x1, x2, x3) до начала координат x22 + x32, задачу можно описать следующим образом:
+ x32,
с учетом ограничения
| x1 + 2x2 + 4x3 = 7. | (1) |
Функция f (x) является целевой функцией, а x1 + 2x2 + 4x3 = 7 является ограничением равенства. Более сложные проблемы могут содержать другие ограничения равенства, ограничения неравенства и ограничения верхней или нижней границы.
Настройте проблему с помощью lsqlin решатель в задаче Оптимизировать интерактивный редактор (Optimize Live Editor).
Создайте новый сценарий в реальном времени, нажав кнопку «Создать сценарий в реальном времени» в разделе «Файл» на вкладке «Главная».

Вставка задачи «Оптимизировать интерактивный редактор». Перейдите на вкладку Вставка, а затем в разделе Код выберите Задача > Оптимизировать.
В разделе Задание типа задачи выберите Цель > Наименьшие квадраты и ограничения > Линейное равенство.
Задача выбирает lsqlin в качестве рекомендуемого решателя.
Получение данных C и d в рабочем пространстве MATLAB ® нажмите кнопку «Разрыв сечения» на вкладке «Вставка». В новом разделе введите следующий код.
C = eye(3); d = zeros(3,1);
Задайте матрицу и вектор ограничений линейного равенства.
Aeq = [1 2 4]; beq = 7;
Запустите раздел, нажав Ctrl + Enter. При этом переменные помещаются в рабочую область.
В разделе Select problem data задачи установите соответствующие значения для записей.

Запустите решатель, нажав Ctrl + Enter. Просмотр сообщения о выходе.

Чтобы найти решение, посмотрите в верхней части задачи.

Решатель возвращает переменные solution и objectiveValue в рабочую область MATLAB.
Вставьте разрыв раздела под задачей. Разместите эти линии в новом разделе.
disp(solution) disp(objectiveValue)
Запустите раздел, нажав Ctrl + Enter.
![solution = [1/3, 2/3, 4/3]. objective = 7/3.](optimizelet_lsqlin_results.png)