Beispiel #1
0
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
Beispiel #2
0
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()
Beispiel #4
0
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)
Beispiel #5
0
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