线性规划模型(数学建模python版)

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

前言:本篇文章只涉及问题的应用层面(如何调用包调用函数,如何把问题归结为一般形式方便使用第三方库中的函数求解),不涉及问题的具体求解原理。

一、回顾以前我们学习到的线性规划

1.以前遇到的线性规划模型

首先回顾一下高中学过的线性规划:求一个线性目标函数在先行可行域内的最值问题。

高中遇到的问题:配送运输问题,生产规划问题、几何切割问题、买卖利润问题。

我们当时的做法无非分为算交点直接带入的激进派办法和老老实实地画图的保守派办法()。

2.现在遇到的线性规划问题:

(1)多变量问题;

(2)目标盘函数不只是一次(非线性)

以上两种已经不能使用之前的办法做了

以下两种情况只是对执行域进行划分即可

(3)可行域中出现方程(易解决)

(4)变量也有自己的范围(易解决)

二、python对矩阵的操作以及线性规划的求解

学习这部分是为了对原始数据进行处理,以处理到可以使用python库中的函数可以解决的样子。

3.运用python进行矩阵运算:

下面是为了解决线性规划问题而需要掌握的一些矩阵运算的基本操作,主要是用到numpy库,不会的话可以运行一下下面的代码:

import numpy as np
a=np.array([[1,2,3],[4,5,6]])
b=np.array([[1,2],[3,4],[5,6]])
c=np.array([[1,2,3]])
d=np.array([[9,8,7],[3,2,1]])
#矩阵加法
print("矩阵加法:")
sum=a+d
print(sum)
#数乘
print("矩阵数乘:")
e=3*a
print(e)
#矩阵乘法
print("矩阵乘法:")
e=np.dot(a,b)
print(e)
#元素乘法
print("元素对应相乘:")
e=a*d
print(e)
#转置
print("转置:")
e=c.T
print(e)
#逆矩阵
f=np.array([[1,2],[3,4]])
res=np.linalg.inv(f)
print("矩阵求逆:")
print(res)
#行列式
print("行列式的值:")
res=np.linalg.det(f)
print(res)
#矩阵的秩
e=np.linalg.matrix_rank(d)
print("矩阵d的秩:")
print(e)

贴个结果:线性规划模型(数学建模python版),数学建模

4.使用python对线性方程组进行求解

eg:

线性规划模型(数学建模python版),数学建模

用lnumpy包有两个解法:

一个是运用线性代数中的逆矩阵:

一个是已经封装好的函数np.linalg.solve(A,b)

代码如下:

import numpy as np
A=np.array([[10,-1,-2],[-1,10,-2],[-1,-1,5]])
b=np.array([-72,83,42])
inv_A=np.linalg.inv(A)
x=inv_A.dot(b)
print(x)
x=np.linalg.solve(A,b)
print(x)

这里推荐用第二个,方便。

当然,会出现有的变量前的系数为0的情况,这需要我们自己补充0:

线性规划模型(数学建模python版),数学建模

则对应的系数矩阵为:

5.python封装好的求解线性规划的函数:

线性规划的标准形式:

注意:一定要把任何形式的线性规化成上面的形式,这样才可以套用python的函数进行求解。

:我们把它叫做问题(要求解的目标)

我们把它叫做约束条件:

相信大家对这个应该比较熟悉,当然如果是第一次见,看看下面的这个例子也会明白是啥意思。

举个例子:若要求解下面的线性规划

线性规划模型(数学建模python版),数学建模

可以看到,这个和我们要的标准形式还是有差别的,比如问题要求解的是最大值,并且不等号也不全是小于等于,这就需要我们加负号变化一下:

先看问题:我们要求的是z的最大值,换言之,我们可以先求-z的最小值,然后取相反数。

约束条件也是一样的,加负号来改变不等号方向。

最后的求解代码如下:

from scipy import optimize as op
import numpy as np
c=np.array([-2,-3,5])
A=np.array([[-2,5,-1],[1,3,1]])
b=np.array([-10,12])
Aeq=np.array([[1,1,1]])
beq=np.array([7])
x1=(0,None)
x2=(0,None)
x3=(0,None)
ans=op.linprog(c,A,b,Aeq,beq,bounds=(x1,x2,x3))
print(ans)

运行结果如下:有很多信息,比如算了多少轮(nit),精度等等,不同的版本跑出来可能不太一样。我们要注意的只是答案就好(画红线部分):

