线性规划问题

这篇具有很好参考价值的文章主要介绍了线性规划问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、什么是线性规划

线性规划是最优化问题的一种特殊情形,实质是从多个变量中选取一组合适的变量作为解,使得这组变量满足一组确定的线性式(约束条件),而且使一个线性函数(目标函数)达到最优。线性规划顾名思义,由两个关键的部分组成:线性和规划。

线性

如果一个函数L(x)满足可加性和齐次性两个条件,则表明该函数是线性的。

(1)可加性:L(x+y)=L(x)+L(y)
(2)齐次性:αL(x)=L(αx)

我们也经常把一阶多项式函数 L(x)=kx+b 称之为线性的,其中 是常数。不难验证一阶多项式函数也满足上述可加性和齐次性的条件。

规划

谈到规划这个名词我们就不得不回归到线性规划的英文去谈(Linear Programming)。Programming 在英文中本意是编程的意思。实际上用 Linear Programming 来命名优化问题在今天来看稍显奇怪,Programming 是计算机编程的意思,貌似和我们今天谈的主题关系不大。这里边还有一个大背景就是 1946年 世界上第一台电子计算机在美国宾夕法尼亚大学诞生,也就是说在那个时间节点来看 计算机是非常非常时髦的一个东西,计算机编程也代表着最前进最前沿的新技术。那么自然以 Programming 来命名自己所研究的问题 就显得非常的高大上。

二、线性规划数学模型

满足以下三个条件的数学模型称为线性规划:
1、该问题可以用一组变量(决策变量)来表示一个解决方案。
2、有目标函数,是决策变量的线性函数。
3、有约束条件,可用一组线性等式或者不等式来表示。
线性规划问题的一般形式为:
线性规划求解,算法,机器学习,人工智能
式中,c1,c2,…cn叫做目标函数系数或者价值系数,b1,b2,…,bn叫做资源系数。

三、线性规划问题的标准形式

线性规划问题的标准形式是目标函数要求最小,所有约束条件都是等式约束,且所有的决策变量都是非负的。
线性规划求解,算法,机器学习,人工智能
其化简形式为:
线性规划求解,算法,机器学习,人工智能
用矩阵形式表示:
线性规划求解,算法,机器学习,人工智能
任意的线性规划问题都可以转化为标准形式:
1,若目标函数求求最大值,则只需要将目标函数的系数乘-1,就可以变为求解最小值问题,求得其最优解后,把最优目标函数值反号即得原问题得目标函数值。
2,若约束条件为不等式,若是“<=“则加入松弛变量,若是”>=”,则加入剩余变量,将不等式变为等式。
3,对于无约束得变量Xk,可令Xk=X1-X2,(X1;X2>=0)

四、线性规划问题的求解

4.1 线性规划图解法

4.1.1 图解法

考虑如下的线性规划问题:
线性规划求解,算法,机器学习,人工智能
使用画图的方式求解这个线性规划:
线性规划求解,算法,机器学习,人工智能
我们首先根据根据约束条件(1.2-1.5)画出可行域(图中蓝色部分),然后画出目标函数等高线(图中红色虚线)。紧接着我们想办法让红色虚线和可行域相切,相切的那个点就是最优解(对应图中情况A)。在寻找相切点的过程中,我们可能会经历几种情况:

情况B就是可行域在目标函数等高线的下方;
情况C就是将可行域分为两部分;
情况D是可行域在目标函数上方。
情况BCD都不是我们想要的结果,只有情况A是最优解。

以上就是线性规划画图求解的直观过程。

4.1.2 图解优势

图解法简单、直观,便于初期对线性规划问题的原理和几何意义进行深入理解。

4.1.3 图解法局限性

适用于两个或者三个变量,如果是两个变量,需要绘制直角坐标系;如果是三个变量,需要绘制立体坐标系。所以实际情况下,我们一般使用单纯型法求线性规划的解。单纯型法适用于任意变量,但是必须将线性规划数学模型转换为标准形式。

4.2 穷举顶点法

4.2.1 线性规划基本定理

对于标准形式的线性规划问题,如果该问题存在有界的最优解,那么至少有一个最优解在顶点上。

4.2.2 穷举顶点法

根据线性规划基本定理,我们不难想到一个求解线性规划最优解的方法:穷举所有顶点,然后找出目标函数最优的那个顶点。
那么对于一般的标准形式的线性规划问题的穷举顶点算法为:

Step 1: 从 个变量中任意抽取其中m个,然后将剩余的n-m个变量赋值为0。
Step 2: 抽取得到的m个变量构成m乘m的方程组,求解这个方程组即可获得顶点。
Step 3: 判断这个顶点是否满足约束x>=0,若不满足则舍弃掉,若满足则保存该顶点。

