import pandas as pd
import numpy as np
import random
from collections import defaultdict
import datetime
'''
任务到服务技术专家的分配,需要满足下列约束:
每个服务技术专家在任何时刻同时处理的任务数不超过3个,即当技术专家在某一时刻同时处理的任务数为3,则此刻不允许将新的任务分配给该
技术专家;默认每个任务一旦分配给技术专家立即开始处理。
任务在分配后允许被再次分配给其他服务技术专家,但每个任务被分配的次数不超过5次。
整个调度过程以分钟为最小时间单元,一个任务一分钟之内只能分配1次;即每次分配后任务必须在被分配的服务专家至少停留一个时间单元。
'''
wo0 = pd.read_csv("./work_order.csv",header=None)#id,任务到达时间,种类,过期时间
wo0.columns=[‘id’,“time”,“cat”,“eta”]
ptm0 = pd.read_csv("./process_time_matrix.csv",index_col=0)#行专家,列种类
ptm0.columns = [int(i) for i in ptm0.columns]
nums = ptm0.shape[0]
wo = wo0.copy()
ptm = pd.concat([ptm0]*3).reset_index()
def relu(x):
if x <0:
return x
else:
return 0
relu = np.vectorize(relu)
def inf(x):