线性规划模型(数学建模python版),数学建模

三、何为“线性”?

对于以上的求解都建立在“线性”之上,那么什么叫“线性”呢?

让我们回顾一下线性代数中对于“线性”的定义:

线性规划模型(数学建模python版),数学建模

这里的问题要求:问题是线性的,并且约束也是线性的。

还记得我们之前说的吗,什么是问题,什么是约束?(小标题五)

只有满足线性才能使用线性规划,否则就要采取其他办法。文章来源地址https://www.toymoban.com/news/detail-829763.html

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

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

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

相关文章

  • 数学建模__非线性规划Python实现

    线性规划指的是目标模型均为线性,除此以外的都是非线性规划,使用scipy提供的方法对该类问题进行求解。

    2024年02月07日
    浏览(38)
  • 数学建模整理-线性规划、整数规划、非线性规划

    在人们的生产实践中,经常会遇到如何利用现有资源来安排生产,以取得最大经济 效益的问题。若目标函数及约束条件均为线性函数,则称为线性规划(Linear Programming 简记 LP)。 可行解 :满足约束条件的解。 可行预 :所有可行解构成的集合称为问题的可行域,记为R。 图解法

    2024年02月06日
    浏览(30)
  • 数学建模——线性规划

    目录 基本概念 模型求解和应用 基于求解器的求解方法 基于问题的求解方法 其他  运筹学的一个重要分支是数学规划,线性规划是数学规划的一个重要的分支。 变量称为 决策变量 ,规划的目标称为 目标函数 ,限制条件称为 约束条件 ,s.t.是“受约束于”的意思。 建立线

    2024年01月18日
    浏览(32)
  • 【数学建模】线性规划

    1.1线性规划的实例与定义 1.2线性规划的Matlab标准形式 线性规划的目标函数可以是求最大值,也可以是求最小值,约束条件的不等号可以是小于号也可以是大于号。为了避免这种形式多样性带来的不便,Matlab中规定线性规划的标准形式为 其中c和x为n维列向量,A,Aeq为适当维数

    2024年02月09日
    浏览(31)
  • 数学建模——线性规划类

    [x,y]=linprog(c,A,b,Aeq,beq,lb,ub) 例如: max需要加负号变成min、=需要加负号变成= matlab (1)基于求解器 (2)基于问题 con中根据符号分类 python (1)绝对值 (2)min(max(q*x)) (见风投案例模型二) 【0】题目描述 【1】模型一 模型一:设定风险度的最大接受值,在不太冒险的情况下

    2024年02月13日
    浏览(31)
  • 数学建模(二)线性规划

    课程推荐:6 线性规划模型基本原理与编程实现_哔哩哔哩_bilibili 目录 一、线性规划的实例与定义 1.1 线性规划的实例 1.2 线性规划的定义 1.3 最优解 1.4 线性规划的Mathlab标准形式 1.5 使用linprog函数 二、线性规划模型建模实战与代码 2.1 问题提出 2.2 基本假设 2.3 模型的分析与建

    2024年02月12日
    浏览(26)
  • 数学建模十大算法03—线性规划、整数规划、非线性规划、多目标规划

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

    2024年02月13日
    浏览(30)
  • 数学建模| 线性规划(Matlab)

    线性规划:约束条件和目标函数都是线性的。简单点说,所有的决策变量在目标函数和约束条件中都是一次方。 Matlab函数: 参数解释: func 表示目标函数。 A 表示不等式约束条件系数矩阵,b 表示不等式约束条件常数矩阵。 Aeq 表示等式约束条件系数矩阵,beq 表示等式约束条

    2024年02月07日
    浏览(30)
  • 数学建模【非线性规划】

    一、非线性规划简介 通过分析问题判断是用线性规划还是非线性规划 线性规划:模型中所有的变量都是一次方 非线性规划:模型中至少一个变量是非线性 非线性规划在形式上与线性规划非常类似,但在数学上求解却困难很多 线性规划有通用的求解准确解的方法(单纯形法

    2024年02月19日
    浏览(36)
  • 数学建模——非线性规划

    目录 基本概念 凸规划 判别定理 二次规划模型 非线性规划的求解 无约束极值问题 有约束极值问题 基于求解器的解法 基于问题的求解 其他 非线性规划:描述目标函数或约束条件条件的数学表达式中,至少有一个是非线性函数。 记是n维欧式空间中的一个点(n维向量),,

    2024年02月06日
    浏览(31)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包