Этот скрипт в качестве примера помогает вам использовать Оптимизировать задачу Live Editor для решения оптимизации или уравнения. Измените скрипт для своей собственной проблемы.
Скрипт решает нелинейную задачу оптимизации с нелинейными ограничениями.
Как правило, у вас есть данные или значения, чтобы передать решателю. Поместите те значения во входной раздел (где вы видите x0
) и запустите раздел путем выбора Section> Run Section или нажатия Control+Enter
.
Установите начальную точку x0
и масштабируйте a
для оптимизации.
x0 = [2;1]; a = 100;
Поместите x0
значение и любые другие проблемные данные в рабочую область путем выполнения этого раздела перед продолжением.
Эта задача имеет объективные и нелинейные ограничительные включенные функции. Чтобы изменить эти функции, отредактируйте функциональные списки ниже задачи.
Чтобы изменить ограничения, выберите соответствующие типы ограничения и введите значения в поля ввода. Вы можете должны быть ввести значения в раздел, содержащий x0
выше, и запуск раздел, чтобы поместить значения в рабочую область.
Запустите задачу путем нажатия на чередуемую панель налево, или путем выбора Run или Section> Run Section, или путем нажатия Control+Enter
.
Local minimum found that satisfies the constraints. Optimization completed because the objective function is non-decreasing in feasible directions, to within the value of the optimality tolerance, and constraints are satisfied to within the value of the constraint tolerance. <stopping criteria details>
Optimize
сохраняет решение переменной solution
рабочей области, и сохраняет значение целевой функции в решении переменной
objectiveValue
рабочей области. Вы видите и изменяете эти имена переменных наверху
Optimize
задача.
Просмотрите эти переменные.
solution
solution = 2×1
1.1413
1.3029
objectiveValue
objectiveValue = 0.0200
Просмотрите нелинейные ограничительные значения функции в решении.
[ccons,ceqcons] = constraintFcn(solution)
ccons = 1×2
-2.0000 -0.0000
ceqcons = []
Следующий код создает целевую функцию. Измените этот код для своей проблемы.
function f = objectiveFcn(x,a) f = a*(x(2) - x(1)^2)^2 + (1 - x(1))^2; end
Следующий код создает ограничительную функцию. Измените этот код для своей проблемы.
function [c,ceq] = constraintFcn(x) c(1) = x(1)^2 + x(2)^2 - 5; c(2) = 3 - x(1)^2 - x(2)^2; ceq = []; % No equality constraints end