SemidefiniteOptimization
SemidefiniteOptimization[f,cons,vars]
求可最小化受半定约束条件 cons 限制的线性目标函数 f 的变量 vars 的值.
SemidefiniteOptimization[c,{a0,a1,…,ak}]
求可最小化受线性矩阵不等式约束条件 限制的量 的向量 .
SemidefiniteOptimization[…,"prop"]
指定应返回解的属性 "prop".
更多信息和选项
- SemidefiniteOptimization 亦称为半定规划 (SDP) 和混合整数半定规划 (MISDP).
- 半定优化是一种凸优化问题,可以用实数、整数或复变量高效全局求解.
- 半定优化求的是能解原始问题的 :
-
最小化 受限于约束条件 其中 - 矩阵 必须是对称的 矩阵.
- 混合整数半定优化求能解以下问题的 和 :
-
最小化 受限于约束条件 其中 - 当目标函数为实数时,SemidefiniteOptimization 通过在内部将 转换为实变量 来求解,其中 和 . 可以用埃尔米特矩阵 指定线性矩阵不等式.
- 变量指定 vars 应该是一个列表,其中的元素按以下形式给出变量:
-
v 名称为 的变量,维度由推断而得 v∈Reals 实标量变量 v∈Integers 整数标量变量 v∈Complexes 复标量变量 v∈ℛ 仅限于几何区域 的向量变量 v∈Vectors[n,dom] 或 中的向量变量 v∈Matrices[{m,n},dom] 或 中的矩阵变量 - 可用以下形式指定约束条件 cons:
-
LessEqual 标量不等式 GreaterEqual 标量不等式 VectorLessEqual 向量不等式 VectorGreaterEqual 向量不等式 Equal 标量或向量等式 Element 凸域或区域元素 - 对于 SemidefiniteOptimization[f,cons,vars],可在约束条件中包括形式为 parval 的参数方程,以定义在 f 或 cons 中使用的参数,其中 par 不在 vars 中,val 是数值或数值数组. »
- 原始最小化问题有相关的最大化问题,即拉格朗日对偶问题. 对偶最大值始终小于或等于原始最小值,因此它给出了下限. 对偶最大值点提供了有关原始问题的信息,包括最小值对约束条件变化的敏感性. »
- 半定优化有对偶问题: »
-
最大化 受限于约束条件 其中 - 可能的解的属性 "prop" 包括:
-
"PrimalMinimizer" 一个最小化目标函数的变量值列表 "PrimalMinimizerRules" 最小化 的变量值 vars={v1,…} "PrimalMinimizerVector" 最小化 的向量 "PrimalMinimumValue" 原始最小值 "DualMaximizer" 最大化 的矩阵 "DualMaximumValue" 对偶最大值 "DualityGap" 对偶值和原始最优值之间的差 "Slack" 把不等式约束条件转换成等式的矩阵 "ConstraintSensitivity" 对约束条件扰动的敏感度 "ObjectiveVector" 线性目标向量 "ConstraintMatrices" 约束矩阵列表 {"prop1","prop2",…} 解的几个属性 - 可给出以下选项:
-
MaxIterations Automatic 使用的最大迭代次数 Method Automatic 使用的方法 PerformanceGoal $PerformanceGoal 优化的目标 Tolerance Automatic 内部比较使用的误差 - 选项 Method->method 可用于指定使用的方法. 可用的方法包括:
-
Automatic 自动选择方法 "CSDP" CSDP 半定优化求解器 "DSDP" DSDP 半定优化求解器 "SCS" SCS 分裂圆锥求解器 "MOSEK" 商用 MOSEK 凸优化求解器 - 计算受限于 MachinePrecision.
范例
打开所有单元关闭所有单元基本范例 (3)
范围 (29)
基本用途 (13)
使用向量变量 和 Inactive[Plus] 避免意外的线程:
使用向量变量 和 Indexed[x,i] 指定单个分量:
在不明确时,使用 Vectors[n] 指定向量变量的维度:
多个线性不等式约束可用 VectorGreaterEqual 表示:
使用 v>= 或 \[VectorGreaterEqual] 输入向量不等式符号 :
使用 NonNegativeReals () 指定非负约束:
整数变量 (4)
使用 Integers 指定整数域约束:
使用 Vectors[n,Integers] 指定向量变量的整数域约束:
使用 NonNegativeIntegers () 指定非负整数域约束:
使用 NonPositiveIntegers () 指定非正整数域约束:
复数变量 (2)
原始模型属性 (3)
对偶模型属性 (3)
选项 (8)
Method (5)
当默认方法 "CSDP" 产生一条信息,首先尝试 "DSDP":
带有 10-3 默认容差的 "SCS" 是另一种可尝试的方法:
"SCS" 的结果质量通常可以通过较小的 Tolerance 来改善:
PerformanceGoal (1)
选项 PerformanceGoal 的默认值是 $PerformanceGoal:
使用 PerformanceGoal"Quality" 获取更精确的结果:
使用 PerformanceGoal"Speed" 更快获取结果,但代价是质量:
应用 (33)
基本的模型变换 (13)
求最小化对称矩阵的最大特征值的 ,对称矩阵线性依赖于决策变量 , . 该问题可以作为线性矩阵不等式被公式化,因为 等价于 ,其中, 是 的第 个特征值. 定义线性矩阵函数 :
实对称矩阵 可用正交矩阵 对角化,所以 . 因此 当且仅当 . 既然,任何 都接受 ,,因此 当且仅当 . 数值模拟显示这些公式是等价的:
求最大化对称矩阵 最小特征值的 ,对称矩阵线性依赖于决策变量 . 定义线性矩阵函数 :
问题可以作为线性矩阵不等式被公式化,因为 等价于 ,其中, 是 的第 个特征值. 为了最大化 ,先最小化 :
求最小化对称矩阵 的最大和最小特征值之间差的 ,对称矩阵线性依赖于决策变量 . 定义线性矩阵函数 :
该问题可以作为线性矩阵不等式被公式化,因为 等价于 ,其中, 是 的第 个特征值. 求解由此产生的问题:
最大的特征值满足 最大绝对值的负 特征值是最大的 特征值并满足 :
的最大奇异值 是 最大特征值的平方根,而且根据前面的例子,它满足 或等价于 :
最小化 . 使用辅助变量 ,把问题转换为最小化 ,因此 . 这个与 一样:
Schur 补充条件表示,如果 ,则块矩阵 当且仅当 . 因此,当 , ⧦ ,当 ,使得 必须为 0:
最小化 受限于 ,假设 ,当 . 使用辅助变量 ,目标是最小化 ,使得 :
使用 Schur 补充条件, 当且仅当 . 使用 Inactive[Plus] 构建约束避免线程:
对于二次集 ,其包括椭球、二次锥和抛物线,确定是否 ,其中, 是对称矩阵, 是向量, 是标量:
假设集合 是全维的,S-进程表明 当且仅当存在一些非负数 使得 视觉上存在非负 :
最小化 受限于 . 把目标 转换成带有额外约束 的线性函数 ,其等于 :
最小化 受限于 . 使用 和额外约束 把目标转换成线性函数:
最小化 受限于 . 把目标转换成带有额外约束 的线性函数 ,其等于 :
数据拟合问题 (5)
选择多项式基并使用 DesignMatrix 构建输入矩阵和输出向量:
使用辅助变量 ,目标被转换成最小化 使得 ,其等于 如基本模型变换所示:
通过使用切比雪夫基最小化 找到在对数比例上变化的离散数据的近似函数:
因为数据是对数比例,直接数据拟合并不理想. 所以把问题转换成最小化 . 使用辅助变量 ,最小化 使得 . 该约束等价于 :
数据拟合可以直接使用 Fit 获得. 然而,没有对数转换的话在近似函数中会有显著的振荡:
二次项 ,其中, 是从 的 Cholesky 分解获得的下三角矩阵:
也可以用 Fit 通过 正则化更高效地完成子集选择. 首先,找到最多使用 个基函数的正则化参数的范围:
几何问题 (6)
对于每个点 ,必须满足约束条件 . 该约束条件等价于 . 在构建约束条件时使用 Inactive:
可通过 BoundingRegion 找到面积最小的包围圆盘:
面积与 成正比. 应用单调函数 Log,要最小化的函数变为 . 这相当于最小化 :
可以用 BoundingRegion 求边界椭圆(面积不一定最小):
可以用 BoundingRegion 求边界椭球(体积不一定最小):
把参数化应用到半平面给出 . 其中 . 因此,约束条件为 ,它等价于 :
求由 给定的包围三个椭圆(形式为 )的圆盘的中心 和半径 :
通过 S-procedure,可得出当且仅当 ,圆盘才包含椭圆:
目的是最小化由 给定的半径 . 使用辅助变量 ,目标变为最小化使得 的 ,可以写为 :
通过 S-procedure,可得出当且仅当 ,椭圆 2 才是椭圆 1 的子集::
测试显示问题是不可行的,表明椭球 2 不是椭球 1 的子集:
分类问题 (2)
图问题 (3)
使用半定优化可计算的 Lovász 数被用作硬计算图不变量的边界:
图 的 Lovász 数 由 给出,其中,,对于 , 且 . 可以写成对偶半定格式:, ,受限于 和 ,否则为 0:
比较 GraphData 中确切的 Lovász 数值:
矩阵切割问题确定图的顶点 的子集 ,从 跨到补集 的边的权重 之和被最大化. 对于 ,让 ,对于 ,让 . 最大化 ,其中, 和 是图的拉普拉斯矩阵:
对于较小的情况,最大切割问题可以被精确地解决,但是对于较大的图来说,这是不切实际的,因为一般来说,这个问题具有NP-完备复杂度:
问题最小化 ,其中, 是对称秩-1正半定矩阵,对于每个 ,,等价于 ,其中, 是在第 个对角位置为 1 ,其他为 0 的矩阵. 为了使解决方案切实可行,求解松弛问题,其中,秩-1 条件被消除. 对于该 ,通过随机舍入构建切割: 分解 ,令 是单位范数的均匀分布的随机向量,并且令 . 对于演示,显示松驰值的函数被定义, 中舍入值和带有顶点的图显示为红色:
求指定的图(顶点为 )的子集 ,使得从 到补集 的边的权重 的和最大化. 指定图:
目标是最大化 ,其中 是对称的 rank-1 正半定矩阵, 是图的拉普拉斯矩阵:
控制和动力系统问题 (3)
结构优化问题 (1)
设计一个最小重量的桁架,一端固定在墙上,必须能够承受另一端的负载:
可以用 link 和节点对桁架进行建模. 每个节点通过 link 连接到相邻节点. 指定节点位置 :
指定通过 link 相互连接的节点,并计算每个 link 的长度:
link 为圆杆. 每个 link 必须从一组横截面为 的圆杆中选择. 设 为每个link 的决策变量,如果 ,则圆杆 被选中. 对于 link ,面积被定义为 . 目标是最小化重量:
系统的刚度矩阵由 给出,其中 是节点的总数, 是锚定的节点的数量, 是所有 link 的集合. 如果 ,向量 ;如果 ,,否则为 0:
设 为整个系统的受力向量. 在每个没有被锚定的节点处,受力为 . 在节点 处施加力:
属性和关系 (8)
SemidefiniteOptimization 给出了目标函数的全局最小值:
Minimize 为半定问题提供全局精确结果:
与 SemidefiniteOptimization 相比:
NMinimize 用于使用全局方法获得不精确的结果:
FindMinimum 可用于使用局部方法获取不精确的结果:
ConicOptimization 比 SemidefiniteOptimization 更通用:
SecondOrderConeOptimization 是 SemidefiniteOptimization 的一个特例:
可能存在的问题 (5)
最小值点是 Indeterminate:
最小值点是 Indeterminate:
Vectors[n] 自动运算为 Vectors[n,Complexes]:
对于规范中没有复数的问题,向量变量 v ∈Vectors[n] 被认为是实值的;否则,您需要明确地将域指定为 Vectors[n,Reals]:
文本
Wolfram Research (2019),SemidefiniteOptimization,Wolfram 语言函数,https://reference.wolfram.com/language/ref/SemidefiniteOptimization.html (更新于 2020 年).
CMS
Wolfram 语言. 2019. "SemidefiniteOptimization." Wolfram 语言与系统参考资料中心. Wolfram Research. 最新版本 2020. https://reference.wolfram.com/language/ref/SemidefiniteOptimization.html.
APA
Wolfram 语言. (2019). SemidefiniteOptimization. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/SemidefiniteOptimization.html 年