【数学建模算法】(1)线性规划的基本形式

由于本人正在筹备9月的研究生数学建模比赛,所以需要学习数学建模的相关知识,想把一些学习的心得和成果分享给大家,第一部分就是数学建模中涉及的基本算法,从今天开始我将不定期更新关于数学建模中的基本算法知识以及Matlab实现过程,希望大家捧场。

线性规划的定义及举例

线性规划这个词相信大家并不陌生,但可能由于年代久远大家忘记了它是什么,那我们就看一道例题:

例1 某机床厂生产甲、乙两种机床,每台销售后的利润分别为4000与3000元。生产甲机床需用A,B两种机器加工,加工时间分别为每台2小时和1小时;生产乙机床需用A,B,C三种机器加工,加工时间为每台各一小时。若每天可用于加工的机器时数分别为A机器10小时、B机器8小时和C机器 7小时,问该厂应生产甲、乙机床各几台,才能使总利润最大

怎么做这道题呢,让我们把已知条件列出来:

消耗工时如下表:

A 2 1
B 1 1
C 0 1

问题中给出了每台机器每天的最大工作时间

A B C
最大工作时间 10 8 7

也给出了甲乙两种机床的利润

利润 4000 3000

假设生产甲机床x_{1}台和乙机床x_{2}台时,利润最大。
那么设z为总利润,我们的任务目标就是让z=4000 x_{1}+3000 x_{2}最大。(1)
限制条件是:
\left\{\begin{array}{l}{2 x_{1}+x_{2} \leq 10} \\ {x_{1}+x_{2} \leq 8} \\ {x_{2} \leq 7} \\ {x_{1}, x_{2} \geq 0}\end{array}\right.

上式(1)称为问题的目标函数,上式(2)称为该问题的限制条件
上面这个问题就是一个完整的线性规划问题。

线性规划问题的标准形式

目标函数
\max \quad z=\sum_{j=1}^{n} c_{j} x_{j}
限制条件
\left\{\begin{array}{l}{\sum_{j=1}^{n} a_{i j} x_{j}=b_{i} \quad i=1,2, \cdots, m} \\ {x_{j} \geq 0 \quad j=1,2, \cdots, n}\end{array}\right.

满足限制条件的解称为可行解,既满足限制条件又能使目标函数达到最值的解称为最优解。所有可行解构成的集合称为可行域R

Matlab中解决线性规划问题的标准形式

目标函数
\min _{x} c^{T} x

注意Matlab中的标准形式是让目标函数最小

限制条件
\left\{\begin{array}{l}{A x \leq b} \\ {A e q \cdot x=b e q} \\ {l b \leq x \leq u b}\end{array}\right.

第一行是不等式限制条件。
第二行是等式限制条件。
第三行是自变量范围。

其中c,xn维列向量,A,Aeq是适当维数的矩阵,b,beq是适当维数的列向量。

Matlab中的线性规划问题函数原型为:

[x,fval]=linprog(c,A,b,Aeq,beq,LB,UB,X0,OPTIONS];
%x是最优自变量,fval是对应最优值,LB和UB是x的上下界,X0是X的初值,OPTIONS是控制参数。

我们高中时学过一种线性规划问题的求解算法———图解法,其思想是在直角坐标系中画出限可行域,之后用代表目标函数的直线族来扫过可行域来确定自变量的最优解。


图解法

不适用于此处,不再过多讨论。

利用Matlab解决线性规划问题

例1
仍然以上题为例,其目标函数和限制条件为:

\max \quad z=4000 x_{1}+3000 x_{2}
\left\{\begin{array}{l}{2 x_{1}+x_{2} \leq 10} \\ {x_{1}+x_{2} \leq 8} \\ {x_{2} \leq 7} \\ {x_{1}, x_{2} \geq 0}\end{array}\right.

本题中目标函数不符合Matlab标准型,只需将c^{T} x变为-c^{T} x(即代入时将c替换为-c即可)就可将求取最大值变为求取最小值,即可用matlab求解。

求解代码:

c=[4000 3000];
A=[2 1;
    1 1;
    0 1];
b=[10 8 7]';
Aeq=[];
beq=[];
LB=zeros(2,1);

x=linprog(-c,A,b,Aeq,beq,LB);
%将-c替换成了c,此时函数输出的最优值是-c*x,不是我们想要的最优值,若需要最优值,需要自行计算c*x

输出x

x =

    2.0000
    6.0000

问题求解完毕。

例2
\max z=2 x_{1}+3 x_{2}-5 x_{3}
x_{1}+x_{2}+x_{3}=7
2 x_{1}-5 x_{2}+x_{3} \geq 10(*)
x_{1}+3 x_{2}+x_{3} \leq 12
x_{1}, x_{2}, x_{3} \geq 0

本题中出现了不等号方向不符合标准型的情况,同理,需要先将不等号进行调整,再代入Matlab函数进行求解。
本题中,(*)标注的不等式是"\geq"号,若要将其变为“\leq”,需左右两边加一个“-”号。

代码求解:

c=[2 3 -5];
A=[-2 -5 -1;%这一行不等式经过调整,左右取负号
    1 3 1];
b=[-10 12]';
Aeq=[1 1 1];
beq=[7];
LB=zeros(3,1);

x=linprog(-c,A,b,Aeq,beq,LB);%由于目标函数要求取最大值,所以此处代-c

求得:

x =

    4.5000
    2.5000
         0

至此,线性规划问题的基本形式和基本解法就展示完了,下一部分,我们将会讨论一些利用线性规划思想解决的实际问题。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,530评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,403评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,120评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,770评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,758评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,649评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,021评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,675评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,931评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,751评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,410评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,004评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,969评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,042评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,493评论 2 343