def FlowShop(n,a,b): job = []#记录n个工件Jobtype x= [0 for i in range(n)]#记录最优加工顺序 for i in range(n): if a[i]>b[i]: key = b[i] else: key = a[i] N1 = a[i]<b[i] job.append(Jobtype(key,i,N1)) job.sort() j=0 k=n-1 for i in range(n): if job[i].N1: x[j]=job[i].id#将N1中的工件放置在数组c的前端 j += 1 else: x[k]=job[i].id# 将N2中的工件放置在数组c的后端 k -= 1 j = a[x[0]] k = j + b[x[0]] for i in range(1,n):#计算总时间 j += a[x[i]] if(j < k): k = b[x[i]] + k else: k = j + b[x[i]] return x,k if __name__ == "__main__": a = [3,8,10,12,6,9,15] b = [7,2,6,18,3,10,4] n = len(a) x,k = FlowShop(n,a,b) print("最优加工次序为:") for i in range(n): print(x[i] + 1,end = ' ')
时间: 2024-02-14 18:07:15 浏览: 87
这段代码实现了一个流水车间调度问题的解决方案。其中,n表示工件数量,a和b分别表示每个工件在不同机器上的加工时间。FlowShop函数首先通过比较a和b的大小来确定每个工件的类型(N1或N2),然后对工件按照key值进行排序。接着,按照N1类型的工件放在数组x的前端,按照N2类型的工件放在数组x的后端。最后,通过计算每个工件在不同机器上的加工时间,得到整个流水车间的最优加工次序和总时间。
需要注意的是,这段代码中的实现并不是完整的,缺少了Jobtype类的定义,而且也没有对代码进行注释说明。同时,这段代码只是实现了一种简单的贪心算法,不能保证得到全局最优解。
阅读全文