def createXicaAirline(): """ Function createXicaAirline ============================== This function has no input parameters Returns an airline with 2 aircraft and 4 flights """ # creates first aircraft with some values AC1 = aircraft.Aircraft() AC1.callsign = "EC234" AC1.type = "A320" AC1.seats = 280 # creates a second aircraft with other values AC2 = aircraft.Aircraft() AC2.callsign = "EC504" AC2.type = "A321" AC2.seats = 310 # creates first flight with some values FL1 = flight.Flight() FL1.dep = "Barcelona" FL1.arr = "Budapest" FL1.time_dep = 8 * 60 FL1.time_arr = 11 * 60 FL1.passengers = 54 # creates second flight with some values FL2 = flight.Flight() FL2.dep = "Barcelona" FL2.arr = "Istambul" FL2.time_dep = 9 * 60 FL2.time_arr = 12.5 * 60 FL2.passengers = 154 # creates third flight with some values FL3 = flight.Flight() FL3.dep = "Istambul" FL3.arr = "Budapest" FL3.time_dep = 17 * 60 FL3.time_arr = 19.25 * 60 FL3.passengers = 140 # creates fourth flight with some values FL4 = flight.Flight() FL4.dep = "Budapest" FL4.arr = "Barcelona" FL4.time_dep = 20 * 60 FL4.time_arr = 23 * 60 FL4.passengers = 97 # creates the airline Xica = airline.Airline() Xica.name = "Xica Airline" airline.add_aircraft(Xica, AC1) airline.add_aircraft(Xica, AC2) airline.add_operation(Xica, FL1) airline.add_operation(Xica, FL2) airline.add_operation(Xica, FL3) airline.add_operation(Xica, FL4) return Xica
def read_instance(filename): #====== VARIABLES INITIALIZATION ===== A = list() A_h = list() A_m = list() D = list() D_h = list() D_m = list() L0 = 0 LNP1 = 0 P = dict() n = 0 #====== Data File reading ====== with open(filename + '.txt', 'r') as file: all_data = file.read() #====== Data formating ====== line = all_data.split("\n") #corresponds to each line of the data file for i in range(len(line)): if i == 0 or i == 1: temp = line[i].split(" ") pb_data[temp[0]] = temp[1] else: #contruction of vectors A, D and matrix P temp = line[i].split(" ") if len(temp) > 1: A.append(temp[1]) D.append(temp[2]) P[n] = [] for j in range(3, len(temp) - 1): P[n].append(int(temp[j])) n += 1 #====== Discrete time computation ====== for i in range(len(A)): A_split = str(A[i]).split(":") D_split = str(D[i]).split(":") A_h.append(A_split[0]) A_m.append(A_split[1]) D_h.append(D_split[0]) D_m.append(D_split[1]) A[i] = int(A_h[i]) * 12 + int(int(A_m[i]) / 5) D[i] = int(D_h[i]) * 12 + int(int(D_m[i]) / 5) L0 = int(A_h[0]) * 12 LNP1 = (int(D_h[len(D) - 1]) + 1) * 12 #======= Flight objects creation ======= for i in range(int(pb_data["Flights"])): flights.append(flight.Flight()) flights[i].number = i flights[i].arrival_time = A[i] flights[i].departure_time = D[i] flights[i].compatible_gates = P[i] return flights, P, L0, LNP1 """Affichage de la séquence d'avions à ordonnancer."""
import aircraft, flight, assignment ac1 = aircraft.Aircraft() ac1.callsign = 'AC320' ac1.type = 'A320' ac1.seats = 80 ac2 = aircraft.Aircraft() ac2.callsign = 'PAPA' ac2.type = 'A320' ac2.seats = 94234 f1 = flight.Flight() f1.dep = "Barcelona" f1.arr = "Vigo" f1.time_dep = 8 * 60 f1.time_arr = 9 * 60 + 50 f1.passengers = 48 f2 = flight.Flight() f2.dep = "Vigo" f2.arr = "New York" f2.time_dep = 15 * 60 f2.time_arr = 20 * 60 f2.passengers = 74 f3 = flight.Flight()
import airline, aircraft, flight # Test aircraft ac = aircraft.Aircraft() ac.callsign = "AC320" ac.type = "A320" ac.seats = 80 aircraft.show_aircraft(ac) # Test flight fl = flight.Flight() fl.dep = "Barcelona" fl.arr = "Vigo" fl.time_dep = 60 * 8 fl.time_arr = 60 * 9 + 10 fl.passengers = 81 flight.show_flight(fl) print(flight.fits_flight_in_aircraft(fl, ac)) # Test airline al = airline.Airline() al.name = "Rabos Airlines" al.aircrafts.append(ac) al.operations.append(fl) airline.show_airline(al)
def read_instance(filename): """ 读取文件中的信息 """ """ ========== 变量初始化 ========== """ A = list() A_h = list() A_m = list() D = list() D_h = list() D_m = list() # L0 = 0 # LNP1 = 0 P = dict() n = 0 """ ========== 获取文件中的数据 ========== """ # ====== 阅读数据文件 ====== with open(filename, 'r') as file: all_data = file.read() # 得到了txt文件中的数据 """ ========== 数据规范化 ========== """ line = all_data.split( "\n" ) # 把 all_data 的每一行都变成字符串,然后存入新生成的列表 line 中;即 line 中的每个元素对应于数据文件的每一行 for i in range(len(line)): # 对 line 的每一项根据索引来进行循环 if i == 0 or i == 1: # 因为 line 列表中的前两项为:'Gates 5', 'Flights 25' temp = line[i].split( " ") # 以空格为标识符,把 line[i] 内的内容分割字符串,然后存入新生成的列表 temp 中 pb_data[temp[0]] = temp[ 1] # 把 temp 列表的内容变成字典,比如:['Gates', '5'] --> {'Gates': '5'} else: # 列表 A、D 和字典 P 的构造 temp = line[i].split( " " ) # 以空格为标识符,把 line[i] 内的内容分割字符串,然后存入新生成的列表 temp 中,比如:['#00:', '08:20', '10:45', '0', '1', '2', '3', '4', ''] if len(temp) > 1: # 比1大,表明是有航班需要停放进停机场的 A.append(temp[1]) # 将 “到港时间” 存入列表 A 中 D.append(temp[2]) # 将 “离港时间” 存入列表 D 中 P[n] = [] # P是字典,n的初值是0,在字典 P 中加入 “键为n、值为[]” 的元素 for j in range(3, len(temp) - 1): P[n].append(int(temp[j])) # 把停机位的编号存到字典P中键n对应的值里,这个值是一个列表 n = n + 1 # n服务于字典 P,主要是为了作为字典 P 的一个标杆 """ ========== 到、离港时间的数值化换算 ========== """ for i in range(len(A)): A_split = str(A[i]).split(":") # A_split 为一个存放每次到港时和分的中间值,其中的元素是字符形式 D_split = str(D[i]).split(":") # D_split 为一个存放每次离港时和分的中间值,其中的元素是字符形式 A_h.append(A_split[0]) # A_h存放每次到港的“时” A_m.append(A_split[1]) # A_h存放每次到港的“分” D_h.append(D_split[0]) # D_h存放每次离港的“时” D_m.append(D_split[1]) # D_h存放每次离港的“分” A[i] = int(A_h[i]) * 12 + int( int(A_m[i]) / 5) # 比如,把原本存放的到港时间8:20,量化成了数字100 D[i] = int(D_h[i]) * 12 + int(int(D_m[i]) / 5) # 记录到港时间的最早的 “时” ,以及离港时间的最晚的 “时” L0 = int(A_h[0]) * 12 LNP1 = (int(D_h[len(D) - 1]) + 1) * 12 """ ========== 航班对象创建 ========== """ for i in range( int(pb_data["Flights"]) ): # pb_data = {'Gates': '5', 'Flights': '25'},这里取25,即航班数量,有多少个航班就创建多少个航班对象 flights.append(flight.Flight()) flights[i].number = i flights[i].arrival_time = A[i] flights[i].departure_time = D[i] flights[i].compatible_gates = P[i] return flights, P, L0, LNP1