使用python scipy.optimize linprog和lingo线性规划求解最大值,最小值(运筹学学习笔记)
1.线性规划模型:
2.使用python scipy.optimize linprog求解模型最优解:
在这里我们用到scipy中的linprog进行求解,linprog的用法见https://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.linprog.html
scipy.optimize.linprog(c, A_ub=None, b_ub=None, A_eq=None, b_eq=None, bounds=None, method='simplex', callback=None, options=None)
method = 'simplex'(单纯形法),bounds确定边界,x≥0为(0,None)。
要使用linprog,目标函数要变成求最小值,如果原题目要求求max(最大值),只需对目标函数取负,但要注意求解的最终值是取负后的目标函数的最小值,取负即为最大值。
下面为具体python代码:
import numpy as np
from scipy.optimize import linprog c = np.array([1,2,3])
A_ub = np.array([[-2,1,1],[3,-1,-2]])
b_ub = np.array([9,-4])
A_eq = np.array([[3,-2,-3]])
b_eq = np.array([-6])
r = linprog(c,A_ub,b_ub,A_eq,b_eq,bounds=((None,0),(0,None),(None,None)))
print(r)
程序的输出结果为:
fun: -22.0
message: 'Optimization terminated successfully.'
nit: 3
slack: array([ 0., 7., 0.])
status: 0
success: True
x: array([-7., 0., -5.])
fun为目标函数的最优值,slack为松弛变量,status表示优化结果状态,在这里不用过于追究,x为最优解。
最优解为-22
3.使用lingo进行线性规划:
当模型不是很大是可以用lingo求解,下面为lingo求解过程:
-----------------------------------------------------------------------------------------------------------------------
min=x1+2*x2+3*x3;
-2*x1+x2+x3<=9;
-3*x1+x2+2*x3>=4;
3*x1-2*x2-3*x3=-6;
x1<=0;
@free(x1);@free(x3);
-----------------------------------------------------------------------------------------------------------------------
目标函数使用max=或者min=表示,注意不是max z=。在lingo中变量默认为非负,使用@free可以解除限制。注意每一行结束要是用“;”,这点跟c类似。
求解结果为:
Objective value: -22.00000
Variable Value
X1 -7.000000
X2 0.000000
X3 -5.000000
结果跟python相同。
使用python scipy.optimize linprog和lingo线性规划求解最大值,最小值(运筹学学习笔记)的更多相关文章
- 《Python编程:从入门到实践》基础知识部分学习笔记整理
简介 此笔记为<Python编程:从入门到实践>中前 11 章的基础知识部分的学习笔记,不包含后面的项目部分. 书籍评价 从系统学习 Python 的角度,不推荐此书,个人更推荐使用< ...
- 《利用python进行数据分析》NumPy基础:数组和矢量计算 学习笔记
一.有关NumPy (一)官方解释 NumPy is the fundamental package for scientific computing with Python. It contains ...
- 使用Python scipy linprog 线性规划求最大值或最小值(使用Python学习数学建模笔记)
函数格式 scipy.optimize.linprog(c, A_ub=None, b_ub=None, A_eq=None, b_eq=None, bounds=None, method='simp ...
- 学习笔记之Python 3
学习笔记之Python 3 教程 https://www.cnblogs.com/pegasus923/p/7624416.html 学习笔记之X分钟速成Python3 https://www.cnb ...
- Python数模笔记-Scipy库(1)线性规划问题
1.最优化问题建模 最优化问题的三要素是决策变量.目标函数和约束条件. (1)分析影响结果的因素是什么,确定决策变量 (2)决策变量与优化目标的关系是什么,确定目标函数 (3)决策变量所受的限制条件是 ...
- python scipy优化器模块(optimize)
pyhton数据处理与分析之scipy优化器及不同函数求根 1.Scipy的优化器模块optimize可以用来求取不同函数在多个约束条件下的最优化问题,也可以用来求取函数在某一点附近的根和对应的函数值 ...
- Scipy教程 - 优化和拟合库scipy.optimize
http://blog.csdn.net/pipisorry/article/details/51106570 最优化函数库Optimization 优化是找到最小值或等式的数值解的问题.scipy. ...
- python scipy库
三.假定正态分布,求解1倍标准差和0.5倍标准差的概率? 二.求解多元线性或非线性方程组解 一.求解3元一次方程 1.学习资料 https://github.com/lijin-THU/notes- ...
- Scipy优化算法--scipy.optimize.fmin_tnc()/minimize()
scipy中的optimize子包中提供了常用的最优化算法函数实现,我们可以直接调用这些函数完成我们的优化问题. scipy.optimize包提供了几种常用的优化算法. 该模块包含以下几个方面 使用 ...
随机推荐
- Lua编写wireshark插件初探——解析Websocket上的MQTT协议
一.背景 最近在做物联网流量分析时发现, App在使用MQTT协议时往往通过SSL+WebSocket+MQTT这种方式与服务器通信,在使用SSL中间人截获数据后,Wireshark不能自动解析出MQ ...
- Python/模块与包之模块
Python/模块与包之模块 1.什么是模块? 模块就是py文件 2.为什么要用模块? 如果在解释器上进行编码,把解释器关闭之前写的文件就不存在了,如果使用模块的话就能永久保存在磁盘中. 3.如何使用 ...
- Text-鼠标点击事件
from tkinter import * import webbrowser master=Tk() text=Text(master,width=50,height=20) text.pack() ...
- 基于 MySQL 的数据库实践(自然连接)
在基本查询一节的示例中,我们有从 instructor 和 teaches 表组合信息,匹配条件是 instructor.ID 等于 teaches.ID 的查询,ID 属性是两个表中具有相同名称的所 ...
- SQL基础-----DML语句
之前已经介绍过SQL基础之DDL(数据库定义语言)语句,http://www.cnblogs.com/cxq0017/p/6433938.html(这是地址) 这篇文章主要介绍DML语句(数据库操纵语 ...
- NodeJS技巧
1. 获取程序执行时间 // 打印程序执行时间 console.time() // some functions console.timeEnd() 2. 将函数异步化 setTimeout(() = ...
- PHP 安装与配置(WIN10)
需要在本地搭个PHP的测试环境,顺手将过程写了下来. 由于不是生产环境,我这里直接选择了最新的PHP版本用来测试. 本地坏境为:windows 10 Pro 1709 PHP版本:php-7.2.3- ...
- Python模块 - time,datetime,calendar
time模块 localtime 当前时间的struct_time形式 >>> time.localtime() time.struct_time(tm_year=2015, tm_ ...
- js 函数 作用域 全局作用域 局部作用域 闭包
一个变量没有声明但调用 直接报错,声明没有赋值会显示未定义. 作用域 作用域(scope):一条数据可以在哪个范围中使用. 通常来说,一段程序代码中所用到的数据并不总是有效/可用的,而限定这个数据的可 ...
- linux必知必会命令