最优服务次序问题:
设有n个顾客同时等待一项服务。顾客i需要的服务时间为ti,1≤i≤n。共有s处可以提供此服务。应如何安排n个顾客的服务次序才能使平均等待时间达到最小平均等待时间是n个顾客等待服务时间的总和除以n。
要求:先写出贪心策略,问题建模,Python编写代码,测试数据,测试结果。
贪心策略:
客户按服务时间长短决定被服务次序,服务时间短的优先被服务,且前往下一个最快能结束服务的服务点。
问题建模:
1、首先定义顾客人数(n)和服务处个数(s),建立列表(li)储存每个顾客所需的服务时间,再将列表升序排序。
2、创建服务时间列表(time)和等待时间列表(sum),对每个服务点的目前时间进行比较,数值最小的服务点即为最快能接受服务的服务点,为该服务点进行服务。
3、将每个用户的等待时间相加,再除以客户的总数,即得到最小平均服务时间(t)。
Python编写代码:
```python
n=int(input("请输入顾客的人数:"))
s=int(input("请输入服务处个数:"))
print("输入每个顾客所需的服务时间:",end=' ')
li=list(map(int,input().split()))
li.sort()
time=[0]*100
sum=[0]*100
i,j=0,0
while i<n:
time[j]+=li[i]
sum[j]+=time[j]
i+=1
j+=1
if j==s:
j=0
k,t=0,0
while k<n:
t+=sum[k]
k+=1
float(t)
t/=n
print("平均最小等待时间为:%.2f"%t)
测试数据和测试结果: