安装线性规划库glpk及其Python/R语言的封装库

来源:互联网 发布:网络映射连接不上 编辑:程序博客网 时间:2024/05/16 05:36


线性规划算法


1. windows版本需要安装glpk应用


2. glpk是GNU的一个项目GNU Linear Programming Kit,是c/c++代码,需要编译安装,网址在http://www.gnu.org/software/glpk. 能解决The GLPK package supplies a solver for large scale linear programming (LP) and mixed integer programming (MIP)


3. 而windows版本需要编译安装,通常使用visual c++ 2008编译; 但也可以通过winglpk项目获得直接可以再windows下使用的glpk.项目在http://winglpk.sourceforge.net/,项目名称是GLPK for Windows


4. 直接从https://sourceforge.net/projects/winglpk/下载最新的GLPK for Windows的zip包,解压到指定的目标路径下<glpk-4.58安装目录>,之后64位系统将“<glpk-4.58安装目录>\w64”加入到系统环境变量path,就可以全局使用glpsol.exe执行线性规划算法


5. glpsol.exe是glpk的主执行程序,使用如下glpsol -m file_to_solve -o file_solved类似的指令解决线性规划问题。-m指定输入的脚本文件,是GNU MathProg格式的文件,-o指定输出的结构文件。 


6. GNU MathProg格式的文件格式如下
set players;
set func_name;
set positions;


param values { i in players , j in func_name };
param pos_values { i in players, j in positions };


var x { i in players } binary >=0;


maximize z: sum{ i in players } ( sum{j in func_name} x[i]*values[i,j] );


s.t. back       : sum{ i in players} x[i]*pos_values[i,"is back"]>=3;
s.t. front      : sum{ i in players} x[i]*pos_values[i,"is front"]>=1;
s.t. middle     : sum{ i in players} x[i]*pos_values[i,"is middle"]>=2;
s.t. ability{ j in func_name } : (sum{ i in players } x[i]*values[i,j])/5>=2;
s.t. a3_6       : x[3]+x[6]<=1;
s.t. a1_4       : x[4]>=x[1];
s.t. a1_5       : x[5]>=x[1];
s.t. a2_3       : x[2]+x[3]=1;
s.t. all_5      : sum{i in players} x[i]=5;


7. 其中windows版本的glpk也可以使用gnuwin32项目的glpk,网址http://gnuwin32.sourceforge.net/packages/glpk.htm,但是版本有些老


8. Python环境中使用glpk则使用PuLP的python封装库, R语言环境中使用Rglpl封装库
0 0
原创粉丝点击