コード例 #1
0
ファイル: CostHelper.py プロジェクト: rubik0cube/MyAirLine
def calculateDistance(cityList):
    distance = 0
    counter = len(cityList)
    i = 0
    while counter > 1:
        nextCity = cityList[i+1]
        flyToCityDic = UserQuerying.getFlyToCity(cityList[i])
        distanceToNextCity = flyToCityDic[nextCity]
        distance += distanceToNextCity
        counter -= 1
        i += 1
    return distance
コード例 #2
0
ファイル: CostHelper.py プロジェクト: rubik0cube/MyAirLine
def calculateCost(cityList):
    cost = 0
    counter = len(cityList)
    i = 0
    while counter > 1:
        nextCity = cityList[i+1]
        flyToCityDic = UserQuerying.getFlyToCity(cityList[i])
        distanceToNextCity = flyToCityDic[nextCity]
        
        rate = 0.35 - 0.05*i
        if rate <= 0:
            rate = 0
        cost = cost + distanceToNextCity*rate
        
        counter -= 1
        i += 1
    return cost
コード例 #3
0
 def testRemoveRoute(self):
     UserQueryingExpand.removeRoute()
     source = "Hong Kong"
     dest = "Shanghai"
     self.assertFalse(dest in UserQuerying.getFlyToCity(source))
     
     
     
     
     
     
     
     
     
     
     
     
     
     
コード例 #4
0
ファイル: CostHelper.py プロジェクト: rubik0cube/MyAirLine
def calculateTime(cityList):
    flyingTime = 0.0
    layoverTime = 0.0
    acceleration = 750.0*750/(2*200)
    counter = len(cityList)
    i = 0
    while counter > 1:
        nextCity = cityList[i+1]
        flyToCityDic = UserQuerying.getFlyToCity(cityList[i])
        distanceToNextCity = flyToCityDic[nextCity]
        # calculate the flying time
        if distanceToNextCity >= 400:
            accTime = 200.0*2/750
            decTime = accTime
            cruisingTime = (distanceToNextCity - 400.0)/750
            flyingTime = flyingTime + accTime + decTime + cruisingTime
        else:
            accTime = math.sqrt(2*distanceToNextCity/acceleration)
            flyingTime = flyingTime + 2*accTime
        # calculate the layover time
        if i != 0:
            cityCode = UserQuerying.nameToCode(cityList[i])
            hubNumber = QueryingData.hubCity[cityCode]
            waitingTime = (120.0 - hubNumber*10)/60 
            layoverTime = layoverTime + waitingTime
        counter -= 1
        i += 1
      
    return (flyingTime + layoverTime)
            
            
    
    
    
    
    
    
    
    
コード例 #5
0
def getShortestPath():
    '''
    This function will find the shortest path between two cities
    And calculate the distance, cost and consuming time about the
    Shortest path
    '''
    graph = {}
    pathList = None
    source = raw_input("Please enter the source city: \n")
    destionation = raw_input("Please enter the destination city: \n")
    for city in QueryingData.cityDicationary:
        graph[city] = UserQuerying.getFlyToCity(city)
    pathList = DijkstraAlgorithm.shortestPath(graph, source, destionation)
    print "Ths shortest path: "
    for city in pathList:
        print '>' + city
    print ""
    distance = CostHelper.calculateDistance(pathList)
    cost = CostHelper.calculateCost(pathList)
    time = CostHelper.calculateTime(pathList)
    print "Total distance is: " + str(distance) + " kilometers"
    print "Total cost is: $" + str(cost) 
    print "Total consuming time is: " + str(time) + " hours"
コード例 #6
0
ファイル: OutPutTest.py プロジェクト: rubik0cube/MyAirLine
'''
Created on Feb 27, 2013

@author: shengchao
'''
from DataParse import Parser
from DataParse import QueryingData
from DataParse import UserQueryingExpand
from DataParse import UserQuerying
from DataParse import DijkstraAlgorithm

Parser.Parser()

graph = {}
for city in QueryingData.cityDicationary:
    
    graph[city] = UserQuerying.getFlyToCity(city)
    
print DijkstraAlgorithm.shortestPath(graph, "Los Angeles", "London")
コード例 #7
0
ファイル: AddRouteTest.py プロジェクト: rubik0cube/MyAirLine
 def testAddRoute(self):
     UserQueryingExpand.addRoute()
     source = "Champaign"
     dest = "Shanghai"
     self.assertTrue(dest in UserQuerying.getFlyToCity(source))