Exemple #1
0
    def __init__(self):
        deque.__init__(self)

        self.currentTime = 0
        self.nextAvailable = 0
        self.lastPlane = Aircraft('nil', 0, 0, 0, 0)
        self.totalFuelBurned = 0
        self.totalDelayCost = 0
def main():
    Aircraft.load_aircrafts()
    route = ['DUB','LHR','SYD','JFK','AAL']
    valid_aircraft = 'A330'
    test_itin = Itinerary(route,valid_aircraft)
    print(test_itin)
    invalid_aircaft = '£££'
    test_itin2 = Itinerary(route,invalid_aircaft)
    print(test_itin2)
Exemple #3
0
 def create_groups(self):
     is_play1 = False
     is_play2 = False
     for air in gl.aircraft_group.sprites():
         if air.play.index == 0:
             is_play1 = True
         elif air.play.index == 1:
             is_play2 = True
     if self.aircraft_time == 0 or self.clock_ticks - self.aircraft_time > 4000:
         if is_play1 is False and self.play1.play > 0:
             self.aircraft_time = self.clock_ticks
             Aircraft((gl.all_group, gl.aircraft_group), self, self.play1)
             self.aircraft_start.play(0, 0, 0)
     if self.meteorite_time == 0 or self.clock_ticks - self.meteorite_time > 100:
         m_count = len(gl.meteorite_group.sprites())
         if m_count < self.meteorites_count:
             self.meteorite_time = self.clock_ticks
             Meteorite((gl.all_group, gl.meteorite_group), self)
     if self.reward_time == 0 or self.clock_ticks - self.reward_time > 100:
         r_count = len(gl.reward_group.sprites())
         if r_count < self.reward_count:
             self.reward_time = self.clock_ticks
             rtype = random.randint(0, 1)
             if rtype == 1:
                 Reward((gl.all_group, gl.reward_group, gl.s_reward_group),
                        self, random.randint(0, 5))
             else:
                 Reward((gl.all_group, gl.reward_group, gl.p_reward_group),
                        self, random.randint(6, 9))
Exemple #4
0
class TakeOffQueue(deque):
    def __init__(self):
        deque.__init__(self)

        self.currentTime = 0
        self.nextAvailable = 0
        self.lastPlane = Aircraft('nil', 0, 0, 0, 0)
        self.totalFuelBurned = 0
        self.totalDelayCost = 0

    def print(self):
        print("next available " + str(self.nextAvailable))
        for plane in self:
            plane.printAircraft()
        print("\n")

    # depart aircraft if available, otherwise update time
    def update(self, newTime):
        self.currentTime = newTime
        self.nextAvailable = max(self.nextAvailable, self.currentTime)
        if len(self) > 0 and self.nextAvailable <= self.currentTime:
            self.lastPlane = self.popleft()
            res = self.lastPlane.depart(self.nextAvailable, self)
            self.nextAvailable = self.nextAvailable + self.lastPlane.delayToOthers
            return res + self.update(newTime)
        return 0, 0

    # insert new plane into queue at appropriate index
    def insertIntoTakeoffQueue(self, plane):
        res = self.update(plane.arrivalTime)
        self.insert(plane.findIndex(self), plane)
        return res
 def __init__(self):
     self.data = pd.read_excel('data/fleet.xlsx', index_col=0, usecols='A:D')
     self.amount = {}
     self.aircraftList = {}
     for i in self.data.columns:
         fl = self.data[i]
         self.amount[i] = fl['Fleet']
         self.aircraftList[i] = Aircraft(i, fl['Speed'], fl['Cargo capacity'], fl['Average TAT'], fl['Maximum Range'], fl['Runway Required'], fl['Lease Cost'], fl['Fixed Operating Cost'], fl['Cost per Hour'], fl['Fuel Cost Parameter'])