4.2.3 穷举顶点法局限

从上述算法流程中不难看出,计算量非常大,那么有没有更加效率的方法求解线性规划问题呢?于是就引出了单纯型法。

4.3 单纯型法

4.3.1单纯型算法大致框架

Step 1:从一个初始的基可行解出发;
Step 2:检查是否是最优解(最优解条件),若是最优解则停止,否则进入下一步;
Step 3:从当前基可行解移动到更好的基可行解,然后跳转到 Step 2;

上述算法即为单纯型算法的最基本的步骤。

对比穷举算法和单纯形算法可以发现: 在第1节中的穷举算法中,我们是把所以的顶点都拿出来比较一番,然后就可以找出最优解了。单纯型法和穷举算法的主要区别在于 单纯型法是一个迭代的方法。单纯型法是通过从一个可能不是很优的可行解出发,然后逐步逐步改进这个可行解,直至达到最优解。

显然,在上述算法过程中我们需要解决三个主要的问题:

1、如何找到一个初始的基可行解;
2、如何检查当前解是否是最优解;
3、如何从当前的基可行解移动到更好的基可行解;

如何找到一个初始的基可行解

1、两阶段法
线性规划求解,算法,机器学习,人工智能
2、大M法
线性规划求解,算法,机器学习,人工智能

判断是否得到最优解

线性规划求解,算法,机器学习,人工智能

如何从当前的基可行解移动到更好的基可行解

一般情况,顶点 v i vi vi和顶点 v j vj vj 是相邻节点的定义为 v i vi vi v j vj vj的非基变量只有一个不一样,基变量也只有一个不一样,其余变量均相等.进一步将这一过程用代数方式严谨表示出来,其中 B ∈ R m ∗ m , N ∈ R m ∗ ( n − m ) B∈R^{m*m},N∈R^{m*(n-m)} BRmm,NRm(nm)
线性规划求解,算法,机器学习,人工智能
其中 x B ∈ R m x_B∈R^m xBRm是基变量, x N ∈ R ( n − m ) x_N∈R^{(n-m)} xNR(nm)
由此将线性规划改写为如下形式:
线性规划求解,算法,机器学习,人工智能
于是
线性规划求解,算法,机器学习,人工智能
在非基变量中我们选择其中一个分量 x q x_q xq进入到 基变量中
线性规划求解,算法,机器学习,人工智能
A q A_q Aq是与 x q x_q xq所对应的 A A A的列。式(2.4)反映了基变量和非基变量之前的关系。
设当前的解为x,我们想要得到下一步的解为 x ( λ ) x(\lambda) x(λ)
线性规划求解,算法,机器学习,人工智能
其中 d q d_q dq为搜索方向, λ > 0 \lambda>0 λ>0为搜索步长。 d q ∈ R n , e q ∈ R ( n − m ) d_q∈R^n,e_q∈R^{(n-m)} dqRn,eqR(nm)其在 x q x_q xq对应的位置为1,其余位置为0.

线性规划求解,算法,机器学习,人工智能
线性规划求解,算法,机器学习,人工智能
线性规划求解,算法,机器学习,人工智能
线性规划求解,算法,机器学习,人工智能

4.3.2 单纯型算法流程

Step 1: 找到基可行解 x x x , 设其基矩阵为 B B B 和非基矩阵 N N N ;
Step 2: 根据式(2.8)计算所有非基矩阵的 r q r_q rq ,若所有的 r q > = 0 r_q>=0 rq>=0则停止输出最优解;否则 跳转到 Step 3;
Step 3: 根据式(2.5)计算移动方向 d q d_q dq ,若 d q > = 0 d_q>=0 dq>=0, 则表明线性规划是无界的。 否则,根据式(2.10)计算出步长 λ \lambda λ 。更新 x ← x + λ d q x\leftarrow x+\lambda d_q xx+λdq,然后更新基矩阵,并跳转到 Step 2;

4.3.3单纯型算法计算流程实例
实例一

线性规划求解,算法,机器学习,人工智能
线性规划求解,算法,机器学习,人工智能
线性规划求解,算法,机器学习,人工智能
线性规划求解,算法,机器学习,人工智能
线性规划求解,算法,机器学习,人工智能
线性规划求解,算法,机器学习,人工智能

实例二

【运筹学】线性规划数学模型 ( 单纯形法 | 最优解判定原则 | 线性规划求解示例 )by韩曙亮

参考

[1]一、线性规划byZJH01080108
[2]运筹学与控制论by王源文章来源地址https://www.toymoban.com/news/detail-714833.html

