首页 > 其他分享 >【快速入门|文末福利】运筹学|初识线性规划(一条逻辑线,只需初中数学基础)

【快速入门|文末福利】运筹学|初识线性规划(一条逻辑线,只需初中数学基础)

时间:2025-01-15 18:28:40浏览次数:3  
标签:约束条件 变量 线性规划 形式 约束 初识 文末 函数

导学问题/回忆自测

三个核心问题

  1. “线性”为何?
  2. 何谓“标准”?
  3. 如何“化归”(把一般的线性规划问题转化为标准的线性规划问题)

提示

  1. 字面意思,在三个要素、两个关系之间
  2. 对三个要素的要求“大”、“大”、“等”
  3. 反转(乘以-1)/补齐/“分身”

逻辑线索

(逻辑线索中,发现有不熟悉的名词没关系,知识点部分会详细说;看完了知识点可以再回头看看逻辑线索辅助记忆,最后再看三个导学问题是不是都掌握了~)

我们需要解决的实际问题当中,有一类问题可以被归为规划问题

最终的目标可能是需要规划得到最好的经济效益,也可能是要规划使用最少的资源

为了解决这样的问题,我们进行数学建模

对应实际问题的需求,在数学模型中,三个关键要素是决策变量(Decision Variables)、目标函数(Objective Function)、约束条件(Constraints)

对于这三个要素而言,思考一下会发现他们之间有这样的关系目标函数是由决策变量构成的,约束条件也是对决策变量的约束

让我们先考虑相对简单的问题:那么如果这个函数是线性的,这个约束是等式或不等式约束

这时候模型就被称为线性规划模型

为了统一讨论,我们再在其中选取大家容易接受的求最大值、等式约束、非负约束,规定这样的形式是标准形式

因此只要我们学会了求解一般形式,以后只要能把线性规划问题转化为标准形式,就能够求解相应问题

在这一课中,我们先学会如何将一个线性规划问题转化为标准形式

知识点

线性规划问题的数学表示

一般形式

我们先来看看上述逻辑当中一开始提到的线性规划问题的一般形式

数学上可以表达为:

目标函数:

max(min) Z = c_1x_1+c_2x_2+\cdots+c_nx_n\\

约束条件:

s.t.\left\{ \begin{array}{rcl} a_{11}x_1+a_{12}x_2+\cdots+a_{1n}x_n & \leq(= / \geq ) & b_1 \\ a_{21}x_1+a_{22}x_2+\cdots+a_{2n}x_n & \leq(= / \geq ) & b_2 \\ \cdots & & \\ a_{m1}x_1+a_{m2}x_2+\cdots+a_{mn}x_n & \leq(= / \geq ) & b_m \\ x_1\geq 0, \cdots ,x_n \geq0&&\\ \end{array} \right.

写着好多呀能不能写得简便一点?

当然,

目标函数中的c_1x_1+c_2x_2+\cdots+c_nx_n

可以写成\sum_{j=1}^n c_{j}x_{j}

约束条件中的s.t.\left\{ \begin{array}{rcl} a_{11}x_1+a_{12}x_2+\cdots+a_{1n}x_n & \leq(= / \geq ) & b_1 \\ a_{21}x_1+a_{22}x_2+\cdots+a_{2n}x_n & \leq(= / \geq ) & b_2 \\ \cdots & & \\ a_{m1}x_1+a_{m2}x_2+\cdots+a_{mn}x_n & \leq(= / \geq ) & b_m \\ \end{array} \right.

可以写成\sum_{j=1}^n a_{ij}x_{j} \leq(= / \geq ) b_i, i = 1,2,\cdots m

对于决策变量的约束x_1\geq 0, \cdots ,x_n \geq0

可以写成x_{j} \geq 0, j = 1,2,\cdots n(都是非负约束时)

于是整个模型就变成了:

\max(\min)Z = \sum_{j=1}^n c_{j}x_{j}\\ s.t.\left\{ \begin{array}{rcl} \sum_{j=1}^n a_{ij}x_{j} \leq(= / \geq ) b_i,& i = 1,2,\cdots, m \\ x_{j} \geq 0,&j = 1,2,\cdots n\\ \end{array} \right.

矩阵形式与向量形式

除了一般形式外,整理整理还可以写成矩阵形式和向量形式(了解即可,不影响后面理解)

向量形式:

\max(\min)Z = CX\\ s.t.\left\{ \begin{array}{rcl} \sum_{j=1}^n P_{j}x_{j} &\leq(= / \geq ) &b_i \\ X &\geq &0\\ \end{array} \right.

矩阵形式:

\max(\min)Z = CX\\ s.t.\left\{ \begin{array}{rcl} AX&\leq(= / \geq ) &b \\ X &\geq &0\\ \end{array} \right.

其中,

C_{} = \left ( \begin{array}{ccc} c_{1} & \cdots & c_{n}\end{array} \right )

P_{j} = \left ( \begin{array}{c} a_{1j}\\ a_{2j} \\ \cdots \\ a_{mj} \end{array} \right ),X_{j} = \left ( \begin{array}{c} x_{1}\\ x_{2} \\ \cdots \\ x_{n} \end{array} \right ),b = \left ( \begin{array}{c} b_{1}\\ b_{2} \\ \cdots \\ b_{m} \end{array} \right )

A_{} = \left ( \begin{array}{ccc} a_{11} & \cdots & a_{1n} \\ a_{21} & \cdots & a_{2n} \\ \cdots & \cdots & \cdots \\ a_{m1} & \cdots & a_{mn} \end{array} \right )

记忆技巧:把向量形式的第二行改成AX\leq(= / \geq ) b就是矩阵形式,其他都一样

(注意点:虽然其他形式一样,但是含义是有些区别的,这个区别和联系也就是矩阵和向量之间的区别与联系,只需要简单的线代入门知识。因为不影响后面的理解,这里就不再解释)

线性规划问题的标准形式

正如在逻辑梳理时提到的,“为了统一讨论,我们再在其中选取大家容易接受的求最大值、等式约束、非负约束,规定这样的形式是标准形式”

线性规划问题的标准形式:

目标函数:

\max Z = c_1x_1+c_2x_2+\cdots+c_nx_n\\

约束条件:

s.t.\left\{ \begin{array}{rcl} a_{11}x_1+a_{12}x_2+\cdots+a_{1n}x_n & = & b_1 \\ a_{21}x_1+a_{22}x_2+\cdots+a_{2n}x_n & = & b_2 \\ \cdots & & \\ a_{m1}x_1+a_{m2}x_2+\cdots+a_{mn}x_n & = & b_m \\ x_1, \cdots ,x_n \geq0&&\\ \end{array} \right.

记忆技巧:对三个要素的要求“大”、“大”、“等”

  • 目标函数求最“大”
  • 决策变量“大”于等于零
  • "等"式约束,而且等式右边的常数项“大”于等于零

将一般的线性规划问题转化为标准形式

 原理理解

我们刚刚已经知道,线性规划问题的标准形式是对三个要素的要求“大”、“大”、“等”。

不满足其中任何一个,就不是标准形式,我们就需要想办法转化成符合标准形式要求的样子。

我们可能会遇到下面的情形:

  • 目标函数不是求最“大”值,也就是说求最小值
  • 决策变量不是“大”于等于零;也就是说决策变量小于零
  • 等式右边的常数项不是“大”于等于零
  • 不是"等"式约束,也就是说有不等式约束

所以我们需要:

  • (目标函数)求最小值转化成求最大值
  • (决策变量和/或约束条件右端的常数项)小于零变成大于零
  • (约束条件)不"等"式改成等式约束

实现方法

反转

对于前两点:

  • 目标函数求最小值转化成求最大值
  • 决策变量小于零变成大于零

很容易想到解决方法:乘以个(-1)就可以!

记忆技巧:笔者把这一类概括为“反转”,包括:目标函数min变为max、约束条件负变正

目标函数min变max

\min Z = \sum_{j=1}^n c_{j}x_{j} \Rightarrow \max Z^{'} = -Z=- \sum_{j=1}^n c_{j}x_{j}

约束条件负变正:

x_{j} \leq 0 \Rightarrow x_{j}^{'}=-x_{j} ,x_{j}^{'} \geq 0

约束条件右端的常数项:

b_{i} \leq 0 \Rightarrow - b_{i} \geq 0

补齐

对于第三点:

  • 不"等"式改成等式约束

其实也不难想到解决方案:“多退少补”呗!笔者把这里一类概括为“补齐”(示意图见文末手写笔记)

如果是式子左边多了(左边大于等于右边),我们就减掉一点,来和右边相等。因为暂时不知道减掉的是多少,我们姑且用一个变量来表示。因为是多余的嘛,这个变量就叫做剩余变量好了

加入剩余变量x_{n+i}

\sum a_{ij}x_{j} \geq b_{i} \Rightarrow \sum a_{ij}x_{j} - x_{n+i} = b_{i} ,x_{n+i} \geq 0

同样的道理,如果是式子左边少了(左边小于等于右边),就是离右边还有空间,我们就加上一点,来和右边相等。因为暂时不知道加上的是多少,我们姑且用一个变量来表示。因为是补上空的一块的嘛,这个变量就叫做松弛变量好了。

加入松弛变量x_{n+i}

\sum a_{ij}x_{j} \leq b_{i} \Rightarrow \sum a_{ij}x_{j} + x_{n+i} = b_{i} ,x_{n+i} \geq 0\\

这里需要注意的一个细节倒是下面这一点:

我们在逻辑梳理部分说过:

“对于这三个要素而言,思考一下会发现他们之间有这样的关系目标函数是由决策变量构成的,约束条件也是对决策变量的约束”

因此,我们在补充变量时,我们也要想好,这个新增的变量,目标函数里是要有它的位置的!

你可能会问:但是这里,我们增加的松弛变量或减少的剩余变量,是“凭空”补充的呀,那他们在目标函数中的系数是多少呢?

这样问的时候,你已经找到答案了:“空”不就是“0”嘛?

系数当然都是0!

松弛变量和剩余变量引进模型后,它们在目标函数中的系数均为0

分身 

目前来看,刚刚提出的三点:

  • 最小值转化成求最大值
  • 小于零变成大于零
  • 不"等"式改成等式约束

都已经解决了。

那么,问题结束了吗?

还没有!

还有可能,在原来的模型中,有的决策变量没有约束呢!

这个时候,我们希望给ta来一个等式约束,我们愿意付出新增变量的代价,且希望新增的变量有非负性约束。

x_{j} = x_{j}^{'} + x_{j}^{''}\\ x_{j}^{'} , x_{j}^{''} \geq 0

一个变两个,笔者把这一类总结为“分身”

结语

至此,这一部分的内容就圆满结束啦!

看上去好像并不难,不过这其中蕴含的化归思想将贯穿整个运筹学后面的学习,一定要弄明白哦~ 

参考资料与相关课程推荐

网课推荐

中国大学MOOC:潘老师

运筹学_上海外国语大学_中国大学MOOC(慕课)

非常适合从入门到掌握,每个视频-15分钟,老师将概念和步骤条分缕析讲得很详细。本文可以配合视频1.1进行学习。

参考教材

《运筹学基础及应用》(第5版),胡运权, 哈尔滨工业大学出版社

文末福利:手写笔记总结与对应例题

标签:约束条件,变量,线性规划,形式,约束,初识,文末,函数
From: https://blog.csdn.net/MARTRIX_BOOLE/article/details/145129994

相关文章

  • 大模型好书推荐 | Transformer 和扩散模型的生成式 AI 实用指南(文末免费下载PDF)
    《Transformer和扩散模型的生成式AI实用指南》是一本关于生成式人工智能的技术指南,特别关注了Transformer和扩散模型在AI领域的应用。这本大模型书籍已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】这本书的内容主要分为以下......
  • 21章4节:绘制三维切片图和三维切片轮廓图,文末添加三维文本信息
    三维数据的可视化是科学研究与工程实践中不可或缺的一部分。为了在海量三维数据中提取有用信息,我们常利用二维切片或等高线图来聚焦特定区域的特征,而R包 plot3D 为此提供了强大的工具。无论是 slice3D 的三维切片图,还是 slicecont3D 的切片轮廓图,这些功能均可以帮助研......
  • 【Redis】初识分布式系统
    目录单机架构分布式系统应用数据分离架构应用服务集群架构读写分离/主从分离架构冷热分离架构垂直分库微服务架构 分布式名词概念 本篇博文,将根据分布式系统的演进一步一步介绍每一种架构的形式,最后为大家总结了一些分布式中常用的名词解释单机架构单机架构简......
  • 【IEEE复现】配电网可靠性评估用于分配优化模型:一种非仿真的线性规划方法(Matlab代码实
     ......
  • 初识PHP
    一、PHP是什么?PHP(“PHP:HypertextPreprocessor”,超文本预处理器的字母缩写)是一种被广泛应用的开放源代码的多用途脚本语言,它可嵌入到HTML中,尤其适合web开发。我们通过下面这个例子来理解这句话。<!DOCTYPEhtml><html><head><title>Example</title>......
  • 初识 Git——《Pro Git book》
    WhyGit?1.本地版本控制系统Why:许多人习惯用复制整个项目目录的方式来保存不同的版本,或许还会改名加上备份时间以示区别。这么做唯一的好处就是简单,但是特别容易犯错。有时候会混淆所在的工作目录,一不小心会写错文件或者覆盖意想外的文件。为了解决这个问题,人们很久以......
  • 了解基于华为认证体系下的网络工程师并初识计算机网络
    在踏上网络安全这条路之前,我想我们需要认识一下这个行业有哪些需要学习的技术,除此之外,我们是不是需要考取一些证书呢?计算机二级?四六级?还是什么?那么接下来我就给大家介绍一下网络安全行业内基于华为体系下的网络工程师认证证书,包括HCIA、HCIP、HCIE。首先,我们需要认识一下什么......
  • Spark(一):初识Spark
    哈喽,大家好,我是Leven,今天我们花点时间初步了解大数据计算引擎Spark,也是我们从事数据工作中肯定会用到计算引擎。文章中有书写错误的内容,辛苦评论指正,感谢......
  • 蓝桥19865 线性规划
    太久没碰这种数学了,写的比较笨数列前k项≤2N的情况进行线性规划,约束条件有a+(k-1)d≤2n,a+kd>2n,前k项求和>2n在k≥3时,约束条件2包含约束条件3,a+(k-1)d≤2n,a+kd>2n,在[3,inf)上区域求和,就是a+2d≤2nk=1,2为特殊情况,k=1时无法满足,k=2时约束条件......
  • Frida Hook 入门(1)| 初识 Frida 和安装配置
    前言在现代逆向工程和安全分析中,动态分析是一项不可或缺的技能。而提到动态分析,就不得不提到Frida,这个被称为“瑞士军刀”的工具。它的核心功能之一是Hook,可以让你在应用程序运行时拦截、修改函数调用,甚至插入自己的逻辑。这是Frida系列教程的第一篇,我将带你从零开始,熟悉......