基础线性规划实现---python

目录

一、问题

何为线性规划问题:

二、python进行求解

1.通过观察matlab解线性规划步骤进行求解

 2.python求解步骤

1)求解用到的模块(scipy 和  numpy):

2)对  max z=2x1+3x2-5x3  该问题确定c如下:

3) 对于不等式 2x1-5x2+x3>=10 ; x1+3x2+x3<=12

4)对于等式 x1+x2+x3=7 应该单写为:

5)对于限条件  x1,x2,x3>0  可写为:

6)求解

7)求解过程遇到的问题

完整代码如下:

求解结果如下:

总结:


一、问题

何为线性规划问题:

线性规划(Linear Programming,也称为LP)是一种运筹学技术,当当所有的目标和约束都是线性的(在变量中)并且当所有的决策变量都是连续的时使用。线性规划是最简单的运筹学方法。

例如:

二、python进行求解

这个问题必须表述为一个最小化问题。不等式必须表示为≤ 。

1.通过观察matlab解线性规划步骤进行求解

线性规划求解主要分 两个部分,目标函数(max,min)和约束条件(s.t.),求解时一般要化为MATLAB标准形式:

 

x = linprog(f,A,b) 求解 min f'*x 约束条件为 A*x ≤ b.
x = linprog(f,A,b,Aeq,beq) 求解上述问题,但是增加了约束条件,即将: Aeq*x = beq. 如果没有等式存在可以用:A = [] and b = [] 
x = linprog(f,A,b,Aeq,beq,lb,ub) 定义变量x的下界lb和上街ub,使得x始终在该范围内,即lb ≤ x ≤ ub。若没有约束条件,则设: Aeq = [] and beq = []

 2.python求解步骤

1)求解用到的模块(scipy 和  numpy):

from scipy import optimize as opt
import numpy as np#引用无穷符号 inf
#from numpy import inf

2)对  max z=2x1+3x2-5x3  该问题确定c如下:

c = [2, 3, -5]

3) 对于不等式 2x1-5x2+x3>=10 ; x1+3x2+x3<=12

先将其化成   -2x1+5x2-x3<=10 ; x1+3x2+x3<=12

因为该不等式结构类似,所以写成如下:

A = np.array([[-2,5,-1],[1,3,1]])
b = np.array([-10,12])

4)对于等式 x1+x2+x3=7 应该单写为:

Aeq = np.array([[1,1,1]])
beq = np.array([7])

5)对于限条件  x1,x2,x3>0  可写为:

lim1=(0,inf)
lim2=(0,inf)
lim3=(0,inf)
#如果没有定义无穷 inf 则可写成
# lim1=(0,None)
# lim2=(0,None)
# lim3=(0,None)

6)求解

res = opt.linprog(-c,A,b,Aeq,beq,bounds=(lim1,lim2,lim3))
print(res)

7)求解过程遇到的问题

笨小孩初始求解时i,所得结果总是科学计数法,如果还有小伙伴也遇到了如下情况可以试试这些

 解决方法:在导入库后,求解前写入如下代码试试

import pandas as pd
np.set_printoptions(suppress=True)
pd.set_option('display.float_format', lambda x: '%.2f' % x)

完整代码如下:

#导入包
from scipy import optimize as opt
import numpy as np
from numpy import inf# #解决结果是科学计数法的问题
# import pandas as pd
# np.set_printoptions(suppress=True)
# pd.set_option('display.float_format', lambda x: '%.2f' % x)#确定c,A,b,Aeq,beq
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])
#限制
lim1=(0,None)
lim2=(0,None)
lim3=(0,None)
#求解
res = opt.linprog(-c,A,b,Aeq,beq,bounds=(lim1,lim2,lim3))
#输出结果
print(res)

求解结果如下:

 重点关注的就是fun和最后一行了,fun是最优值,最后一行是每个x的最优解

至于第一行为什么是负的呢?

原来这个函数其实是求最小值的,那么求最大值,怎么办呢?

很简单,仔细观察的人应该发现,之前的函数里面,我写的是-c,而不是c。

为什么这么写?

这是由于python库的设定。

因此这个函数的出来的结果其实就是-c的最小值,但很明显这恰恰是c最大值的相反数。那么答案就是14.5714了

