secondordercone
说明
secondordercone
函数创建表示不等式的二阶锥约束
(基于输入矩阵 A
、b
、d
和 gamma
)。
示例
单锥约束
要使用二阶锥约束设立问题,请创建一个二阶锥约束对象。
A = diag([1,1/2,0]); b = zeros(3,1); d = [0;0;1]; gamma = 0; socConstraints = secondordercone(A,b,d,gamma);
创建一个目标函数向量。
f = [-1,-2,0];
该问题没有线性约束。为这些约束创建空矩阵。
Aineq = []; bineq = []; Aeq = []; beq = [];
对 x(3)
设置上界和下界。
lb = [-Inf,-Inf,0]; ub = [Inf,Inf,2];
使用 coneprog
函数求解该问题。
[x,fval] = coneprog(f,socConstraints,Aineq,bineq,Aeq,beq,lb,ub)
Optimal solution found.
x = 3×1
0.4851
3.8806
2.0000
fval = -8.2462
解的分量 x(3)
位于其上界。锥约束在解处处于活动状态:
norm(A*x-b) - d'*x % Near 0 when the constraint is active
ans = -2.5677e-08
多个锥约束
要设立一个具有多个二阶锥约束的问题,请创建一个约束对象数组。为了节省时间和内存,请先创建最高阶指数约束。
A = diag([1,2,0]); b = zeros(3,1); d = [0;0;1]; gamma = -1; socConstraints(3) = secondordercone(A,b,d,gamma); A = diag([3,0,1]); d = [0;1;0]; socConstraints(2) = secondordercone(A,b,d,gamma); A = diag([0;1/2;1/2]); d = [1;0;0]; socConstraints(1) = secondordercone(A,b,d,gamma);
创建线性目标函数向量。
f = [-1;-2;-4];
使用 coneprog
函数求解该问题。
[x,fval] = coneprog(f,socConstraints)
Optimal solution found.
x = 3×1
0.4238
1.6477
2.3225
fval = -13.0089
输入参数
b
— 锥的中心
实数向量
d
— 线性边界
实数向量
gamma
— 边界
实数标量
边界,指定为实数标量。gamma
的值越小,对应的约束条件越宽松。
示例: -1
数据类型: double
输出参量
socConstraint
— 二阶锥约束
SecondOrderConeConstraint
对象
二阶锥约束,以 SecondOrderConeConstraint
对象形式返回。将此对象用作 coneprog
求解器的约束。如果您有多个锥约束,请将约束向量传递给 coneprog
;请参阅多个锥约束。
版本历史记录
在 R2020b 中推出
MATLAB 命令
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)