Exemple #6
0
def test():

    print(
        "-------------------------------------Testing AC----------------------------------"
    )

    x0 = [0.0, 0.0, 0.0]
    vel0 = [1.0, 2.0, 3.0]
    euler0 = [0.1, 0.2, 0.3]
    ang_vel0 = [0.1, 0.2, 0.3]

    initial_parameters = [x0, vel0, euler0, ang_vel0]
    ac = Aircraft(initial_parameters, Tsc=0.01, RK4=False)
    forces = [1, 1, 1]
    forces = [0, 0, 0]
    moments = [0, 0, 0]
    print(ac.RK4)
    print(ac.vel, ac.ang_vel)
    print(ac.DotAngVel_get())
    ac.update_onestep(forces, moments)
    print(ac.vel, ac.ang_vel)
Exemple #7
0
 def loadData(self, csvFile):
     try:
         with open(csvFile) as csvFile:
             reader = csv.DictReader(csvFile)
             try:
                 for row in reader:
                     self._aircraftDict[row['code']] = Aircraft(
                         row['type'], row['units'], row['manufacturer'],
                         row['range'])
             except Exception:
                 pass
     except FileNotFoundError:
         return ('CSV file not found!')
         sys.exit(1)
Exemple #8
0
def setup():
    aircraftList = []
    os.chdir(
        r'C:/Users/zblue/Documents/Fall 2017/Algorithms for Nonlinear Optimization/'
    )
    unMergeExcelCell('AircraftInfo_final.xls')
    workbook = xlrd.open_workbook('AircraftInfo_temp2_unmerged.xls',
                                  formatting_info=True)
    sheet = workbook.sheet_by_index(0)
    row_idx = 1
    while row_idx < sheet.nrows:
        name = sheet.cell(row_idx, 0).value + ' '
        if type(sheet.cell(row_idx, 1).value) is str:
            name += sheet.cell(row_idx, 1).value
        else:
            name += str(int(sheet.cell(row_idx, 1).value))

        if not sheet.cell(row_idx, 2).value == '':
            if type(sheet.cell(row_idx, 2).value) is str:
                name += '-' + sheet.cell(row_idx, 2).value
            else:
                name += '-' + str(int(sheet.cell(row_idx, 2).value))

        myACDict = {
            'Light': AircraftType.TURBOPROP,
            'Medium': AircraftType.NARROW,
            'Heavy': AircraftType.HEAVY
        }
        acType = myACDict[sheet.cell(row_idx, 3).value]

        inService = sheet.cell(row_idx, 4).value
        if inService == '':
            inService = 0
        capacity = sheet.cell(row_idx, 5).value
        if capacity == '':
            capacity = 0
        fuelBurn = sheet.cell(row_idx, 6).value
        if fuelBurn == '':
            fuelBurn = 0
        aircraftList.append((Aircraft(name, acType, capacity, fuelBurn,
                                      3), inService))

        row_idx += 1
    return aircraftList
Exemple #9
0
    def loadData(self, filename):
        """
        gets the filename and loads all the information
        about the Aircraft

        **Parameters**\n
        ----------\n
        filename: Aircraft data filename
        """

        with open(filename, encoding="utf8") as file:

            reader = csv.reader(file)

            try:
                for row in reader:
                    self.aircraftdict[row[0]] = Aircraft(
                        row[0], row[1], row[2], row[3], row[4])

            except FileNotFoundError:
                print("File not found")
# s1 = int(input('Enter y coordinate for the source: '))
# source_1 = [s0, s1]
# dest_1 = [d0, d1]
#
# d0_2 = int(input('Enter x coordinate for destination: '))
# d1_2 = int(input('Enter y coordinate for the destination: '))
# s0_2 = int(input('Enter x coordinate for the source: '))
# s1_2 = int(input('Enter y coordinate for the source: '))
# source_2 = [s0_2, s1_2]
# dest_2 = [d0_2, d1_2]
#
# A1 = Aircraft(dest_1, 0, source_1)
# A2 = Aircraft(dest_2, 0, source_2)

# Creating the instance of Aircrafts
A1 = Aircraft([1, 8], 0, [1, 2])
A2 = Aircraft([1, 2], 0, [1, 7])
# A1 = Aircraft([1, 5], 0, [1, 1])
# A2 = Aircraft([1, 5], 0, [1, 7])

