最优服务次序问题-算法设计与分析实验三

1问题

最优服务次序问题:设有n个顾客同时等待一项服务。顾客i需要的服务时间为ti,1≤i≤n。共有s处可以提供此服务。应如何安排n个顾客的服务次序才能使平均等待时间达到最小平均等待时间是n个顾客等待服务时间的总和除以n。

2问题分析

贪心策略:由于每个顾客i的服务时间为ti,要实现等待服务时间总和最小,应该尽可能安排ti值小的顾客,进行服务。

3问题建模

问题建模:假设原问题的时间为T,已经知道了某个最优服务系列,最优解为min={t(1),t(2),…,t(n)}(其中t(i)为第i个客户需要的服务时间),那么每个客户需要的等待是时间为:
T(1)=t(1);
T(2)=t(1)+t(2);
 … 
T(n)=t(1)+t(2)+…+t(n);
那么,总的等待时间,即为最优解 
Tmin=n*t(1)+(n-1)*t(2)+(n-2)t(3)…+(n+1-i)t(i)+…+2t(n-1)+1t(n)

4算法描述

输入用户等待所需时间列表
将等待时间按从小到大进行排列
利用数学公式Tmin=n*t(1)+(n-1)*t(2)+(n-2)t(3)…+(n+1-i)t(i)+…+2t(n-1)+1t(n)进行计算得到结果

5算法源码

list = []
i=1
a=1
while a!=0:
    a = int(input())
    list.append(a)
list.pop()
list.sort()
n=len(list)
sum=0
for i in(list):
    b = n*int(i)
    sum = sum+b
    n-=1
print(sum/len(list))

六、测试数据
12 23 67 34 61
七、程序运行结果(要求:截图说明算法运行的结果)
在这里插入图片描述
更多大学课业实验实训可关注公众号:Time木
回复相关关键词
学艺不精,若有错误还望指点

猜你喜欢

转载自blog.csdn.net/qq_43374681/article/details/122381878