总结:

经过一段时间学习,不但巩固了所学新知识,更是在实践中发现了自己的不足,真心很感谢这次机会!如有不当之处,请大家多多指点,非常感谢!!!

本次博客紧随建模学习打卡第一天_菜菜笨小孩的博客-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/565323.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux查看mongodb的ip地址,[转载]在MongoDB的shell中显示服务器当前IP

不久前发生一起严重的事故&#xff0c;误删了生产MongoDB服务器上的一个collection&#xff0c;由于没有定时备份&#xff0c;导致几天的数据丢失。认真反省之后&#xff0c;写下这篇文章&#xff0c;希望能给大家一些警示。过程当时我正双开两个终端窗口&#xff0c;分别用mon…

【OpenCV 例程 300篇】240. OpenCV 中的 Shi-Tomas 角点检测

『youcans 的 OpenCV 例程300篇 - 总目录』 【youcans 的 OpenCV 例程 300篇】240. OpenCV 中的 Shi-Tomas 角点检测 角是直线方向的快速变化。角点通常被定义为两条边的交点&#xff0c;或者说角点的邻域应该具有两个不同区域的不同方向的边界。 角是高度有效的特征。角点检测…

多元统计分析1

第一章 多元正态分布 文章目录 1.1 多元分布的基本概念 1.1.1 随机向量 1.1.2 分布函数与密度函数 联合分布函数&#xff1a; 联合密度函数&#xff1a; 条件密度函数&#xff1a; 分量的独立性&#xff1a; 1.1.3 随机向量的数字特征 1.随机向量的均值 2、随机…

Java并发容器和框架

ConcurrentHashMap 我们为什么要使用 ConcurrentHashMap呢&#xff1f; 原因有三&#xff1a; 并发编程中HashMap会导致死循环&#xff1b;HashTable效率又非常低&#xff1b;ConcurrentHashMap的锁分段技术可有效提升并发访问率。在并发编程使用HashMap会导致死循环。 在多线…

linux mysql 8安装教程,MySQL8系列安装与配置教程(Linux环境)

以CentOS8为例进行讲解。关闭firewalld关闭&#xff1a; systemctl stop firewalld开机禁用 &#xff1a; systemctl disable firewalld使用root用户按照如下步骤执行yum install -y wget选择一个目录&#xff0c;并进行下载wget https://dev.mysql.com/get/mysql80-community…

【OpenCV 例程 300篇】241. 尺度不变特征变换(SIFT)

『youcans 的 OpenCV 例程300篇 - 总目录』 【youcans 的 OpenCV 例程 300篇】241. 尺度不变特征变换&#xff08;SIFT&#xff09; 6.4.1 简介 尺度不变特征转换算法&#xff08;Scale-invariant feature transform&#xff0c;SIFT&#xff09;是图像处理中经典的局部特征描…

整数线性规划实现(matlab分枝界定法)

文章目录 一、本次问题 1.利用第一天所学知识求解&#xff1a; 2.本题理解&#xff1a; &#xff08;1&#xff09;分支界定法 背景&#xff1a; 基本理论&#xff08;解题步骤&#xff09;&#xff1a; 求解实现1&#xff1a; 1.第一步 2.第二步 3.第三步 4.第四步…

linux opencv gtk 没窗口,OpenCV GTK+2.x error

可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效&#xff0c;请关闭广告屏蔽插件后再试):问题:I had installed OpenCV following these steps ().After trying to compile one examples,i got this error :OpenCV Error: Unspecified error (The function …

硬盘分区

我们买回一台全新的笔记本的时候&#xff0c;我们会发现里面只有一个硬盘&#xff0c;这个时候为了满足我们的需求我们往往要对硬盘进行分区&#xff0c;那麽如何正确的对硬盘进行分区的呢&#xff1f; 下面教大家如何正确的对电脑硬盘进行分区操作。 操作方法 1、在桌面上找…

python入门:Anaconda和Jupyter notebook的安装与使用

文章目录 一、安装和使用Anaconda 1、anaconda是什么&#xff1f; 2、为什么需要安装anaconda&#xff1f; 3、如何安装anaconda&#xff1f; 通过官网下载页面 开源软件下载 安装步骤&#xff1a; 4、jupyter汉化 5、如何管理包&#xff1f; 1.列出已安装的包 2.安装…