# A1 = Aircraft([2,7], 0, [5, 4])
# A2 = Aircraft([5,6], 0, [8, 9])

#Creating the instance of controller
C1 = AircraftController()
C2 = AircraftController()

t1 = A1.isDestination()
t2 = A2.isDestination()
m1 = A1.Message()
m2 = A2.Message()
Exemple #11
0
 def add_aircraft(self, mode_s):
     self.dict[mode_s] = Aircraft("", "", [], [], [], [], [], [], [], [])
#from os import environ as _environ; _environ["scalar_off"] = "off"

from scalar.units import ARCDEG, IN
from scalar.units import AsUnit
from Aircraft import Aircraft
# from Aircraft_Models.Reg2014Aircraft_AeroCats.TradeStudies.WeightTrade.Aircraft_NickSchwartz import Aircraft

import pylab as pyl

if __name__ == "__main__":
    Aircraft.Wing.Draw2DAirfoilPolars(fig=1)
    Aircraft.HTail.Draw2DAirfoilPolars(fig=2)

    Aircraft.PlotPolarsSlopes(fig=3)
    Aircraft.PlotCMPolars(
        4, (-12 * ARCDEG, -5 * ARCDEG, 0 * ARCDEG, +5 * ARCDEG, +12 * ARCDEG),
        XcgOffsets=(+0.02, -0.02))

    Aircraft.PlotCLCMComponents(fig=5,
                                del_es=(-10 * ARCDEG, -5 * ARCDEG, 0 * ARCDEG,
                                        +5 * ARCDEG, +10 * ARCDEG))

    Aircraft.Refresh()

    print "Xnp             : ", AsUnit(Aircraft.Xnp(), 'in')
    print "Wing X          : ", AsUnit(Aircraft.Wing.X[0], 'in')
    print 'HTail Incidence : ', AsUnit(Aircraft.HTail.i, 'deg')
    print 'HTail VC        : ', Aircraft.HTail.VC

    pyl.show()
        self.store_of_ammo = store_of_ammo
        self.health_point = health_point

    def addAircraft(self, aircraft):
        self.list_of_aircraft.append(aircraft)

    def fill(self):
        for item in self.list_of_aircraft:
            if item.getType() == "F35":
                self.store_of_ammo = item.refill(self.store_of_ammo)
                print(str(self.store_of_ammo))

    def fight(self, Carrier):
        carrier_max_dmg = 0
        for item in self.list_of_aircraft:
            carrier_max_dmg += 

carrier = Carrier(1000, 2000)

