线性规划工具 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 基本使用

  1. 线性规划问题描述 首先需要一个文件glpsolEx.mod来描述你的线性规划问题,示例如下
    /* 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;
    

  2. 使用glpk解此问题 glpsol -m glpsolEx.mod -o glpsolEx.sol  
    -m filename: 指定描述问题的文件 
    -o filename: 指定输出结果保存在哪个文件
  3. 结果 
    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


转载于:https://www.cnblogs.com/Iambda/archive/2012/12/12/3933510.html

你可能感兴趣的:(操作系统)