作业帮 > 综合 > 作业

lingo 这下面是代码model:sets:days/mon..sun/:required,start;endsets

来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/09/23 21:27:52
lingo
这下面是代码
model:
sets:
days/mon..sun/:required,start;
endsets
data:
每天所需的最少职员数;
required = 20 16 13 16 19 14 12;
enddata
最小化每周所需职员数;
min=@sum(days:start);
@for(days(J):
@sum(days(I) | I #le# 5:
start(@wrap(J+I+2,7))) >= required(J));
end
代码完
@for(days(J):
@sum(days(I) | I #le# 5:
start(@wrap(J+I+2,7))) >= required(J));
我想知道这循环的详细过程!
lingo 这下面是代码model:sets:days/mon..sun/:required,start;endsets
没有什么详细过程啊 你按他的要求写出下标来就行了 这里面@wrap(J+I+2,7)你可以自己查一下定义 就返回了一个 J+I+2-7K 这里面对于每个I,J 分别有K 使得J+I+2-7K的范围是在start下标范围之内的 类似于取模的效果而已
再问: 我的意思是这个算法 @for(days(J): @sum(days(I) | I #le# 5: start(@wrap(J+I+2,7))) >= required(J)); i为什么要进行小于5的筛选,工作五天? 下面一个条件约束为什么用下标 J+I-7K 和 J 对比?
再答: 你看好了 那是先求和了 所以根本不存在 start(@wrap(J+I+2,7))和required(J)比较的问题 至于为什么写I#le#5 你如果实在不知道你先具体的看J=1的时候这里具体是什么好吗 你要是实在理解不了那你可以按你自己的想法去写 不一定要用这个@wrap函数
再问: 例4.13 职员时序安排模型一项工作一周7天都需要有人(比如护士工作),每天(周一至周日)所需的最少职员数为20、16、13、16、19、14和12,并要求每个职员一周连续工作5天,试求每周所需最少职员数,并给出安排。注意这里我们考虑稳定后的情况。 这是题目 能解释下那个算法各行的意思么
再答: 那不是什么算法 就是个约束条件而已 算法是lingo自己给你实现的 你这里只是描述出来模型而已 你这里面不就这一句的意思不知道吗 这句就是对于每周的某一天J 所有这一天工作的人员的数量不少于需求 @sum(days(I) | I #le# 5: start(@wrap(J+I+2,7))) 就是来表达所有在J天工作的人数 不是说了吗 如果你不知道的话就代具体数进去看