在人们的生产实践中,经常会遇到如何利用现有资源来安排生产,以取得最大经济 效益的问题。此类问题构成了运筹学的一个重要分支—数学规划,而线性规划(Linear Programming 简记 LP)则是数学规划的一个重要分支。特别是在计算机能处理成千上万个约束条件和决策变量的线性规划问题之后,线性 规划的适用领域更为广泛了,已成为现代管理中经常采用的基本方法之一。
1.目标规划问题实例
这是一个最基本的目标规划问题,根据上述题目,我们可以列出目标函数和约束条件如下:
上述目标函数应为4000和3000,在程序部分进行了修正,接下来,来求解这个 线性规划问题。
2.线性规划的 Matlab 标准形式
线性规划的目标函数可以是求最大值,也可以是求最小值,约束条件的不等号可以 是小于号也可以是大于号。为了避免这种形式多样性带来的不便,Matlab 中规定线性 规划的标准形式为:
基本函数形式为 linprog(c,A,b),它的返回值是向量 x 的值。
如: [x,fval]=linprog(c,A,b,Aeq,beq,LB,UB,X0,OPTIONS)
3.求解问题实例代码
clc,clear;
c=[4;3];
a=[2,1;1,1;0,1];
b=[10;8;7];
x=linprog(-c,a,b); %注意是求最大值,但linprog默认求最小值,所以c取负
value=c'*x*1000;
disp('最优解 x:');
disp(x);
disp('目标函数值 value:');
disp(value);
结果显示:最优解为2,6;即生产甲2台,乙6台,总利润为26000元。
4.实例二
c=[2;3;-5];
a=[-2,5,-1;1,3,1]; b=[-10;12];
aeq=[1,1,1];
beq=7;
x=linprog(-c,a,b,aeq,beq,zeros(3,1));
value=c'*x;
disp('最优解 x:');
disp(x);
disp('目标函数值 value:');
disp(value);
运行结果如下:
5.对偶问题
对偶问题为以下形式:
简单来说说,对偶问题可被看作是原始问题的“行列转置”:
(1) 原始问题中的第 j 列系数与其对偶问题中的第 j 行的系数相同;
(2) 原始目标函数的各个系数行与其对偶问题右侧的各常数列相同;
(3) 原始问题右侧的各常数列与其对偶目标函数的各个系数行相同;
(4) 在这一对问题中,不等式方向和优化方向相反。
已知线性规划问题:
6.小练习
试着用MATLAB写出求解下列线性规划的程序:
最终结果:
程序:
c=[3;-1;-1];
a=[1,-2,1;4,-1,-2];
b=[11,-3];
aeq=[-2,0,1];
beq=1;
x=linprog(-c,a,b,aeq,beq,zeros(3,1));
value=c'*x;
disp('最优解 x:');
disp(x);
disp('目标函数值 value:');
disp(value);
评论区亮出你的答案~ ,一起讨论呀!