python线性规划_python运筹优化(⼆):Pyomo使⽤简介
⼀、概述
Pyomo是⼀个基于python的开源软件包,它⽀持多种优化功能,⽤于制定和分析优化模型。Pyomo可⽤于定义符号问题、创建具体的问题实例,并使⽤标准解决程序解决这些实例。Pyomo⽀持多种问题类型,包括:
线性规划
⼆次规划
⾮线性规划
整数线性规划
能运行python的软件混合整数⼆次规划
混合整数⾮线性规划
整数随机规划
⼴义分隔编程
微分代数⽅程
具有平衡约束的数学规划
Pyomo⽀持全功能编程语⾔中的分析和脚本编制。此外,Pyomo还证明了开发⾼级优化和分析⼯具的有效框架。例如,PySP包提供了随机规划的通⽤求解程序。PySP利⽤了Pyomo的建模对象嵌⼊在功能全⾯的⾼级编程语⾔中的事实,这种语⾔允许使⽤Python并⾏通信库透明地并⾏化⼦问题。
⼆、安装pyomo和GLPK
安装pyomo:
!pip install -q pyomo
GLPK是⼀个开源的GNU线性编程⼯具包,可在GNU通⽤公共许可证3下使⽤。GLPK是⼀个单线程单形解算器,通常适⽤于中⼩型线性整数规划问题。它是⽤C语⾔编写的,依赖性很⼩,因此在计算机和操作系统之间具有很⾼的可移植性。对于许多⽰例来说,GLPK通常“⾜够好”。对于较⼤的问题,⽤户应该考虑⾼性能的解决⽅案,如COIN-OR CBC,它们可以利⽤多线程处理器。
!apt-get install -y -qq glpk-utils
三、⼀个简单的例⼦
1、定义模型
viron import *
# create a model
model = ConcreteModel()
# declare decision variables
model.x = Var(domain=NonNegativeReals) # NonNegativeReals代表⾮0实数model.y = Var(domain=NonNegativeReals)
# declare objective
model.profit = Objective(expr = 40*model.x + 30*model.y, sense=maximize)
# declare constraints
model.demand = Constraint(expr = model.x <= 40)
model.laborA = Constraint(expr = model.x + model.y <= 80)
model.laborB = Constraint(expr = 2*model.x + model.y <= 100)
model.pprint()
model.pprint()
2、求解模型
SolverFactory('glpk', executable='/usr/bin/glpsol').solve(model).write()
# display solution
print('nProfit = ', model.profit())
print('nDecision Variables')
print('x = ', model.x())
print('y = ', model.y())
print('nConstraints')
print('Demand = ', model.demand())
print('Labor A = ', model.laborA())
print('Labor B = ', model.laborB())
模型结果
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论