aircraft1 = Aircraft("F35")
carrier.addAircraft(aircraft1)
aircraft2 = Aircraft("F16")
carrier.addAircraft(aircraft2)
aircraft3 = Aircraft("F35")
carrier.addAircraft(aircraft3)
aircraft4 = Aircraft("F16")
carrier.addAircraft(aircraft4)
aircraft5 = Aircraft("F35")
carrier.addAircraft(aircraft5)
aircraft6 = Aircraft("F16")
carrier.addAircraft(aircraft6)
class testAircraftClass(unittest.TestCase):
    """Unit tests for Aircraft class"""
    def setUp(self):
        self.testAircraft1 = Aircraft("A330", "metric", "Airbus", 13430)
        self.testAircraft2 = Aircraft("777", "imperial", "Boeing", 9700)

    # Test to check if aircraft attributes are set up for metric units
    def testMetricAttributes(self):
        self.assertEqual(self.testAircraft1.planeType, "A330")
        self.assertEqual(self.testAircraft1.manufacturer, "Airbus")
        self.assertEqual(self.testAircraft1.range, 13430)
        self.assertEqual(self.testAircraft1.MIN_FUEL, 1000)
        self.assertEqual(self.testAircraft1.maxFuel, 13430)

    # Test to check aircraft attributes are correct for imperial units
    def testImperialAttributes(self):
        self.assertEqual(self.testAircraft2.planeType, "777")
        self.assertEqual(self.testAircraft2.manufacturer, "Boeing")
        self.assertEqual(self.testAircraft2.range, 15607.3)
        self.assertEqual(self.testAircraft2.MIN_FUEL, 1000)
        self.assertEqual(self.testAircraft2.maxFuel, 15607.3)

    # Test to check strings of Aircraft class
    def testString(self):
        self.assertEqual(str(self.testAircraft1), "Airbus A330")
        self.assertEqual(str(self.testAircraft2), "Boeing 777")

    # Test to check for invalid units given on aircraft setup
    def testUnits(self):
        testAircraft = Aircraft("A330", "bob", "Airbus", 13430)
        self.assertEqual(testAircraft.range, 13430)

    # Test to check for units given as wrong data type
    def testUnitDataType(self):
        testAircraft = Aircraft("A330", "metric", "Airbus", "abc")
        self.assertEqual(testAircraft.range, 0)
        testAircraft = Aircraft("A330", "metric", "Airbus", [12, 13])
        self.assertEqual(testAircraft.range, 0)
        testAircraft = Aircraft("A330", "metric", "Airbus", self.testAircraft2)
        self.assertEqual(testAircraft.range, 0)

    # Test to check adding amount of fuel less than maximum fuel level
    def testAddLessFuel(self):
        self.testAircraft1.addFuel(5000)
        self.assertEqual(self.testAircraft1.getFuel(), 5000)
        self.testAircraft1.addFuel(3000)
        self.assertEqual(self.testAircraft1.getFuel(), 8000)

    # Test to check adding amount of fuel greater than maximum fuel level
    def testAddMoreFuel(self):
        fuelOver = self.testAircraft1.addFuel(20000)
        self.assertEqual(fuelOver, 6570)

    # Test to check adding fuel less than zero
    def testSyphonFuel(self):
        self.testAircraft1.addFuel(-5000)
        self.assertEqual(self.testAircraft1.getFuel(), 0)

    # Test to check adding fuel where volume is of incorrect data type
    def testAddFuelAsString(self):
        self.testAircraft1.addFuel("abc")   # Volume as string
        self.assertEqual(self.testAircraft1.getFuel(), 0)
        self.testAircraft1.addFuel([123, 345])  # Volume as list
        self.assertEqual(self.testAircraft1.getFuel(), 0)
        self.testAircraft1.addFuel((123, 345))  # Volume as tuple
        self.assertEqual(self.testAircraft1.getFuel(), 0)
        self.testAircraft1.addFuel(self.testAircraft2)  # Volume as object
        self.assertEqual(self.testAircraft1.getFuel(), 0)

    # Test to check that aircraft can use fuel
    def testUseFuel(self):
        self.testAircraft1.addFuel(13000)
        self.testAircraft1.useFuel(3000)
        self.assertEqual(self.testAircraft1.getFuel(), 10000)
        self.testAircraft1.useFuel(4500)
        self.assertEqual(self.testAircraft1.getFuel(), 5500)

    # Test to check using invalid amounts of fuel
    def testUseInvalidFuel(self):
        self.testAircraft1.addFuel(13000)
        self.testAircraft1.useFuel(-3000)   # Test negative amount of fuel
        self.assertEqual(self.testAircraft1.getFuel(), 13000)
        self.testAircraft1.useFuel("abc")   # Test adding string value as fuel
        self.assertEqual(self.testAircraft1.getFuel(), 13000)
        self.testAircraft1.useFuel([123, 24])   # Test using list to add fuel
        self.assertEqual(self.testAircraft1.getFuel(), 13000)
 def setUp(self):
     self.testAircraft1 = Aircraft("A330", "metric", "Airbus", 13430)
     self.testAircraft2 = Aircraft("777", "imperial", "Boeing", 9700)
Exemple #16
0
 def __init__(self):
     self.file.seek(0)
     for Aircraft_line in self.file:
         self.aircrafts.append(Aircraft.parse(Aircraft_line))
Exemple #17
0
import pylab as pyl
from Aircraft import Aircraft

#
# This will generate a weight table of the entire aircraft
# The objects in the table are labeled based on their .name attribute
#
WeightTable = Aircraft.GetWeightTable()

#
# You can turn off sub categories of a part by setting Collapse = True
#
#WeightTable.Fuselage.Collapse = True
#WeightTable.Fuselage.Nose.Collapse = True

