最近要做卜东波老师线性规划的算法作业,要求用GLPK和Gurobi对结果进行验证
本来想在Windows下安装GLPK的,但是貌似Windows下必须安装VS才能对GLPK进行编译,不想装VS......于是在虚拟机里面的Ubuntu配置GLPK
一、安装
网上有两种方法
方法一:添加源然后更新源并安装,这种方法我试了一下,在添加源后再更新用sudo apt-get update貌似会出错?试了几次之后不行然后用了第二种方法
方法二:
- 到官网下载http://ftp.gnu.org/gnu/glpk/
- 选择一个版本进行下载(划重点!这里有很坑的地方!选择尽量稍微之前一点的版本,新版本可能会出错)这里我选的4.60
- 在Ubuntu里面用火狐下载之后提取到桌面
- GLPK支持使用GMP来计算大数字以及高精度浮点,默认不适用,但是使用GMP的话效率更高,因此本人在配置时添加了对GMP的支持。进入解压安装文件目录,并配置:./configure –with-gmp
- 之后再输入命令行:./configure
- 根据配置变异安装文件:make
- 然后就可以进行安装了,安装的默认路径是/usr/local/lib,因此需要取得管理员权限:sudo make install
- 这就安装完了,然后就可以写程序了
二、使用
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;
运行 glpsol -m glpsolEx.mod -o glpsolEx.sol,输出到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
时间: 2024-11-05 18:52:22