ubuntu安装SCIP,并在pyomo中调用

1. 下载与安装

我安装的是scip 7.0.2,看了一些博客装得都是很老的版本,不太清楚新老版本的差异有多大,我就图着差不多装个7.0.2就行了。我的ubuntu是18.0.4。

首先去官网下载安装包:SCIP

 下载 scipoptsuite-7.0.2.tgz

然后启动终端,cd到安装包所在的文件夹,建议直接放在home/<user_name>/文件夹下

解压文件夹

tar -zxvf scipoptsuite-7.0.2.tgz

然后进入到解压的文件夹进行cmake,依次执行

cd scipoptsuite-7.0.2
mkdir build
cd build
cmake ..
make
make check

注意!在ubuntu系统下可能会在cmake ..的时候出错,CMake Error: 说缺少个cmakelist文件,原因是根据官网的安装指导,ubuntu会存在缺少一些依赖的情况,所以需要以下命令去安装依赖:

apt-get install wget cmake g++ m4 xz-utils libgmp-dev unzip zlib1g-dev libboost-program-options-dev libboost-serialization-dev libboost-regex-dev libboost-iostreams-dev libtbb-dev libreadline-dev pkg-config git liblapack-dev libgsl-dev flex bison libcliquer-dev gfortran file dpkg-dev libopenblas-dev rpm

完事cmake应该就可以用了

2. 配置环境与测试

打开bashrc

vim ~/.bashrc

在最后添加一行

export PATH="$PATH:你自己的安装路径/scipoptsuite-7.0.2/scip/build/bin"

然后

suorce ~/.bashrc

之后就可以测试一下,在终端中输入

scip

就会出现下面的内容,代表安装成功

3. 在python中使用!!!!重点

然后很多教程就会教你在pip安装对应版本的pyscipopt,但是但是,不管我怎么尝试,都是达咩,根本不行,装了也用不了,而且我要用的是pyomo调用scip,并不想用pyscipopty。

但是scip是基于ampl构建的,在python中调用时需要有一个scipampl文件,然后我就找了一些论坛的问答,找到了以下的解决方法:

首先需要cd到'scip/scipoptsuite-7.0.2/scip/interfaces/ampl/文件夹下面,依次执行如下命令:

mkdir build
cd build
cmake ..
make

完事之后,就会在scip/scipoptsuite-7.0.2/scip/interfaces/ampl/build文件夹中出现一个scipampl文件,到此就大功告成了!!!!

下面对代码进行测试:

from pyomo.environ import *
    
model = ConcreteModel()
# %%
model.x = Var(bounds=(1.0, 10.0), initialize=5.0)
model.y = Var(within=Binary)

model.c1 = Constraint(expr=(model.x - 4.0) ** 2 - model.x <= 50.0 * (1 - model.y))
model.c2 = Constraint(expr=model.x * (model.x) + 5.0 <= 50.0 * (model.y))
model.objective = Objective(expr=model.x**2, sense=minimize)

# SolverFactory('mindtpy').solve(model, mip_solver='glpk', nlp_solver='ipopt')
solver_path = '/home/jiangzhi/scip/scipoptsuite-7.0.2/scip/interfaces/ampl/build/scipampl'
opt = SolverFactory('scipampl', executable=solver_path).solve(model)

model.objective.display()
print('x = ', model.x())
print('y = ', model.y())

运行了一个MINLP的简单问题,求解成功。

此外我还在安装gurobi的时候遇到了很多问题,不过都解决了,有空再写写吧

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值