如何利用Lingo求解指派问题

2025-10-31 17:30:09

1、工作分配

问题 :5 个工人的车间接到5 项不同的工作. 每个工人做每项工作熟练程度不同,所以完成所需时间不同(见表2.6). 每个工人必须做且只能做一项工作. 如何分配工作才能使完成全部工作花费的总时间最少?

如何利用Lingo求解指派问题

2、模型建立:

如何利用Lingo求解指派问题

3、模型求解

用LINGO 17求解. 输入代码如下:

model:

sets:

workers/w1..w5/;

jobs/j1..j5/;

links(workers,jobs):cost,x;

endsets

min=@sum(links:cost*x);

@for(workers(i):

@sum(jobs(j):x(i,j))=1;

);

@for(jobs(j):

@sum(workers(i):x(i,j))=1;

);

@for(links:@bin(x));

data:

cost=

4 5 3 8 7

1 6 7 3 9

7 3 2 11 4

9 12 8 4 3

2 5 5 9 7;

enddata

end

4、注意 这里用到了LINGO 17 的两个循环函数:@for( )和@sum( ). 循环变量需要通过集的名称来设定,集可以是二维或更高维的. 例如,@for(links:@bin(x))可以设定二维变量x(i,j)全部为0-1 型变量.

求解的结果如下:

如何利用Lingo求解指派问题

如何利用Lingo求解指派问题

5、结果显示:工人1 做工作3,工人2 做工作4,工人3 做工作2,工人4 做工作5,工人5 做工作1,花费的总时间最少为14,其中14=3+3+3+3+2.

 

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