系列文章目录
前言
在人们的生产实践中,经常会遇到如何利用现有资源来安排生产,以取得最大经济 效益的问题。此类问题构成了运筹学的一个重要分支—数学规划,而线性规划(Linear Programming 简记 LP)则是数学规划的一个重要分支。自从 1947 年 G. B. Dantzig 提出 求解线性规划的单纯形方法以来,线性规划在理论上趋向成熟,在实用中日益广泛与深 入。特别是在计算机能处理成千上万个约束条件和决策变量的线性规划问题之后,线性规划的适用领域更为广泛了,已成为现代管理中经常采用的基本方法之一。
一、线性规划是什么?
与其在先知道线性规划的一系列原理之前,我们不如引入例子去知道它。
1.1 例子:
某机床厂生产甲、乙两种机床,每台销售后的利润分别为 4000 元与 3000 元。 生产甲机床需用 A、B 机器加工,加工时间分别为每台 2 小时和 1 小时;生产乙机床 需用 A、B、C 三种机器加工,加工时间为每台各一小时。若每天可用于加工的机器时 数分别为 A 机器 10 小时、B 机器 8 小时和C 机器 7 小时,问该厂应生产甲、乙机床各几台,才能使总利润最大?
我们来找找这个例子是要干什么,看到最后一句,我们是要知道怎么样使得总利润最大,这个是我们的终极目标,而如何得到利润?就需要看我们的甲乙机床的台数对应的利润,可生产是需要成本的,综合这些因素,我们需要达到我们的目标。看到这里你应该大概能知道线性规划是什么了吧?
没错,就是在特定约束(成本、利润)的道路下,达到我们的目标。
二、解决例题
1.需要使用到的函数
在这里我们首先假设读者们已经大概有一些matlab的基础。如果没有基础的同学可以在csdn里搜川川这个大佬,相信他的内卷群不会让你失望的。
进入正题:
解决线性规划函数的利器,当然这只是解决静态的比较简单的这种方程:linprog函数,详细使用请看我的博客:
matlab线性规划之linprog函数_羡鱼数与模_LL的博客-CSDN博客
2.解决例题
个人感觉每道数学建模题目,最主要的就是如何解题的这个思路,有了思路,其实代码实现反而再其次了。
我们回到例题,根据问题的导向:“该厂应生产甲、乙机床各几台,才能使总利润最大”
那我们不妨设该厂生产 x1 台甲机床和 x2 乙机床时总利润最大,再根据题目所有的约束条件,我们很容易就能列出:
目标函数:
约束条件:
解题代码:
%%
c = [4;3];
A = [2 1;1 1;0 1];
b = [10;8;7];
aeq = [];
beq = [];
lb = zeros(3,1);
[x fval] = linprog(c,A,b,aeq,beq,lb)
3.拓展例题
关于这部分更多具有挑战性的题目,我可以看我发的帖子:
只用看这两部分的习题即可,源码已经在里头给出了,但答案并不一定正确,欢迎读者与我讨论,指正错误。
总结
简单的解决线性方程其实并不难,难的是分析建模问题,需要考虑的较为全面,