线性规划算法
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封装库
本文介绍了如何在Windows上安装线性规划库GLPK,包括通过winglpk项目获取预编译版本,设置环境变量,并使用glpsol.exe执行线性规划问题。还提及了GLPK的GNU MathProg文件格式,以及Python的PuLP和R的Rglpk封装库。
2640

被折叠的 条评论
为什么被折叠?



