控制中的LMI/点击此处继续/YALMIP
外观
YALMIP
本书主要使用的工具。本章将提供一些使用Yalmip解决优化问题的示例。
YAMLIP的下载链接:[1]。点击顶部的“下载”并按照文件中的说明操作。YALMIP可以在没有额外软件支持的情况下解决一些简单问题。
对于优化问题,我们需要定义约束条件、目标函数、变量。
例如,为了找到一条直线来分离图中的两个数据,并使实现误差最小。
% It's good practice to start by clearing YALMIPs internal database
% Every time you call sdpvar etc, an internal database grows larger
yalmip('clear')
% Define variables
x = sdpvar(10,1);
% Define constraints
Constraints = [sum(x) <= 10, x(1) == 0, 0.5 <= x(2) <= 1.5];
for i = 1 : 7
Constraints = [Constraints, x(i) + x(i+1) <= x(i+2) + x(i+3)];
end
% Define an objective
Objective = x'*x+norm(x,1);
% Set some options for YALMIP and solver
options = sdpsettings('verbose',1,'solver','quadprog','quadprog.maxiter',100);
% Solve the problem
sol = optimize(Constraints,Objective,options);
% Analyze error flags
if sol.problem == 0
% Extract and display value
solution = value(x)
else
display('Hmm, something went wrong!');
sol.info
yalmiperror(sol.problem)
end