arm linux sms,基于arm处理器的手机短消息加密系统 encryption system for sms based on arm.pdf...

基于arm处理器的手机短消息加密系统 encryption system for sms based on arm第 22卷 第 期 电子测量与仪器学报 Vol.22 No.224 - -200S年 月 JOURNAL OFELECTRONICMEASUREMENTANDINSTRUMENT 95基 于 ARM处理器 的手机短消息加密 系统杨浩森 刊世新 徐 继友电子科技大学计算机科…

前端开发中游览器的兼容问题总结

首先&#xff0c;为什么各种浏览器会产生兼容性问题&#xff1f; 产生这个问题的主要原因是市面上的浏览器的种类很多&#xff0c;但由于不同的浏览器的内核不一致&#xff0c;从而导致各个浏览器对网页的解析就产生了差异。 对于解决浏览器兼容性问题&#xff0c;我们要从三…

非线性规划(1)

目录 一、非线性规划的定义 二、非线性规划的模型 三、非线性规划函数 四、线性不等式约束 五、线性不等式和等式约束 六、带有非线性约束的求最值 七、非线性约束 总结&#xff1a; 一、非线性规划的定义 前面我们学了线性规划&#xff0c;整数规划&#xff0c;我们可…

北京化工大学通信工程linux,北京化工大学通信工程专业解读

通信工程专业1.专业的内涵是什么&#xff1f;它的未来怎样发展&#xff1f;通信工程与电子信息工程、电子信息科学与技术同属电子信息科学与工程类&#xff0c;学科基础理论基本相同&#xff0c;没有本质区别&#xff0c;且通信工程与电子信息工程的专业内涵相互交融&#xff0…

2021数维杯国际赛数学建模-A题思路-新冠疫情

本思路转载于数模孵化园 此大佬日常更新各种建模比赛的思路&#xff01;&#xff01; 先看赛题翻译 2020年初&#xff0c;新型冠状病毒疫情&#xff08;或称COVID-19&#xff09;在全球迅速蔓延。根据世 界卫生组织2021年7月31日的报告&#xff0c;新型冠状病毒疫情对人类的…

linux vim 到底,真的有(很多)linux大牛用vim写项目吗?

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼作为一名非程序员半吊子运维&#xff0c;很想问一个问题&#xff1a;真的有(很多)linux大牛用vim写项目吗&#xff1f;最近折腾自己的路由器&#xff0c;要在LEDE的luci框架里加个显示interface信息的模块。按照惯例ggl一下最后在s…

响应式布局Demo

顾名思义&#xff0c;响应式布局就是为适应不同终端而形成的一种技术。我总结了一个简单的例子帮助大家了解和学习响应式布局。 实现响应式布局的几种方式&#xff1a;媒体查询、JS、流体布局、弹性布局… 常用的meta标签 <meta content"widthdevice-width,initial-…

整数线性规划实现(lingo,python分枝界定法)

本文章为上篇建模学习打卡第二天的续 文章目录 一、本次问题 二、本题理解 三、问题求解 1.lingo实现 &#xff08;1&#xff09;先抛除整数约束条件对问题求解 &#xff08;2&#xff09;加入整数约束条件求解 2.python实现求解 &#xff08;1&#xff09;先抛除整数约…

Atmel跑Linux的arm芯片,Linux已被移植到Atmel的ATmega微控制器

Ubuntu Linux发行版已经被移植到最便宜、最便携的平台中&#xff1a;一个Atmel的ATmega微控制器。拥有一个20MHz的8位AVR处理器&#xff0c;128KB的闪存和整块16KB的SRAM&#xff0c;ATmega1284P并不是建立微型计算机最合乎逻辑的选择。它是在Arduino原型平台中找到的同样基础的…

Android Studio 详细安装教程

在我们的日常 Android 开发中&#xff0c;一个好的开发工具是必不可少的------Android Studio&#xff0c;是一个最重要的开发工具。 下面我将详细介绍Android Studio的下载安装。 一、安装环境及下载资源 1.1 安装环境 电脑系统 : Windows 10 JDK 版本 : 1.8 Android Stud…