到了这里,关于线性规划问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C# 随机法求解线性规划问题 蒙特卡洛

    线性规划问题: max=3 x1+2 x2 x1+2 x2=5 2 x1+x2=4 4 x1+3 x2=9 x1=0 x2=0 正确的结果:x1=1.5; x2=1, max z=6.5

    2024年02月13日
    浏览(40)
  • python数学建模--线性规划问题案例及求解

    本博客参考: 《python数学实验与建模》 《MATLAB数学建模经典案例实战》 m a x   z = 8 x 1 − 2 x 2 + 3 x 3 − x 4 − 2 x 5 { x 1 + x 2 + x 3 + x 4 + x 5 ≤ 400 x 1 + 2 x 2 + 2 x 3 + x 4 + 6 x 5 ≤ 800 2 x 1 + x 2 + 6 x 3 ≤ 200 x 3 + x 4 + 5 5 ≤ 200 0 ≤ x i ≤ 99 , i = 1 , 2 , 3 , 4 x 5 ≥ − 10 max z=8x_1-2x_2+3x_3-x_

    2023年04月13日
    浏览(44)
  • SAP ABAP 使用GENIOS求解线性规划问题的简单例子

    主要内容来自Operations Research ABAP ,结合我遇到的需求,做了一些修改。 需求:有BOX1和BOX2两种箱子,分别能包装不同数量的A物料和B物料,给出若干数量的A, B物料,怎样包装可以使箱子数最少? 线性规划有助于解决类似问题。 以下是一个示例程序,包含必要的注释,   运行

    2024年02月16日
    浏览(47)
  • lingo软件求解线性规划举例

      缺点,数据多时不好找 当变量有成千上万个时,而关心的非零解只是极少数,在当前窗口读解很麻烦。下面是读取非零解的窗口操作步骤: (1)缩小当前解的窗口(不是关闭!); (2)把鼠标点进模型所在窗口;

    2024年02月13日
    浏览(52)
  • 使用COPT求解混合整数线性规划

    使用 from copt import * 引入模型 import coptpy as cp env = Envr() 创建优化模型,返回一个Model对象 mdl=env.ccreateModel(\\\"name\\\") 添加一个决策变量: mdl.addVar(lb=0.0, ub=COPT.INFINITY, obj=0.0, vtype=COPT.CONTINUOUS, name=\\\"\\\", column=None) Lb : 变量的下界。可选参量,默认为0.0。 Ub : 变量的上界。可选参量

    2024年02月06日
    浏览(52)
  • 机器人中的数值优化(十二)——带约束优化问题简介、LP线性规划

       本系列文章主要是我在学习《数值优化》过程中的一些笔记和相关思考,主要的学习资料是深蓝学院的课程《机器人中的数值优化》和高立编著的《数值最优化方法》等,本系列文章篇数较多,不定期更新,上半部分介绍无约束优化,下半部分介绍带约束的优化,中间会

    2024年02月09日
    浏览(66)
  • OR-Tools的线性规划求解器入门——调用不同求解内核

    OR-Tools因其开源、可调用其他求解器、以及强大的CP求解器,在近几年受到了工业界的广泛关注,关于OR-Tools的CP求解组件的介绍,可以参考《OR-Tools的CP-SAT求解器入门案例》,本文主要介绍OR-Tools的另一块主要的内容 Linear Solver ,在一些问题上,OR-Tools自带的求解内核 GLOP 在线

    2024年01月17日
    浏览(45)
  • 【数学建模】Python+Gurobi求解非线性规划模型

    目录 1 概述 2 算例  2.1 算例 2.2 参数设置 2.3 Python代码实现 2.4 求解结果 如果目标函数或约束条件中包含非线性函数,就称这种规划问题为非线性规划问题。 参考:(非线性规划Python)计及动态约束及节能减排环保要求的经济调度 2.1 算例 2.2 参数设置 求解NLP/非凸问题时,

    2024年02月09日
    浏览(47)
  • ✨使用Python进行线性规划求解,高端操作亮瞎你的双眼(文末技术彩蛋)

    各位童鞋们大家好,我是小小明,前几天我给大家分享了一个SMT求解器z3,链接地址见: https://xxmdmst.blog.csdn.net/article/details/120279521 虽然SMT求解器很强大,能够解逻辑题、解数独、解方程、甚至解决逆向问题,但是有个缺点就是只能找出一个可行解,如果我想要找出可行解的

    2023年04月09日
    浏览(40)
  • 数学建模十大算法03—线性规划、整数规划、非线性规划、多目标规划

    一、线性规划(Linear Programming,LP) 1.1 引例 在人们的生产实践中,经常会遇到 如何利用现有资源来安排生产,以取得最大经济效益的问题。 此类问题构成了运筹学的一个重要分支一数学规划,而 线性规划(Linear Programming, LP) 则是数学规划的一个重要分支。 简而言之,线

    2024年02月13日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包