Pyomo是一个Python建模语言,用于数学优化建模。它可以与不同的求解器(如Gurobi,CPLEX,GLPK,SCIP等)集成使用,以求解各种数学优化问题。可以使用Pyomo建立数学优化模型,并将其发送到求解器来求解。要使用SCIP求解器,您需要安装SCIP软件包并将其配置为Pyomo的求解器之一。然后,您可以在Pyomo中指定SCIP作为您的求解器,并使用Pyomo接口将模型发送到SCIP以求解。
另外,Pyomo可以使用启发式算法来求解优化问题。Pyomo提供了一个插件pyomo.contrib.hybrid,它允许用户将Pyomo模型与任何启发式算法集成。您可以使用以下步骤在Pyomo中调用启发式算法:
(1)安装所需的启发式算法库,例如Particle Swarm Optimization(PSO),Simulated Annealing(SA)或Tabu Search(TS)。
(2)在Pyomo模型中定义目标函数和约束条件。
(3)使用pyomo.contrib.hybrid插件将Pyomo模型转换为适合启发式算法求解的问题。
(4)使用所选的启发式算法库来求解转换后的问题。
pyomo教程:
商用求解器
进入https://www.ibm.com/cn-zh/products/ilog-cplex-optimization-studio?utm_content=SRCWW&p1=Search&p4=43700074800244505&p5=2&gclid=CMa2nZ7KooEDFXNDwgUd1t0KIg&gclsrc=ds 下载试用版
https://blog.csdn.net/weixin_46034036/article/details/126813229?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522169443599016800211562125%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=169443599016800211562125&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2alltop_click~default-2-126813229-null-null.142v93control&utm_term=cplex%20python&spm=1018.2226.3001.4187
conda create -n cplexEnv python=3.9.16
activate cplexEnv
D:
cd D:\Program Files\IBM\ILOG\CPLEX_Studio_Community2211\python
python setup.py install
这里直接安装在了base环境(python3.9),安装后,测试一下
from docplex.mp.model import Model
m = Model(name='single variable')
x = m.continuous_var(name="x", lb=0)
c1 = m.add_constraint(x >= 2, ctname="const1")
m.set_objective("min", 3*x)
m.print_information()
m.solve()
m.print_solution()
商用求解器
reference:https://blog.csdn.net/weixin_41596280/article/details/89112302
打开https://www.gurobi.com/downloads/,注册账号后,下载Gurobi Optimizer
下载64位msi,然后安装
注册Gurobi 获取注册码 学术的是免费的,由于申请时会识别ip地址,所以需要连接校园网。免ip申请方式:
如果您是学生,需要申请学术许可,请去 http://www.gurobi.cn/NewsView1.Asp?id=4 网站按照步骤提示,提交资料申请一个免IP 验证学术许可。
如果您是企业人士,需要申请商业试用许可,或者商业资料,请去 http://www.gurobi.cn/NewsView1.Asp?id=9 , 填写表格后从公司邮箱发给我们。
python安装Gurobi
打开anaconda cmd
conda create -n gurobiEnv python=3.9.16
activate gurobiEnv
D:
cd D:\gurobi1002\win64
python setup.py install
reference:https://pyomo.readthedocs.io/en/stable/installation.html
conda install -c conda-forge ipopt glpk
reference:
https://mp.weixin.qq.com/s/d92ds2wryk0T1lb2uPu_PA
http://www.taodudu.cc/news/show-3777585.html?action=onClick
https://github.com/scipopt/PySCIPOpt/blob/master/INSTALL.md
打开https://scipopt.org/index.php#download,下载64位exe,然后一路往下点,改存储文件夹。
还需要下载visual C++的一个东西:https://learn.microsoft.com/en-US/cpp/windows/latest-supported-vc-redist?view=msvc-170#visual-studio-2013-vc-120
新建系统变量:
在系统变量的path中添加“%SCIPOPTDIR%\bin”,“%SCIPOPTDIR%\include”,“%SCIPOPTDIR%\lib”
在用户变量的path中添加“%SCIPOPTDIR%\bin”
看看自己添加成功否,win+R
打开 cmd
,输入 scip.exe
,如果可以打开,说明变量成功添加到路径里了。
activate opt
python -m pip install pyscipopt==4.3.0 # python-V=3.9.16
SCIP小例子
min x + y 2 x − y 2 ≥ 0 x ≥ 0 , y ∈ Z \min x+y\\ 2x - y^2\geq 0\\ x\geq 0,y\in \Z minx+y2x−y2≥0x≥0,y∈Z
import pyscipopt
from pyscipopt import Model
"""
min x+y
2x - y^2 >=0
x>=0, y\in \Z
"""
if __name__ == '__main__':
model = Model("Example")
x = model.addVar("x")
y = model.addVar("y", vtype="INTEGER")
model.setObjective(x + y)
model.addCons(2*x - y*y >= 0)
model.optimize()
sol = model.getBestSol()
print("x: {}".format(sol[x]))
print("y: {}".format(sol[y]))