栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

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

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/468218.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号