Long-step dual simplex will be used(亲测有效)

问题描述

cvxpy调用cvxopt集成的glpk时,一直提示Long-step dual simplex will be used

问题原因

直接使用pip 安装的cvxopt默认集成4.65版本的glpk,如【1】所述,该版本glpk/src/draft/glpios03.c第 923-930 行输出上述提示。

解决办法

  1. 卸载cvxopt,安装最新版本的glpk(5.0版本)
  2. cxvopt基于源代码重新安装,手动修改、配置其内部集成的glpk版本

具体操作

注:本人使用conda创建了虚拟变量(pytorch),故所有操作在该虚拟环境变量下完成。

  1. 激活虚拟环境变量 source activate pytorch
  2. 卸载cvxopt    pip uninstall cvxopt
  3. 从【5】中下载并安装最新版本的glpk,具体操作如下,安装完成后在/usr/local/bin及/usr/local/lib可找到相关文件

    # 同时下载sig文件和程序文件,x和y表示版本信息
    # 1. 完成sig认证
    gpg --verify glpk-x.y.tar.gz.sig
    # 2. 解压缩程序文件
    gzip -d glpk-x.y.tar.gz
    tar -x < glpk-x.y.tar
    # 3. 配置包
    ./configure
    # 4. 编译
    make
    # 5. 安装(一定要用sudo安装)
    sudo make install 确保在pytorch环境中

  4. 确保在pytorch环境下,安装如下包:

    sudo apt-get install -y libsuitesparse-dev libblas-dev liblapack-dev
  5. 在pytorch环境下,修改cvxopt文件夹下的setup.py文件的第38、41、43行,具体修改如下:

    1. # Set to 1 if you are installing the glpk module.
      BUILD_GLPK = 1
      
      # Directory containing libglpk (used only when BUILD_GLPK = 1).
      GLPK_LIB_DIR = '/usr/local/lib' #glpk实际的安装位置
      
      # Directory containing glpk.h (used only when BUILD_GLPK = 1).
      GLPK_INC_DIR = '/usr/local/include'
  6. 在pytorch环境下,执行pip setup.py install

  7. 使用如下代码进行测试,如不再输出:Long-step dual simplex will be used, 表示安装成功;反之,不成功。

    1. import cvxpy as cp
      # Create two scalar optimization variables.
      x = cp.Variable()
      y = cp.Variable()
      # Create two constraints.
      constraints = [x + y == 1,
                     x - y >= 1]
      
      # Form objective.
      obj = cp.Minimize(x - y)
      
      # Form and solve problem.
      prob = cp.Problem(obj, constraints)
      prob.solve(solver='GLPK_MI',cvxopt_params={'msg_lev':'GLP_MSG_OFF'})

注意事项

  1. glpk的卸载方式是在glpk文件根目录下执行sudo make uninstall,重新安装时需将整个glpk文件夹删除,重新解压缩

参考文献

[1]python - Stop GLPK from printing log messages when using cvxpy - Stack Overflow

Installation instructions — CVXOPT

[3]GLPK - GNU Project - Free Software Foundation (FSF3)

[4]GitHub - cvxopt/cvxopt: CVXOPT -- Python Software for Convex Optimization

[5]Index of /gnu/glpk

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值