#
# You can give a specific order to the parts in the table
#
WeightTable.Wing.Order = 0
WeightTable.HTail.Order = 1
WeightTable.VTail.Order = 2
WeightTable.Fuselage.Order = 3

#
# This is how you change what it is sorted by. Options are
# 'Weight', 'CG' or 'Order' ('Weight' is default)
#
WeightTable.SortBy = 'Order'

#
# This will draw the plot table
import pylab as pyl
import numpy as npy

#
# Set-up AVL Controls Run
#
Controls = ACControls(Aircraft)
Controls.RunDir = 'AVLControls/'
Controls.AddRun('Stab', 'AVLAircraft.avl', WriteAVLInput = True)
Controls.Stab.DumpStability('AVLDeriv.txt')
Controls.Stab.Exit()

Controls.ExecuteAVL()

Controls.ReadAVLFiles()

Controls.Ixx = 0.314*SLUG*FT**2
Controls.Iyy = 0.414*SLUG*FT**2
Controls.Izz = 0.570*SLUG*FT**2

Controls.Weight = 7.4*LBF

Deriv = Controls.Deriv[0]

Deriv.StabilityTable(fig=1)

print "\n Aircraft MOI: ",Aircraft.MOI()
print 'Steady state roll rate: ', AsUnit( Deriv.RollDueToAileron(20 * ARCDEG, 'Aileron'), 'deg/s' )

Aircraft.Draw(2)
pyl.show()
Exemple #19
0
 def create(self, capacity, registrationNo, types, name):
     a = Aircraft(capacity, registrationNo, types, name)
     self.aircrafts.append(a)
     self.file.write(f"{str(a)}\n")
     self.file.flush()
 def check_aircraft_type(self,equipment):  # check if aircraft type is valid
     if Aircraft.check_aircraft_type(equipment) is not False:
         return Aircraft(equipment)  # if valid, create aircraft object
     else:
         return 'Invalid Aircraft Type'
Exemple #21
0
 def __init__(self):
     self.maxAmmo = 8
     self.base_damage = 30
     self.type = "F16"
     Aircraft.__init__(self)
Exemple #22
0
import numpy as np
np.errstate(divide='ignore')
import matplotlib.pyplot as plt
from math import sin
from math import cos

time_end = 350
dt = 0.05

t = 0
wingspan = 10
weight = 5
#State tuning: bxd, bx, bhd, bh, bVa
b_i = np.array([.9, .2, .6, .2, .1])

myAircraft1 = Aircraft(wingspan, weight, b_i)
myFlightPlan = FlightPlan()

#State variables: pn, pe, Xid, Xi, hd, h, Va
x = np.array([[0], [0], [0], [0], [0], [0], [0]])
#wind inputs : wn, we
w = np.array([0, 0])
#State inputs: CourseDerivative, Course (rads), Altitude Derivative, Altitude, Airspeed
u = np.array([0, .1, 0, 100, 12])

steps = int(time_end / dt)
psi_array = np.zeros(steps)
pn_array = np.zeros(steps)
pe_array = np.zeros(steps)
h_array = np.zeros(steps)
u_h_array = np.zeros(steps)
from Airport import Airport
from Route import Route
from Aircraft import Aircraft

plane = Aircraft("737", 5600, "LHR", "imperial")

madrid = Airport("Madrid", 3.7038, 40.4168, 0.84)
london = Airport("London", 0.1278, 51.5074, 1.17)
moscow = Airport("Moscow", 37.618423, 55.7558, 0.5)
shanghai = Airport("Shanghai", 121.4737, 31.2304, 0.4)
paris = Airport("Paris", 2.3522, 48.864716, 1)
hk = Airport("Hong Kong", 114.149139, 22.286394, 0.3)
athens = Airport("Athens", 23.727539, 37.983810, 1)
la = Airport("Los Angeles", -118.243683, 34.052235, 1.5)
hawaii = Airport("Honolulu", -157.917480, 21.289373, 1.5)
NYC = Airport("New York", -73.935242, 40.730610, 1.5)
dublin = Airport("Dublin", -6.266155, 53.350140, 1)
# dublin = Airport("Dublin", )

