SensitivityAnalysis
说明
SensitivityAnalysis 对象用于存储关于线性规划解的灵敏度分析信息。对象属性给出了目标函数值对各种系数的变化率,以及在保持最优基的情况下系数变化的限制条件。有关详细信息,请参阅详细信息。
创建对象
通过将 sensitivity 指定为 linprog 函数的第六个输出,创建一个 SensitivityAnalysis 对象:
[x,fval,exitflag,output,lambda,sensitivity] = linprog(...)
属性
每个属性都是一张包含以下五列的表。
| 列名 | 描述 |
|---|---|
LowerLimit | 模型参数在不改变当前最优基的情况下所能取的最小值 |
UpperLimit | 模型参数在不改变当前最优基的情况下所能取的最大值 |
ObjectiveValueAtLowerLimit | 如果将模型参数更改为 LowerLimit,则在最优解处的目标函数值为 |
ObjectiveValueAtUpperLimit | 如果将模型参数更改为 UpperLimit,则在最优解处的目标函数值为 |
ObjectiveValueChangeRate | 目标函数值对模型参数在区间 (LowerLimit, UpperLimit) 内的变化率 |
此 属性 为只读。
目标函数系数 f 的灵敏度,以 N×5 的表形式返回,其中 N 是该问题中的变量个数。
此 属性 为只读。
线性等式约束 beq 的灵敏度,以 Neq×5 的表形式返回,其中 Neq 表示该问题中的线性等式约束个数。
此 属性 为只读。
线性不等式约束 b 的灵敏度,以 Nineq×5 的表形式返回,其中 Nineq 是该问题中线性不等式约束的个数。
此 属性 为只读。
线性不等式约束 bl 的灵敏度,以 Nineq×5 的表形式返回,其中 Nineq 是该问题中线性不等式约束的个数。
此 属性 为只读。
下界 lb 的灵敏度,以 N×5 的表形式返回,其中 N 是问题中的变量个数。
数据类型: table
此 属性 为只读。
上界 ub 的灵敏度,以 N×5 表形式返回,其中 N 是问题中的变量个数。
示例
编写一个线性规划程序。
f = [-2,-1];
A = [-1 -1;
1 -1/2;
-1 1];
bl = [-5 -Inf -Inf];
b = [Inf 2 3];
lb = [0 0];
ub = [];
Aeq = [];
beq = [];求解该线性规划问题,并计算灵敏度。
[x,fval,exitflag,output,lambda,sensitivity] = ...
linprog(f,A,b,Aeq,beq,lb,ub)Optimal solution found.
x = 2×1
7
10
fval = -24
exitflag = 1
output = struct with fields:
iterations: 0
constrviolation: 0
message: 'Optimal solution found.'
algorithm: 'dual-simplex-highs'
firstorderopt: 0
lambda = struct with fields:
lower: [2×1 double]
upper: [2×1 double]
eqlin: [0×1 double]
ineqlinLower: [3×1 double]
ineqlin: [3×1 double]
sensitivity =
SensitivityAnalysis with properties:
Variables Sensitivity:
ObjectiveCoefficient: [2×5 table]
LowerBound: [2×5 table]
UpperBound: [2×5 table]
Constraints Sensitivity:
InequalityLHS: [3×5 table]
InequalityRHS: [3×5 table]
EqualityRHS: [0×5 table]
分析灵敏度。
sensitivity.ObjectiveCoefficient
ans=2×5 table
LowerLimit UpperLimit ObjectiveValueAtLowerLimit ObjectiveValueAtUpperLimit ObjectiveValueChangeRate
__________ __________ __________________________ __________________________ ________________________
-Inf 1 -Inf -3 7
-Inf 1 -Inf -4 10
sensitivity.LowerBound
ans=2×5 table
LowerLimit UpperLimit ObjectiveValueAtLowerLimit ObjectiveValueAtUpperLimit ObjectiveValueChangeRate
__________ __________ __________________________ __________________________ ________________________
-Inf 7 -24 -24 0
-Inf 10 -24 -24 0
sensitivity.InequalityLHS
ans=3×5 table
LowerLimit UpperLimit ObjectiveValueAtLowerLimit ObjectiveValueAtUpperLimit ObjectiveValueChangeRate
__________ __________ __________________________ __________________________ ________________________
-Inf -17 -24 -24 0
-Inf 2 -24 -24 0
-Inf 3 -24 -24 0
sensitivity.InequalityRHS
ans=3×5 table
LowerLimit UpperLimit ObjectiveValueAtLowerLimit ObjectiveValueAtUpperLimit ObjectiveValueChangeRate
__________ __________ __________________________ __________________________ ________________________
-17 Inf -24 -24 0
-1.5 Inf -3 -Inf -6
-2 Inf -4 -Inf -4
有关返回的灵敏度的说明,请参阅SensitivityAnalysis。
详细信息
对于线性规划问题,拉格朗日乘数与灵敏度分析参数之间存在密切关系。拉格朗日乘子给出了目标函数值对参数变化的导数,但仅在解处成立,这意味着该导数仅对参数的无穷小变化成立。然而,目标的变化率在很宽的参数范围内可能保持不变。灵敏度分析对象给出了使目标函数变化率保持不变的参数范围。灵敏度中返回的 ObjectiveValueChangeRate 的值与相应的拉格朗日乘子的值相同(如下一段所述,它们的符号可能不同)。关于拉格朗日乘子与灵敏度的比较示例,请参阅获取灵敏度。
为什么 ObjectiveValueChangeRate 的符号与相应的拉格朗日乘子的符号有时会不同?拉格朗日乘子给出了目标函数值对约束条件收紧的变化率,即下界或不等式左侧的增加,或上界或不等式右侧的减少。这些拉格朗日乘子总是非负的。相比之下,ObjectiveValueChangeRate 表示目标函数值对参数变化的导数,无论该变化是表示约束条件的收紧还是放松。因此,这两个速率的符号在下界和不等式右边时一致,而在上界和不等式右边时相反。
对于线性规划问题,最优基可以理解为在解处起作用的一组约束条件。通常情况下,这组参数是唯一的,只有当某些问题系数发生足够大的变化时,它才会改变。有关详细信息,请参阅基变量和非基变量。
在某些情况下,最优基并非唯一,且可能会因系数的微小变化而发生改变。在这种情况下,某些参数所报告的置信区间 (LowerLimit,UpperLimit) 的宽度可能为 0 或接近 0。这一奇点反映了“单基”灵敏度分析的局限性。
同样地,对于某些基函数非唯一的题,所报告的每个范围都反映了某一个特定基函数保持最优的区间。因此,报告的下限和上限可能比包含所报告目标值变化率的完整区间更窄。换句话说,另一种最优基底可能具有更宽的范围,该范围与报告的变异率相对应。
对于非活动变量或约束的上界,包括 b 或 ub 等于 Inf 的情况:
LowerLimit是最优解处的变量或约束值。UpperLimit为Inf。ObjectiveValueAtLowerLimit是最优解处的目标值。ObjectiveValueAtUpperLimit是最优解处的目标值。ObjectiveValueChangeRate为0。
对于非活动变量或约束的下界,包括 bl 或 lb 等于 -Inf 的情况:
LowerLimit为-Inf。UpperLimit是最优解处的变量或约束值。ObjectiveValueAtLowerLimit是最优解处的目标值。ObjectiveValueAtUpperLimit是最优解处的目标值。ObjectiveValueChangeRate为0。
版本历史记录
在 R2026a 中推出
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
- América Latina (Español)
- Canada (English)
- United States (English)
欧洲
- 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)