关于Ubuntu环境下配置GLPK

最近要做卜东波老师线性规划的算法作业,要求用GLPK和Gurobi对结果进行验证

本来想在Windows下安装GLPK的,但是貌似Windows下必须安装VS才能对GLPK进行编译,不想装VS......于是在虚拟机里面的Ubuntu配置GLPK

一、安装

网上有两种方法

方法一:添加源然后更新源并安装,这种方法我试了一下,在添加源后再更新用sudo apt-get update貌似会出错?试了几次之后不行然后用了第二种方法

方法二:

  • 选择一个版本进行下载(划重点!这里有很坑的地方!选择尽量稍微之前一点的版本,新版本可能会出错)这里我选的4.60
  • 在Ubuntu里面用火狐下载之后提取到桌面
  • GLPK支持使用GMP来计算大数字以及高精度浮点,默认不适用,但是使用GMP的话效率更高,因此本人在配置时添加了对GMP的支持。进入解压安装文件目录,并配置:
    /configure –with-gmp
  • 之后再输入命令行:
    ./configure
  • 根据配置编译装文件:
    make
  • 然后就可以进行安装了,安装的默认路径是/usr/local/lib,因此需要取得管理员权限:
    sudo make install
  • 安装完成

 

二、配置中可能出现的问题

配置中可能出现:glpsol: error while loading shared libraries: libglpk.so.40: cannot open shared object file: No such file or directory 这种错误

解决方法:

  • 在终上打开 gedit   /etc/ld.so.conf
  • 加入/usr/local/lib一行
  • 执行/sbin/ldconfig这生效

三、测试

  • 在测试文件目录下输入:
 gedit glpsolEx.mod
  • 然后编辑以下代码

/* Variables */
var x1 >= 0;
var x2 >= 0;
var x3 >= 0;

/* Object function */
maximize z: x1 + 14*x2 + 6*x3;

/* Constrains */
s.t. con1: x1 + x2 + x3 <= 4;
s.t. con2: x1 <= 2;
s.t. con3: x3 <= 3;
s.t. con4: 3*x2 + x3 <= 6;

end;

  • 运行以下命令,这里glpsolEx.mod是上一步编辑的文件,将结果输出到glpsolEx.sol文件中
glpsol -m glpsolEx.mod -o glpsolEx.sol
  • 程序运行完之后,在测试文件目录下输入以下命令,就可以查看输出的内容了
gedit glpsolEx.sol
  • 输出内容如下
Problem:    glpsolEx
Rows:       5
Columns:    3
Non-zeros:  10
Status:     OPTIMAL
Objective:  z = 32 (MAXimum)

   No.   Row name   St   Activity     Lower bound   Upper bound    Marginal
------ ------------ -- ------------- ------------- ------------- -------------
     1 z            B             32                             
     2 con1         NU             4                           4             2 
     3 con2         B              0                           2 
     4 con3         B              3                           3 
     5 con4         NU             6                           6             4 

   No. Column name  St   Activity     Lower bound   Upper bound    Marginal
------ ------------ -- ------------- ------------- ------------- -------------
     1 x1           NL             0             0                          -1 
     2 x2           B              1             0               
     3 x3           B              3             0               

Karush-Kuhn-Tucker optimality conditions:

KKT.PE: max.abs.err = 0.00e+00 on row 0
        max.rel.err = 0.00e+00 on row 0
        High quality

KKT.PB: max.abs.err = 4.44e-16 on row 4
        max.rel.err = 1.11e-16 on row 4
        High quality

KKT.DE: max.abs.err = 0.00e+00 on column 0
        max.rel.err = 0.00e+00 on column 0
        High quality

KKT.DB: max.abs.err = 0.00e+00 on row 0
        max.rel.err = 0.00e+00 on row 0
        High quality

End of output

参考:

http://blog.sciencenet.cn/home.php?mod=space&uid=3249403&do=blog&id=1019884

https://www.cnblogs.com/jostree/p/4156204.html

http://blog.csdn.net/suibianshen2012/article/details/45788489?locationNum=13&fps=1

如果您觉得解决了您的问题的话,希望能点一下右下角的推荐,谢谢!

原文地址:https://www.cnblogs.com/clliff/p/7994136.html