LinearOptimization
LinearOptimization[f,cons,vars]
求能最小化受线性约束条件 cons 限制的线性目标函数 f 的变量 vars 的值.
LinearOptimization[c,{a,b}]
求能最小化受线性不等式约束条件 限制的线性目标函数 的实向量 x.
LinearOptimization[c,{a,b},{aeq,beq}]
包括线性等式约束条件 .
LinearOptimization[c,…,{dom1,dom2,…}]
LinearOptimization[…,"prop"]
指定应返回解的 "prop" 属性.
更多信息和选项
- 线性优化也称为线性规划(LP)和混合整数线性规划(MILP).
- 线性优化是凸优化问题,可用实数、整数或复数变量高效地进行全局求解.
- 线性优化求可解决原始问题的 : »
-
最小化 受限于约束条件 其中 - 混合整数线性优化给出能求解问题的 和 :
-
最小化 受限于约束条件 其中 - 当目标函数取实数值时,LinearOptimization 在内部将 转换为实变量 进行求解(其中 ,).
- 变量指定 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 凸域或区域元素 - 对于 LinearOptimization[f,cons,vars],可在约束条件中包括形式为 parval 的参数方程,以定义在 f 或 cons 中使用的参数,其中 par 不在 vars 中,val 是数值或数值数组.
- 原始最小化问题有相关的最大化问题,即拉格朗日对偶问题. 对偶最大值始终小于或等于原始最小值,因此它给出了下限. 对偶最大值点提供了有关原问题的信息,包括最小值对约束条件变化的敏感性.
- 下面给出了线性优化的拉格朗日对偶问题: »
-
最大化 受限于约束条件 其中 - 对于线性优化,强对偶性始终成立,这意味着如果原始最小化问题的解存在,那么对偶最大化问题的解也存在,并且对偶最大值等于原始最小值.
- 可能的解的属性 "prop" 包括:
-
"PrimalMinimizer" 一个最小化目标函数的变量值列表 "PrimalMinimizerRules" 最小化 的变量值 vars={v1,…} "PrimalMinimizerVector" 最小化 的向量 "PrimalMinimumValue" 最小值 "DualMaximizer" 最大化 "DualMaximumValue" 对偶最大值 "DualityGap" 对偶值和原始最优值之间的差(由于强对偶性,差应为 0) "Slack" 约束松弛向量 "ConstraintSensitivity" 对约束条件扰动的敏感性 "ObjectiveVector" 线性目标向量 "LinearInequalityConstraints" 线性不等式约束矩阵和向量 "LinearEqualityConstraints" 线性等式约束矩阵和向量 {"prop1","prop2",…} 解的几个属性 - 可给出以下选项:
-
MaxIterations Automatic 使用的最大迭代次数 Method Automatic 使用的方法 PerformanceGoal $PerformanceGoal 优化的目标 Tolerance Automatic 内部比较采用的容差 WorkingPrecision Automatic 内部计算使用的精度 - 选项 Method->method 可用来指定使用的方法. 可用的方法包括:
-
Automatic 自动选择方法 "Simplex" 单纯形法 "RevisedSimplex" 修正单纯形法 "InteriorPoint" 内点法(仅适用于机器精度) "CLP" COIN 库线性规划(仅适用于机器精度) "MOSEK" 商业 MOSEK 线性优化求解器 "Gurobi" 商业 Gurobi 线性优化求解器 "Xpress" 商业 Xpress 线性优化求解器 - 当设置为 WorkingPrecision->Automatic 时,精度是从输入参数的精度自动获取的,除非指定的方法仅适用于机器精度,在这种情况下使用机器精度.
范例
打开所有单元关闭所有单元基本范例 (3)
范围 (32)
基本用法 (16)
用 VectorLessEqual 同时表示几个 LessEqual 不等式约束条件:
用 VectorGreaterEqual 同时表示几个 GreaterEqual 不等式约束条件:
用 Equal 同时表示几个等式约束条件:
用 Indexed 指定向量变量的分量,如 :
需要的情况下用 Vectors[n] 指定向量变量的维度:
用 NonNegativeReals () 指定非负约束条件:
用 NonPositiveReals () 指定非正约束条件:
整数变量 (4)
用 Integers 指定整数域约束条件:
用 Vectors[n,Integers] 指定向量变量的整数域约束条件:
用 NonNegativeIntegers () 指定非负整数域约束条件:
用 NonPositiveIntegers () 指定非正整数约束条件:
复变量 (2)
用 Complexes 指定复变量:
原始模型属性 (3)
对偶模型属性 (3)
选项 (9)
Method (5)
输入为 MachinePrecision 时默认方法是 "CLP":
任意或无限 WorkingPrecision 情况下的默认方法是 "Simplex":
所有方法都适用于 MachinePrecision 的输入:
"Simplex" 和 "RevisedSimplex" 可被用于任意精度和无限精度的输入:
"Simplex" 和 "RevisedSimplex" 适用于规模小且密集的问题:
"InteriorPoint" 和 "CLP" 适用于规模大且稀疏的问题:
"InteriorPoint" 或 "CLP" 方法可能无法判别问题是不可行的还是无界的:
"Simplex" 和 "RevisedSimplex" 可以探测出无界或不可行问题:
如果问题的最优解不是唯一的,不同的方法可能会给出不同的结果:
Tolerance (2)
WorkingPrecision (2)
LinearOptimization 根据输入推断要使用的 WorkingPrecision:
MachinePrecision 输入给出 MachinePrecision 输出:
LinearOptimization 可使用更高的工作精度计算结果:
应用 (34)
基本模型转换 (8)
数据拟合问题 (4)
通过最小化 求离散数据的稳健线性拟合. 使用辅助变量 ,问题被转换为最小化受约束条件 限制的 ,这是一个线性优化问题:
与用 LeastSquares 获取的拟合进行比较:
通过添加约束条件 a〚1〛.xb〚1〛,强制曲线穿过第一个数据点:
通过最小化 求非线性离散数据的稳健拟合. 生成一些噪音数据:
通过最小化 求离散数据的线性拟合. 由于 ,通过引入标量辅助变量 ,可将问题转换为最小化受约束条件 限制的 :
可直接用函数 Fit 计算系数:
分类问题 (3)
生产制造问题 (3)
找到能使公司利润最大化的产品的组合. 公司制造三种产品,下面给出了每个产品制造一件的成本和收入以及最大制造能力:
每种产品要使用四台机器组合制成,机器在每种产品上花费的时间是:
同一家公司希望找出改变哪些产品的产能会对利润造成最大的影响. 以前制定的最佳产品组合和利润由下式给出:
灵敏度给出了利润相对于每个约束条件的导数. 提取有敏感性的约束条件:
如果改变产品 1、产品 2 的产能或同时改变两种产品的产能,利润不会增长:
找出可以使公司利润最大化的产品组合. 公司制造三种产品 . 每种产品的营收为:
每种产品都包含金和锡. 可用的金和锡的总量分别为 30 和 200 个单位:
由于相对较高的设置成本,可能希望根本不生产某些产品. 令 为决策变量,如果生产产品 ,,否则 . 限制 确保如果 为 0,则 也为 0,不必对 作出比其他限制条件更严格的限制:
运输问题 (1)
最佳分配问题 (2)
Jedi Order 正在与 Dooku 领导的分离主义军队作战. Dooku 和他的两位将军,Asajj Ventress 和 Grievous 将军袭击了三个外围殖民地. Jedi Order 命令三名 Jedi 去帮助外围殖民地. 设 为 Jedi 击败 Sith 的几率:
设 为矩阵变量,其中如果 Jedi 与 Sith 作战, 为 1,否则为 0. 成本函数为由 给出的预期的失败次数,用 Inactive[Times] 来构建:
由于外部殖民地相距很远,每个 Jedi 只能被分配与一个 Sith 作战,反之亦然. 同时,由于 为 0 或 1,则有 :
找出合适的 Jedi 来与 Sith 作战,以尽量减少失败的可能性:
这意味着 Obi-Wan Kenobi 被派往与 Grievous 将军对战,Mace Windu 被派往与 Asajj Ventress 对战,Ki-Adi-Mundi 则与 Dooku 对战. 预期的失败次数是:
设 为矩阵变量,其中,当 与 匹配时, 为 1,否则为 0. 匹配的总权重由 给出,用 Inactive[Times] 来构建:
用 LinearOptimization 求解问题:
可以通过将矩阵 转换为图来提取匹配置换. Round 用于对由某些方法中的数值错误引起的较小的值进行截断:
库存控制问题 (2)
求为最小化成本零售店每周必须为产品 订购的库存. 设 为第 周开始时可用的库存, 为第 周开始时批发商收到的订单. 从批发商处购买一件产品的成本是 $3:
持有多余或负库存的成本为每件产品 $1. 库存成本为 ,它不是线性的,但可用 来表示:
设 为第 周开始时的需求. 52 周的总需求为 ,. 商店的库存按 演化:
在第 0 周,持有的库存为 ,订单为 . 商店每周向批发商订购的数量不得超过 10 件:
通过最小化成本求商店应持有的最佳库存和应向批发商订购的数量:
下面是库存、订单和需求的绘图,显示在第 26 周之后,商店不需要任何库存,因此最大限度地降低了库存成本:
求零售店每周必须为产品 订购的库存,在不出现延期交货的情况下最小化成本. 设 为第 周开始时批发商收到的订单. 从批发商处购买一件产品的成本是 $3:
设 为第 周开始时的需求. 52 周的总需求为 ,. 商店的库存按 演化:
开始时的库存为 、,商店一次向批发商订购的最大数量为 10 件:
通过最小化成本求商店应持有的最佳库存和应向批发商订购的数量:
下面的绘图显示为避免出现延期交货的情况,必须在开始的几周购买多余的产品以满足需求. 商店从第 20 周到第 21 周期间开始没有库存费用:
结构优化问题 (2)
顺序线性优化 (1)
数独游戏 (3)
图的着色问题 (1)
集合覆盖问题 (3)
旅行商问题 (1)
找到一条推销员应选的穿过 个城市的路径,只访问每个城市一次,最小化行走的距离. 生成位置:
令 为城市 和城市 之间的距离. 令 为决策变量,如果 ,则路径从城市 到城市 ,目标是最小化距离:
用 FindShortestTour 来求解旅行商问题要更高效:
属性和关系 (9)
LinearOptimization 给出目标函数的全局最小值:
Minimize 也可给出线性优化问题的全局精确结果:
NMinimize 可用全局方法获得近似结果:
FindMinimum 可用局部方法获得近似结果:
LinearFractionalOptimization 用 LinearOptimization 来求解问题:
QuadraticOptimization 是 LinearOptimization 的推广:
SecondOrderConeOptimization 是 LinearOptimization 的推广:
可能存在的问题 (6)
文本
Wolfram Research (2019),LinearOptimization,Wolfram 语言函数,https://reference.wolfram.com/language/ref/LinearOptimization.html (更新于 2020 年).
CMS
Wolfram 语言. 2019. "LinearOptimization." Wolfram 语言与系统参考资料中心. Wolfram Research. 最新版本 2020. https://reference.wolfram.com/language/ref/LinearOptimization.html.
APA
Wolfram 语言. (2019). LinearOptimization. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/LinearOptimization.html 年