数模-1 线性规划模型基本原理与编程实现

1、线性规划问题

在人们的生产实践中,经常会遇到如何利用现有资源来安排生产,以取得最大经济效益的问题。此类问题构成了运筹学的一个重要分支—数学规划,而线性规划(Linear Programming 简记LP)则是数学规划的一个重要分支。自从1947年G.B.Dantzig提出求解线性规划的单纯形方法以来,线性规划在理论上趋向成熟,在实用中日益广泛与深入。特别是在计算机能处理成千上万个约束条件和决策变量的线性规划问题之后,线性规划的适用领域更为广泛了,已成为现代管理中经常采用的基本方法之一。

2、线性规划的实例与定义

题目:
某机床厂生产甲、乙两种机床,每台销售后的利润分别为4千元与3千元。生产甲机床需用 机器加工,加工时间分别为每台2小时和1小时;生产乙机床需用 三种机器加工,加工时间为每台各一小时。若每天可用于加工的机器时数分别为A机器10小时、B机器8小时和C机器7小时,问该厂应生产甲、乙机床各几台,才能使总利润最大?
上述问题的数学模型:
变量说明:

设该厂分别生产x1台甲机床和x2台乙机床时总利润 z最大
(变量x1、x2称之为决策变量)

目标函数:

max z = 4x1 + 3x2

约束条件如下:
在这里插入图片描述
用matlab代码求解,代码如下:
注释:有一点值得注意,MATLAB中规定线性规划的标准形式中的目标函数是求最小值,所以有的目标函数为最大值时,注意要将其转化为最小的形式。

f=[-4,-3];
a=[2,1;1,1;0,1];
b=[10;8;7];
[x,z]=linprog(f,a,b,[],[],zeros(2,1),[]);
x,z=-z

运行结果如下:

x =
    2.0000
    6.0000
z =
    26

MATLAB中求解线性规划的命令为:

标准格式为:
min cTx (T为转置)
s.t.
Ax<=b (不等式约束)
Aep.x=beq  (等式约束)
LB≤x≤UB(LB、UB分别为下界和上界)
b,c,x,beq,LB,UB均为列矩阵
[x,fval] = linprog(c,A,b,Aeq,beq,LB,UB)
没有参数的地方用[]空出来即可

猜你喜欢

转载自blog.csdn.net/qq_42822743/article/details/119104255