一 (1)问题的提出 某公司的营业时间是上午8点到21点,服务人员中途需要1小时的吃饭和休息时间。每人的工作时间为8小时,上午8点到17点的工作人员月工资为800元,中午12点到21点工作的人员的工资为900元。为保证营业时间内部有人值班,公司安排四个班次,其班次休息私见安排都有所安排。问如何安排服务人员既满足需求又使公司所付工资总数最少。表一 工作时间 休时 月工资 8:00 -17:00 12:00 -13:00 800 8:00 -17:00 13:00 -14:00 800 12:00-21:0016:00-17:10 900 12:00-21:0017:00-18:00 900 表二 时间区间 需求人数 8:00-10:00 20 10:00-12:00 25 17:00-14:00 10 14:00-16:00 30 16:00-18:00 20 18:00 -21:00 10怎么用lingo18软件代码实现
时间: 2023-08-18 14:05:09 浏览: 285
【电机】基于matlab GUI电机控制转速动画显示【含Matlab源码 9720期】.zip
这是一个典型的规划问题,可以使用lingo18软件进行求解。以下是对应的lingo18代码:
```
Model:
Sets:
shifts /shift1, shift2, shift3, shift4/;
times /time1, time2, time3, time4, time5, time6/;
Params:
demand(time) demand for each time period
/ time1 20, time2 25, time3 10, time4 30, time5 20, time6 10 /;
salary(shift) cost of each shift
/ shift1 800, shift2 800, shift3 900, shift4 900 /;
worktime(shift) work time for each shift
/ shift1 8, shift2 8, shift3 9, shift4 9 /;
resttime(shift) rest time for each shift
/ shift1 1, shift2 1, shift3 1, shift4 1 /;
Variables:
x(shift, time) binary decision variables
obj total cost to minimize
work(shift) total work time for each shift
rest(shift) total rest time for each shift
workload(time) total workload for each time period
Binary Variables:
x;
Equations:
total_cost objective function
worktime_con(work(shift)) work time constraint
resttime_con(rest(shift)) rest time constraint
demand_con(workload(time)) demand constraint
Bounds:
x(shift, time) binary
End:
total_cost = sum((shift, time), x(shift, time) * salary(shift));
work(shift) = sum(time, x(shift, time) * worktime(shift));
rest(shift) = sum(time, x(shift, time) * resttime(shift));
workload(time) = sum(shift, x(shift, time));
worktime_con(work) =E= 8;
resttime_con(rest) =E= 1;
demand_con(workload("time1")) =G= demand("time1");
demand_con(workload("time2")) =G= demand("time2");
demand_con(workload("time3")) =G= demand("time3");
demand_con(workload("time4")) =G= demand("time4");
demand_con(workload("time5")) =G= demand("time5");
demand_con(workload("time6")) =G= demand("time6"));
```
其中,Sets定义了班次和时间段,Params定义了需求人数、工资、工作时间和休息时间等参数,Variables定义了决策变量,Binary Variables定义了决策变量的值域,Equations定义了约束条件,Bounds定义了决策变量的范围。
在lingo18中执行该代码即可得到最优解,即最小化总工资的情况下满足所有需求的服务人员安排方案。
阅读全文