多处最优服务次序问题(python)

最优服务次序问题:
设有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)

测试数据和测试结果:
在这里插入图片描述

  • 2
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值