指派问题
有四个工人,要指派他们分别完成4项工作,每人做各项工作所消耗的时间如下表:工作
工人
abcd甲15182124乙19232218丙26171619丁19212317问指派哪个人去完成哪项工作,可使总的消耗时间为最小?
设:第i个工人做第j项工作用时 ,标志变量 定义如下:
s.t. 每份工作都有一人做
每人都只做一项工作
model:
sets:
work/A B C D/;
worker/jia yi bing ding/;
time(worker,work):t,f;
endsets
!目标函数可以用标志出,也可以省略;
min=@sum(time(i,j):t(i,j)*f(i,j));
data:
!可以直接复制表格,但是在最后要有分号;
t=
15 18 21 24
19 23 22 18
26 17 16 19
19 21 23 17
; enddata
!每份工作都有一人做;
@for(work(j):@sum(time(i,j):f(i,j))=1);
!每人都只做一项工作;
@for(worker(i):@sum(time(i,j):f(i,j))=1);
!让f取0-1值,此条件可以省略;
!@for(time(i,j):@bin(f(i,j)));
end
为什么bin(f(i,j));可以省略?? 因为对于该类线性规划理论已经保证了变量的取值只可能是0或1. 用0—1规划做这题还是比较好做的啊 {:3_42:}{:3_42:}
页:
[1]