2.1数学建模与MATLAB--线性规划(Linear Programing)

2.1线性规划(Linear Programing)

一、什么是线性规划

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

二、线性规划的问题实例

1、线性规划可以解决哪些问题?

  • 运输问题(产销平衡)
    某商品有m 个产地、n 个销地,各产地的产量分别为a1……am ,各销地的 需求量分别为b1…… bn。若该商品由i 产地运到 j 销地的单位运价为 cij ,问应该如何调 运才能使总运费最省?
  • 指派问题
    分配n 人去干n 项工作,每人干且仅干一项工作,若分配第i 人去干第 j项工作,需花费 cij 单位时间,问应如何分配工作才能使工人花费的总时间最少?
  • 投资收益和风险
    通过市场上资产、投资等的关系确定最优投资方案实现风险最小化的问题。

2、问题实例

某机床厂生产甲、乙两种机床,每台销售后的利润分别为 4000 元与 3000 元。生产甲机床需用 A、B 机器加工,加工时间分别为每台 2 小时和 1 小时;生产乙机床需用 A、B、C 三种机器加工,加工时间为每台各一小时。 若每天可用于加工的机器时数分别为 A 机器 10 小时、B 机器 8 小时和C 机器 7 小时 问该厂应生产甲、乙机床各几台,才能使总利润最大?
问题分析:
从蓝色字体中可以找到生产两种机床所需要的资源消耗量
从绿色字体中可以找到限制条件,用来列约束条件
从红色字体中可以找到需要解决的极值问题,用来列目标函数
问题求解见下部分

三、线性规划在MATLAB中的解法

1、线性规划在MATLAB中的标准形式

线性规划问题求解分为目标函数和约束条件,目标函数可以求最大值或最小值,约束条件可以为小于或大于,在MATLAB中为了求解方便,将目标函数均统一为最小值,对于最大值问题添加符号进行统一。
标准形式:

在这里插入图片描述
其中 c 和 x 为 n 维列向量, A 、Aeq 为适当维数的矩阵,b 、beq 为适当维数的列向量。
对于最大值问题:
在这里插入图片描述
需要统一为最小值问题:
在这里插入图片描述

2、使用MATLAB求解线性规划实例

以上述问题实例中问题为例求解:
解:
设该厂生产 X1台甲机床和 X2台乙机床时总利润最大,则 X1和X2应满足下列条件:

在这里插入图片描述
转化为MATLAB标准型:
在这里插入图片描述
MATLAB中求解代码:

%% 使用MATLAB求解线性规划
c = [-4,-3]; % 统一为标准形式后的目标函数系数
a = [2,1;1,1;0,1]; %约束条件式子系数,式中无参数对应补0
b = [10;8;7]; %约束条件的极值
[x,favl] = linprog(c,a,b)

求解结果:
在这里插入图片描述

3、使用MATLAB求解线性规划函数

使用函数:linprog (提示:MATLAB中命令行输入”help 函数名“即可查看函数的使用帮助)
下面是help linprog的结果

在这里插入图片描述
下表是本人自己对函数输入输出的理解,上图中是此函数的使用格式,从图中可看出参数可以更具上图的格式选择性的输入

参数意义
x最优规划下参数的值
favl目标函数的最优结果
f目标函数系数
A约束条件式子系数
b约束条件极值
Aeq等式约束条件式子系数
beq等式约束条件值
lb变量x的下界
ub变量x的上界
options控制参数

本文介绍了简单的线性规划问题以及使用MATLAB求解的方法,对于一些类似问题可以先进行转化,从而使用线性规划的方法求解。
由于能力有限,文中错误地方希望大家批评指正!

MATLAB学习:
知乎专栏–数据可视化和数据分析中matlab的使用

MATLAB学习交流群:953314432

关于我们:

在这里插入图片描述

©️2020 CSDN 皮肤主题: 代码科技 设计师:Amelia_0503 返回首页