线性规划工具 GLPK 的安装及基本使用

转载 2013年12月06日 03:07:19
线性规划工具 GLPK 的安装及基本使用 
分类: 数学 计算机科学 工具 2012-12-12 14:02 418人阅读 评论(0) 收藏 举报 
目录(?)[+]
线性规划工具GLPK 的安装及基本使用
概述
安装
基本使用
用途
参考资料
线性规划工具 GLPK 的安装及基本使用
1 概述
2 安装
3 基本使用 
4 用途
1 概述
GLPK 全称GNU Linear Programming Kit.顾名思义,这是GNU计划下一个用于解线性规 划(Linear Programming)的工具包。它可以方便的描述线性规划问题,并给出相应解。 
GLPK 的主页为:http://www.gnu.org/software/glpk/
2 安装
Ubuntu下一条命令即可: sudo apt-get install glpk
3 基本使用
线性规划问题描述 首先需要一个文件glpsolEx.mod来描述你的线性规划问题,示例如下[cpp] view plaincopyprint?/* Variables */  
var x1 >= 0;  
var x2 >= 0;  
var x3 >= 0;  
  
/* Object function */  
maximize z: 3*x1 + x2 +2*x3;  
  
/* Constrains */  
s.t. con1: x1 + x2 + 3*x3 <= 30;  
s.t. con2: 2*x1 +2*x2 + 5*x3 <= 24;  
s.t. con3: 4*x1 + x2 + 2*x3 <= 36;  
  
end;  


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


/* Object function */
maximize z: 3*x1 + x2 +2*x3;


/* Constrains */
s.t. con1: x1 + x2 + 3*x3 <= 30;
s.t. con2: 2*x1 +2*x2 + 5*x3 <= 24;
s.t. con3: 4*x1 + x2 + 2*x3 <= 36;


end;




使用glpk解此问题 glpsol -m glpsolEx.mod -o glpsolEx.sol  
-m filename: 指定描述问题的文件  
-o filename: 指定输出结果保存在哪个文件
结果 [plain] view plaincopyprint?Problem:    glpsolEx  
Rows:       4  
Columns:    3  
Non-zeros:  12  
Status:     OPTIMAL  
Objective:  z = 28 (MAXimum)  
  
   No.   Row name   St   Activity     Lower bound   Upper bound    Marginal  
------ ------------ -- ------------- ------------- ------------- -------------  
     1 z            B             28                               
     2 a            B             12                          30   
     3 b            NU            24                          24      0.166667   
     4 c            NU            36                          36      0.666667   
  
   No. Column name  St   Activity     Lower bound   Upper bound    Marginal  
------ ------------ -- ------------- ------------- ------------- -------------  
     1 x1           B              8             0                 
     2 x2           B              4             0                 
     3 x3           NL             0             0                   -0.166667   
  
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 = 0.00e+00 on row 0  
        max.rel.err = 0.00e+00 on row 0  
        High quality  
  
KKT.DE: max.abs.err = 2.22e-16 on column 1  
        max.rel.err = 3.17e-17 on column 1  
        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  


Problem:    glpsolEx
Rows:       4
Columns:    3
Non-zeros:  12
Status:     OPTIMAL
Objective:  z = 28 (MAXimum)


   No.   Row name   St   Activity     Lower bound   Upper bound    Marginal
------ ------------ -- ------------- ------------- ------------- -------------
     1 z            B             28                             
     2 a            B             12                          30 
     3 b            NU            24                          24      0.166667 
     4 c            NU            36                          36      0.666667 


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


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 = 0.00e+00 on row 0
        max.rel.err = 0.00e+00 on row 0
        High quality


KKT.DE: max.abs.err = 2.22e-16 on column 1
        max.rel.err = 3.17e-17 on column 1
        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


结果中x1 x2 x3对应的activity就是他们最终的结果,即取此结果,目标值最大。z的Activity为28,即最大值为28。
4 用途
glpk的用途是可以快速验证一个新建立的线性规划模型是否正确。在我们对一类实际问题进行抽象后,准备用线性规划来解,可以先做一些小的case,写出相应的线性规划方程,然后用glpk来快速得到结果,以便验证我们的想法,并给我们一些新的想法和直觉。一旦这些直觉得以证明。我们就可以用线性规划解决更大规模的问题,并用glpk来求出结果。
参考资料:
1 http://www.ibm.com/developerworks/cn/linux/l-glpk1/index.html

2 http://blog.csdn.net/yxf/article/details/1595058

原文:http://blog.csdn.net/on_1y/article/details/8286289

相关文章推荐

GLPK - GNU 线性规划工具包(安装、例子、使用手记)

GNU Linear Programming Kit - GNU 线性规划工具包可以用来解线性规划、混合整数规划以及相关的一些问题,按照官方说明,它的功能如下: The GLPK (GNU Linea...
  • yxf
  • yxf
  • 2007年05月02日 20:35
  • 19212

GLPK 安装配置与使用

一、背景这学期选修了卜东波老师的“计算机算法设计与分析”,Linear Programmin 部分的作业要求用GLPK求解,于是开始摸索GLPK的 安装与使用。二、GLPK安装配置...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

第一个C++调用Cplex程序

从早上上班到下午硬生生被它给折磨了一天之后... 我决定将这个坑爹的使用过程给记录下来... 为将来的新手提供一点帮助... 系统:32位 windows7 平台:visual studio 2...
  • jaygold
  • jaygold
  • 2013年11月14日 16:32
  • 4099

Windows平台下编译GLPK

GLPK是一个求解线性规划问题的开源工具包,本文主要介绍GLKP在Windows环境下的编译和使用。...
  • halps
  • halps
  • 2017年04月19日 13:25
  • 296

VS2010里面调用GLPK库求解线性规划

  • 2013年01月14日 16:56
  • 1.11MB
  • 下载

glpk 使用简介

本文只是简介glpk的简单使用~不涉及原理~做一个简单的备忘~~ GLPK 使用简介: 这几天第一次接触glpk,对于输入文件的格式,有一些繁琐,但不得不承认glpk真的很强大。 通过下面...

[java]izpack3.7.2 安装制作工具 中文问题解决

izpack,一个开源的安装制作工具, java编写。做出来的东西基本上中规中矩。 使用中碰到不少中文问题,一一解决如下: 1. 中文界面乱码: 修改chn.xml, 这个文件的编码被很奇怪的转...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:线性规划工具 GLPK 的安装及基本使用
举报原因:
原因补充:

(最多只允许输入30个字)