目录
·整数规划的简单介绍
根据决策变量是否完全为整数将整数规划划分为纯整数规划和混合整数规划,根据整数规划中的决策变量是否完全为0-1时可以将整数规划再次划分为纯0-1整数规划,混合0-1整数规划。
·整数规划的Lingo求解
在求解整数规划方面,Lingo更胜一筹,因此在这里采用了Lingo求解
Lingo只需在最后对决策变量使用@GIN函数就能对解进行整数限制,使用@BIN函数就能对解进行0-1限制。
1.Lingo的简单使用
例:
Lingo求解:
sets:
n/1..2/:x;
endsets
max = 3*x(1)-x(2);
3*x(1)-2*x(2)<=3;
5*x(1)+4*x(2)>=10;
2*x(1)+x(2)<=5;
@for(n:@gin(x));
end
代码分析:
Lingo程序大致由三部分sets,data,min/max组成
其中sets是设置变量的个数,如例1:n/1..2/:x; 表示设置一个n类型向量,其中向量名词为x,向量中元素个数为2。
data为数据集,对设置的变量进行赋值,当语句较多的时候使用。
min/max为目标函数段,其包括目标函数及其约束条件。
其中for循环意义不变多讲,gin函数是将决策变量约束为整数,bin函数将决策变量约束为0-1
运行结果:
运行结果分析:
得到
2.求解0-1整数规划问题
Lingo代码
sets:
n1/1..4/:x,c,b;
n2(n1,n1):A;
endsets
data:
c = -9,-5,-6,-4;
b = 9,1,0,0;
A = 6,3,5,2
0,0,1,1
-1,0,1,0
0,-1,0,1;
enddata
min=@sum(n1:c*x);
@for(n1(i):@for(n1(j):A(i,j)*x(j)<=b(i)));
@for(n1:@bin(x));
代码运行结果:
·指派问题的标准形式及其数学模型
假如现在有若干项工作需要分给若干对象来完成,要求在满足特定的指派要求条件下,使指派方案的总体效果最佳。
指派问题的标准形式为:有n个指派对象及n件事,已知第i个指派对象做第j事的成本为(i,j=1,2..n),要求确定指派对象和事之间的一一对应的指派方案,使这n件事的成本最低。
一般称为指派问题的系数矩阵。
为了建立标准指派问题的数学模型,引入个0-1变量:
当不指派第i个指派对象做第j件事时:
当指派第i个指派对象做第j件事时:
这样,指派问题的数学模型可以写作
或
模型中,约束条件表示每件事只能由一个指派对象去做且指派对象必须只做一件事。
例:某公司计划开办5家新商店,决定由5家建筑公司去承建。已知建筑公司对商店的报价(万元)为,如下表。如仅仅考虑节省费用,商业公司应当如何对5家建筑公司怎样进行分配建筑任务,使得总建造费用最小?
4 | 8 | 7 | 15 | 12 | |
7 | 9 | 17 | 14 | 10 | |
6 | 9 | 12 | 8 | 7 | |
6 | 7 | 14 | 6 | 10 | |
6 | 9 | 12 | 10 | 6 |
设0-1变量,当对商店承建时,;否则
Lingo求解
sets:
n1/1..5/:a;
n2(n1,n1):x,c;
endsets
data:
c = 4,8,7,15,12
7,9,17,14,10
6,9,12,8,7
6,7,14,6,10
6,9,12,10,6;
enddata
min=@sum(n2:c*x);
@for(n1(j):@sum(n1(i):x(i,j))=1);
@for(n1(j):@sum(n1(i):x(j,i))=1);
@for(n2:@bin(x));
运行结果:
min=34
参考书籍:
胡运权,郭耀煌.运筹学教程[M].北京:清华大学出版社,2018:122-140