线性规划
线性规划问题的解的概念
一般线性规划问题的(数学)标准型为
式中,\(b_i\geq0, i = 1,2,\dots,m\)。
可行解:满足约束条件(2)的解\(x = [x_1,x_2,...,x_n]^{T}\),称为线性规划问题的可行解,而使目标函数(1)达到最大值的可行解称为最优解。
可行域:所有可行解构成的集合称为问题的可行域,记为\(R^{'}\)。
灵敏度分析
灵敏度分析是指对系统因周围条件变化显示出来的敏感程度的分析。
在线性规划问题中,都设定\(a_{ij},b_{i},c_{j}\)是常数,但在许多实际问题中,这些系数往往是估计值或预测值,经常有少许的变动。
因此提出以下两个问题:
(1)如果参数\(a_{ij},b_i,c_j\)中的一个或者几个发生了变化,现行最优方案会有什么变化?
(2)将这些参数的变化限制在什么范围内,原最优解仍是最优的?
有一套关于“优化后分析“的理论方法,可以进行灵敏度分析。具体可以参考运筹学知识。
但在实际应用中,给定一个步长使其重复求解线性规划问题,以观察最优解的变化情况,不失为一种可用的数值方法,特别是使用计算机求解时。
对于数学规划模型,一定要做灵敏度分析。
线性规划的Matlab求解
(1)Matlab基于求解器的求解方法
Matlab基于求解器的求解方法中规定线性规划的标准形式为
Matlab基于求解器的求解线性规划函数调用格式为
(2)Matlab基于问题的求解方法
Matlab基于问题的求解数学规划方法,首先需要用变量和表达式构造优化问题,然后用solve函数求解。
eg:
数学规划问题
式中:$ x = [x_1,x_2,...,x_n]^T$;A和b为相应维数的矩阵和向量
要把上面的问题变换成线性规划问题,可以做如下变幻:
令
记\(u = [u_1,u_2,u_3,u_4]^T, v = [v_1,v_2,v_3,v_4]^T\),则可把模型变换为线性规划模型
matlab求解如下:
prob = optimproblem;
c = [1 : 4]';
b = [-2, -1, -1/2]'
a = [1,-1,-1,1; 1,-1,1,-3; 1,-1,-2,3];
u = optimvar('u',4,'LowerBound',0);
v = optimvar('v',4,'LowerBound',0);
prob.Objective = sum(c'*(u+v));
prob.Constraints.con = a * (u-v) <= b;
[sol, fval, flag, out] = solve(prob)
x = sol.u - sol.v

浙公网安备 33010602011771号