print("plane range is ", plane.getRange())
print(Route.calculate_distance(hk, la))

# stops = {
#     "Madrid": [london, dublin, madrid],
#     "Dublin": [london, madrid, dublin],
#     "London": [madrid, dublin, london]
# }
'''
Step 1: 
Produce a dictionary with possibilities. 
        # return the price of the start_vertex to the home_vertex
        return price_table[home_vertex]
    else:
        name_key = start_vertex + ":" + previous_vertex
        current_price += price_table[name_key]
        visited.append(name_key)
        return min(
            salesman(home_vertex, subset[0], start_vertex,
                     [x for x in subset if x != subset[0]], price_table,
                     current_price, visited),
            salesman(home_vertex, subset[0], start_vertex,
                     [x for x in subset if x != subset[1]], price_table,
                     current_price, visited))


plane = Aircraft("737", 5600, "LHR", "imperial")
madrid = Airport("Madrid", 3.7038, 40.4168, 0.84)
london = Airport("London", 0.1278, 51.5074, 1.17)
dublin = Airport("Dublin", 6.2603, 53.3498, 1)
berlin = Airport("Berlin", 13.4050, 13.4050, 1.99)

print(madrid.getName())

our_graph = Graph()

plane = Aircraft("737", 5600, "LHR", "imperial")
airport_list = [madrid, london, dublin, berlin]

for airport in airport_list:
    x = Vertex(airport.getName(), airport)
    our_graph.add_vertex(x)
Exemple #25
0
 def create(self, capacity, registrationNo, types, name):
     info = Aircraft(capacity, registrationNo, types, name)
     self.aircraft.append(info)
     self.file.write(f"{str(info)}\n")
     self.file.flush()
from Aircraft import Aircraft  # this runs without an error but doesn't give me the output I expected

jumbo = Aircraft("747")
print("About to start preparing a ", jumbo.planeType, " for takeoff")
jumbo.addFuel(30)
jumbo.printStatus()
jumbo.fuelCheck()
jumbo.fly(500)

airbus = Aircraft("A330")
print("About to start preparing a ", airbus.planeType, " for takeoff")
airbus.addFuel(2000)
airbus.printStatus()
airbus.fuelCheck()
airbus.fly(1000)

boeing = Aircraft("737")
print("About to start preparing a ", boeing.planeType, " for takeoff")
fuelInTruck = 50000
fuelInTruck = boeing.addFuel(fuelInTruck)
boeing.printStatus()
boeing.fuelCheck()
boeing.fly(5000)
print("Fuel Truck still has: ", fuelInTruck)
Exemple #27
0
from Transport import Engine
from PassengerCar import PassengerCar
from Aircraft import Aircraft
from Ship import Ship

if __name__ == "__main__":
    rb25 = Engine(3.0, 220, 6)
    nissan = PassengerCar(1000, 500, 300, rb25)
    airbus = Aircraft(10000, 2000, 4000)
    ship = Ship(20000, 6000, 2000)

    nissan.start()
    nissan.tank_up(120)
    nissan.start()
    nissan.make_sound()
    nissan.open_doors()
    airbus.make_sound()
    ship.make_sound()
Exemple #28
0
@author: ozmatron
'''
from Costs import Costs
from Aircraft import Aircraft
from Shortest_path import Shortest_path
import csv

try:
    with open('test.csv', newline='') as file:
        reader = csv.reader(file)
        for line in reader:
            list = line
            aircraft = list[5]
            list = list[0:5]
            range = Aircraft(aircraft).find_range()
            costs_dict = Costs(list, range).find_costs()

            the_path = Shortest_path(costs_dict, list).path_finder()
            print(the_path)
            if the_path != "Cannot make the distance, get a bigger plane":
                output = []
                x = 0
                y = 3
                while x < 34:
                    output.append(the_path[x:y])
                    x += 6
                    y += 6
                output.append(the_path[x - 1:])

                with open("bestroutes.csv", "a") as writing_file: