Flight routes and linear programming 1

From UBC Wiki

Toy Model Profit Maximization

The assumptions here are based off a fictional airline flying from 3 airports and considering the use of 2 planes. Our analysis is made for a daily basis.

The flight routes are airline is running is given by the file below:

File:Toy Model Flight Schedule.xlsx

This file describes the duration of flights and an estimated number of passengers (could be the pre-booked amount plus some extra walk ons). Tallies the revenue generated from passengers. Also gives the frequency our airline company wants to run each route.

Using the data we now can attempt to figure out what planes to run on these route to maximize profit:

Maximize Profit = Revenue – Cost

Maximize revenue:

(Revenue = Σ(demand from airport i to j)(fare from airport i to j)):
  • Controlling the ticket prices to meet major passengers’ willing to pay

(we get the data of ticket prices after comparing with other airlines)

  • Matching seat capacity to passenger demand (PS: we could sell tickets out with special discount if any seats are still available by two days from departure)
  • Therefore , we need to set different but right prices based on different demand groups of passengers to just fill all the seats of airplanes in each route.( we could adjust price up for a higher-value demand, and down for a lower-value demand)

We get our average price on each route (flying from 3 airports):

}
FARE($) YVR SFO JFK
YVR - 400 600
SFO 250 - 400
JFK 550 500 -
Dep -Arrival Passanger Demand
YVR - JFK 1700
YVR - SFO 1100
JFK -YVR 1350
JFK - SFO 850
SFO - YVR 950
SFO -JFK 1000


Revenue = (1700)(600) + (1100)(400) + (1350)(550) + (850)(500) + (950)(250) + (1000)(400) = $ 3,265,000

So this is a set value. We need to minimize the cost to maximize profit.

Cost minimization:

For minimizing the operating costs of an airline there are several main costs:

  • Operating Cost of Aircraft (per Flight hour), this will include: Fuel, depreciation of aircrafts, cost of services for passengers (meals, etc…), but not wages for employees
  • Maintenance Cost of Aircraft. An estimation of fixing the wear on the fleet.
  • Insurance cost for Aircraft. This is the insurance to pay for the event of a crash or heavily damaging an aircraft. It is typically around 1-2% of the worth of the aircraft. This insurance premium does not cover the passengers.


We will include all these costs as the operating cost of the aircraft per flight hour.


In this toy model we consider only 2 types of aircrafts:

  • The Boeing 787-9 (789) (Dreamliner)
  • The Airbus A320-200 (320)

Relevant statistic for these two aircrafts

Boeing 787: Airbus A-320:
Seating 300 150
Cost per Flight hour $5,303 $2,845


Let the variable Xijk be the route taken by the kth plane from airport i to airport j.

And the operating cost of each aircraft in dollars per flight hour is given by Ck for the kth plane.

And Sk is the amount of seating on the kth plane Let Aij be the distance from airport i to airport j. Let Fij be the amount of flights running between i and j.


YVR – Vancouver Airport - Airport 1

SFO – San Francisco Airport - Airport 2

JFK – New York Airport - Airport 3


Information on the aircraft we are using is given in the excel file below:

File:Aircraft Characteristics.xlsx

This file provides a description of the 2 aircraft used in the profit maximization. Has characteristics of 5 additional aircraft that can be swapped with the 2 aircraft already in the LP problem to compare which aircraft(s) are the best for our routes.

The decision variable we will be using is Xijk, which corresponds to the kth plane flying from airport i to airport j.

Xij1 = # of Boeing 787 used from airport i to airport j

Xij2 = # of Airbus A-320 used from airport i to airport j

A12 = A21 = distance YVR to SFO in hours flight time = 2h15m

A13 = A31 = distance of YVR to JFK in hours flight time = 5h15m

A23 = A32 = distance of SFO to JFK in hours flight time = 6h00m


Objective Function

Cost =ΣΣ(Xijk)(Ck)(Aij)

Cost = (X121)(5303)(2.25) + (X122)(2845)(2.25) + (X211)(5303)(2.25) + (X212)(2845)(2.25) +(X131)(5303)(5.25) + (X132)(2845)(5.25) + (X311)(5303)(5.25) + (X312)(2845)(5.25) + (X231)(5303)(6) + (X232)(2845)(6) + (X321)(5303)(6) + (X322)(2845)(6)


If we had different cruising speeds the aircraft will complete the journey in different times. But the cruising speed of both aircraft is relatively similar, so we will assume both aircraft will take roughly the same time to complete.

So Profit is given by:

Maximize: Z = 3265000 - 11931.75X121 – 6401.25X122 – 11931.75X211 – 6401.25X212 – 27840.75X131 – 14936.25X132 – 27840.75X311 – 14936.25X312 – 31818X231 – 17070X232 – 31818X321 – 17070X322


Now we need to find the constraints

We need to consider the supply of seats for each section of the flight:

Supply of Seats

-We need to meet the demand of passengers moving from airport to airport. Our airline will not overbook. So each route will have the equality:

(Xij1)(S1) + (Xij2)(S2) ≥(demand from i to j)

In our toy model:

300X121 + 150X122 ≥ 1350

300X211 + 150X212 ≥ 850

300X131 + 150X132 ≥ 1700

300X311 + 150X312 ≥ 1100

300X231 + 150X232 ≥ 950

300X321 + 150X322 ≥ 1000


Aircraft Availability

The next constraint we have is aircraft availability, given by:

(Aij)(Fij) ≤ (Xij1 + Xij2)(20)

Here we are assuming we can run our aircraft for up to 20 hours in a day. That allows time for refueling and regular maintenance.

This constraint insures that there is a sufficient number of aircraft to cover the amount of time for all the flights needed to cover the route with the frequency each route is flown.

The constraints are given explicitly below:

(2.25)(7) ≤ (X121 + X122)(20)

(2.25)(6) ≤ (X211 + X212)(20)

(5.25)(10) ≤ (X131 + X132)(20)

(5.25)(11) ≤ (X311 + X312)(20)

(6)(8) ≤ (X231 + X232)(20)

(6)(7) ≤ (X321 + X322)(20)


Flight Frequency

Constraint for the number of flights for each route:

We want each route to be covered a certain number of times. This will insure a reliable airline, which runs regular flights.

(X121 + X122) ≥ 7

(X211 + X212) ≥ 6

(X131 + X132) ≥ 10

(X311 + X312) ≥ 11

(X231 + X232) ≥ 8

X321 + X322) ≥ 7


Eg. We want there to be at least 7 flights from YVR to SFO, and at least 10 from YVR to JFK.


LP Problem

Now putting our LP problem together we get:

Maximize: Z = 3265000 - 11931.75X121 – 6401.25X122 – 11931.75X211 – 6401.25X212 – 27840.75X131 – 14936.25X132 – 27840.75X311 – 14936.25X312 – 31818X231 – 17070X232 – 31818X321 – 17070X322

Subject to:

(supply of seats)

-300X121 - 150X122 ≤ -1350

-300X211 - 150X212 ≤ -850

-300X131 - 150X132 ≤ -1700

-300X311 - 150X312 ≤ -1100

-300X231 - 150X232 ≤ -950

-300X321 - 150X322 ≤ -1000

(max flight time)

-20X121 - 20X122 ≤ -15.75

-20X211 - 20X212 ≤ -13.5

-20X131 - 20X132 ≤ -52.5

-20X311 - 20X312 ≤ -57.75

-20X231 - 20X232 ≤ -48

-20X321 - 20X322 ≤ -42

Frequency of flights

-X121 - X122 ≤ -7

-X211 - X212 ≤ -6

-X131 - X132 ≤ -10

-X311 - X312 ≤ -11

-X231 - X232 ≤ -8

-X321 - X322 ≤ -7

Obviously the origin is not a feasible solution, as we would not satisfy the seating constraint. So if this equations were to be solved by hand, it would need to be done by the two phase method, or with dual feasibility. However I will just put it into Lindo to see what the optimal solution is.

Lindo Yields the following tableaux

       OBJECTIVE FUNCTION VALUE
       1)     2583805.5
 VARIABLE        VALUE          REDUCED COST
     X121         2.000000          0.000000
     X122         5.000000          0.000000
     X211         0.000000       5530.500000
     X212         6.000000          0.000000
     X131         1.333333          0.000000
     X132         8.666667          0.000000
     X311         0.000000      12904.500000
     X312        11.000000          0.000000
     X231         0.000000      14748.000000
     X232         8.000000          0.000000
     X321         0.000000      14748.000000
     X322         7.000000          0.000000


      ROW   SLACK OR SURPLUS     DUAL PRICES
       2)         0.000000         36.869999
       3)        50.000000          0.000000
       4)         0.000000         86.029999
       5)       550.000000          0.000000
       6)       250.000000          0.000000
       7)        50.000000          0.000000
       8)       124.250000          0.000000
       9)       106.500000          0.000000
      10)       147.500000          0.000000
      11)       162.250000          0.000000
      12)       112.000000          0.000000
      13)        98.000000          0.000000
      14)         0.000000        870.750000
      15)         0.000000       6401.250000
      16)         0.000000       2031.750000
      17)         0.000000      14936.250000
      18)         0.000000      17070.000000
      19)         0.000000      17070.000000
NO. ITERATIONS=      11

So on the route from YVR - SFO we want 2 Boeing's and 5 Airbus'. More analysis of the results is done after we confirm these answers with the dual problem.

The Dual Problem:

Minimize: -1350Y1 – 850Y2 – 1700Y3 -1100Y4 – 950Y5 – 1000Y6 – 15.75Y7 – 13.5Y8 – 52.5Y9 – 57.75Y10 - 48Y11 – 42Y12 - 7Y13 – 6Y14 -10Y15 – 11Y16 – 8Y17 - 7Y18

Subject to:

-300Y1 - 20 Y7 - Y13 ≥ -11931.75

-150Y1 – 20Y7 – Y13 ≥ -6401.25

-300Y2 – 20Y8 –Y14 ≥ -11931.75

-150Y2 – 20Y8 – Y14 ≥ -6401.25

-300Y3 - 20Y9 –Y15 ≥ -27840.75

-150Y3 -20Y9 – Y15 ≥ -14936.25

-300Y4 – 20Y10 – Y16 ≥ -27840.75

-150Y4 -20Y10 – Y16 ≥ -14936.25

-300Y5 -20Y11 – Y17 ≥ -31818

-150Y5 - 20Y11 – Y17 ≥ -17070

-300Y6 – 20Y12 – Y18 ≥ -31818

-150Y6 – 20Y12 – Y18 ≥ -17070



Or in standard Form:

Maximize: W = 1350Y1 + 850Y2 + 1700Y3 +1100Y4 + 950Y5 + 1000Y6 + 15.75Y7 + 13.5Y8 + 52.5Y9 + 57.75Y10 + 48Y11 + 42Y12 +7Y13 + 6Y14 +10Y15 + 11Y16 + 8Y17 + 7Y18

Subject to:

300Y1 + 20Y7 + Y13 ≤ 11931.75

150Y1 + 20Y7 + Y13 ≤ 6401.25

300Y2 + 20Y8 + Y14 ≤ 11931.75

150Y2 + 20Y8 + Y14 ≤ 6401.25

300Y3 +20Y9 + Y15 ≤ 27840.75

150Y3 + 20Y9 + Y15 ≤ 14936.25

300Y4 + 20Y10 + Y16 ≤ 27840.75

150Y4 + 20Y10 + Y16 ≤ 14936.25

300Y5 + 20Y11 + Y17 ≤ 31818

150Y5 + 20Y11 + Y17 ≤ 17070

300Y6 + 20Y12 + Y18 ≤ 31818

150Y6 + 20Y12 + Y18 ≤ 17070


The variables Y1-Y6 correspond to the extra price per seat. ($ per seat). This variable is assessing how much the price is for having an extra seat

The variables Y7-Y12 correspond to the price per flight hour. ($ per flight hour). This variable is assessing the value of each hour of flight from i to j.

The variables Y13-Y18 are stating how much each flight is worth. ($ per flight). This is the value of flying from i to j.


Each variable corresponds to its causal respective flight-route. So Y1 is the value of the seats from YVR to SFO. And Y10 is the value of $ per flight hour from JFK to YVR.

Lindo gives us this (insert here a sheet relating the shadow prices and the dual variables to the primal, we get all the values of how many aircraft (and which) to run for each flight)

Lindo Analysis

OBJECTIVE FUNCTION VALUE

       1)      681194.5
 VARIABLE        VALUE          REDUCED COST
       Y1        36.869999          0.000000
       Y2         0.000000         50.000000
       Y3        86.029999          0.000000
       Y4         0.000000        550.000000
       Y5         0.000000        250.000000
       Y6         0.000000         50.000000
       Y7         0.000000        124.250000
       Y8         0.000000        106.500000
       Y9         0.000000        147.500000
      Y10         0.000000        162.250000
      Y11         0.000000        112.000000
      Y12         0.000000         98.000000
      Y13       870.750000          0.000000
      Y14      6401.250000          0.000000
      Y15      2031.750000          0.000000
      Y16     14936.250000          0.000000
      Y17     17070.000000          0.000000
      Y18     17070.000000          0.000000


      ROW   SLACK OR SURPLUS     DUAL PRICES
       2)         0.000000          2.000000
       3)         0.000000          5.000000
       4)      5530.500000          0.000000
       5)         0.000000          6.000000
       6)         0.000000          1.333333
       7)         0.000000          8.666667
       8)     12904.500000          0.000000
       9)         0.000000         11.000000
      10)     14748.000000          0.000000
      11)         0.000000          8.000000
      12)     14748.000000          0.000000
      13)         0.000000          7.000000
NO. ITERATIONS=       8

Conclusion of Toy Model

So after running the (revised) simplex method 8 times we have our optimal solution:

YVR - SFO SFO - YVR YVR - JFK JFK -YVR SFO- JFK HJFK - SFO
# of Boeing-787 2 0 1.333333 0 0 0
# of Airbus-320 5 6 8.666667 11 8 7

It is apparent from this table that the Airbus dominates Boeing. Why is this? Actually the Boeing can transport passengers more cheaply then the Airbus. The cost per passenger is roughly $18 per flight hour, while the cost for the airbus is roughly $19 per flight hour. The reason the Airbus is preferred in most cases is that our airline wants to run many routes to insure reliability. If we relaxed the constraint on the frequency of the each run we would probably see more and more Boeing's being used. I.e. if we lower the number of flights we wanted from JFK to YVR from 11 to something like 5 we would probably have exclusively the Boeing 787 flying that particular route.

Also note that it is impossible to fly 1.33333 of a Boeing and 8.6666 of an Airbus for the YVR - JFK route. A plausible solution would be to run 2 Boeing and 9 Airbus. This will surely lower the objective function, but it will satisfy all the constraints; so the solution will remain feasible.

Running the dual solution in lindo yields an optimal value of $681194.5. This is the cost of running the airline. So if we minus revenue from this cost we are left with:

Profit = $ 3,265,000- $681,194.5 = $2,583,805.5


Which seems like a lot of money left over; but our airline also has to pay advertising fees, pay government money for licensing, save more for repairs on aircraft, and save money for expansion and/or disasters. Plus we haven't consider the actual cost of airplane, which is given for each respective aircraft in the spread sheet near the top of this wiki entry.

Equations and Variable Analysis

Analysis of the correlation between the number of aircraft + airports and the number of equations + variables.

Let n denote the number of airports.

The number of routes are given by (n)(n-1). So if we have n=5 airports we will have 20 routes between all of them, this includes the flights going both ways i.e. if we go from LAX to YYZ we also have the route from YYZ to LAX.

Each constraint is a multiplier on the number of equations. In our toy example we had 3 constraints, namely, meeting passenger, total aircraft usage, and flight frequency. So the number of equations are given by:

(# of constraints)(n)(n-1)

The number of variables is derived from the number of aircraft and the number of airports. The amount of variables are given by:

(# of aircraft being considered)(n)(n-1)

Vehicle Optimization

Maximize Profit s.t. a) aircraft availability

      b) demand fulfillment
      c) minimum frequency
      d) landing restriction

Profit function : P = Revenue - Cost



More Advanced Model

Now let’s analyze a more realistic small airline. 4 Airports:

YVR – Vancouver – Airport 1

YEG – Edmonton – Airport 2

YXY – Whitehorse – Airport 3

YZF – Yellowknife – Airport 4

We will be considering the 3 Bombardier airplanes, the CRJ series. The information of these three airplanes is given in the same file as the Boeing and Airbus:

File:Aircraft Characteristics.xlsx

CRJ100 CRJ705 CRJ1000
Cost per Hour Flight $1575 $1800 $2620
Seating Capacity 50 75 100

CRJ100 - Aircraft 1

CRJ705 - Aircraft 2

CRJ1000 - Aircraft 3


Our analysis of variables from above tells us that we will have (4)(4-1) = 12 routes. Using the same constraints as above we will have 12*3 = 36 equations and 12*3 = 36 variables.

Flight Time

Duration of each Flight

YVR - YEG YVR - YZF YVR - YXY YEG - YXY YEG - YZF YXY - YZF
1h30m 6h00m 2h30m 4h00m 2h00m 3h00m

We will also assume that the return flight takes the same amount of time (ignoring prevalent head winds and coriolis effect).

Cost and Demand of Flights

YVR - YEG YVR - YZF YVR - YXY YEG - YVR YEG - YZF YEG - YXY YZF - YVR YZF - YEG YZF - YXY YXY - YVR YXY - YEG YXY - YZF
Seating Demand 650 250 400 500 200 250 300 175 25 150 325 40
Ticket Cost $200 $375 $400 $150 $250 $200 $250 $300 $500 $200 $300 $550
Desired # of Flights ≥7 ≥4 ≥5 ≥6 ≥3 ≥2 ≥4 ≥2 ≥1 ≥2 ≥3 ≥1

Revenue = (650)(200) + (250)(375) + (400)(400) + (500)(150) + (200)(250) + (250)(200) + (300)(250) + (175)(300) + (25)(500) + (150)(200) + (325)(300) +(40)(550) = $848,250

LP Problem

Using the same decision variables as we used for the LP problem we get:

Maximize: 848250 - (1.5)(1575X121 + 1800X122 + 2620X123) - (6)(1575X131 + 1800X132 + 2620X133) - (2.5)(1575X141 + 1800X142 + 2620X143) - (1.5)(1575X211 + 1800X212 + 2620X213) - (2)(1575X231 + 1800X232 + 2620X233) - (4)(1575X241 + 1800X242 + 2620X243) - (6)(1575X311 + 1800X312 + 2620X313) - (2)(1575X321 + 1800X322 + 2620X323) - (3)(1575X341 + 1800X342 + 2620X343) - (2.5)(1575X411 + 1800X412 + 2620X413) - (4)(1575X421 + 1800X422 + 2620X423) - (3)(1575X431 + 1800X432 + 2620X433)

Which is just the sum of the each individual flight time times the sum of all the flights multiplied by they're cost per hour flight time.

Maximize: 848250 - 2362.5X121 - 2700X122 - 3930X123 - 9450X131 - 10800X132 - 15720X133 - 3937.5X141 - 4500X142 - 6550X143 - 2362.5X211 - 2700X212 - 3930X213 - 3150X231 - 3600X232 - 5240X233 - 6300X241 - 7200X242 - 10480X243 - 9450X311 - 10800X312 - 15720X313 - 3150X321 - 3600X322 - 5240X323 - 4725X341 - 5400X342 - 7860X343 - 3937.5X411 - 4500X412 - 6550X413 - 6300X421 - 7200X422 - 10480X423 - 4275X431 - 5400X432 - 7860X433

Subject to:

Supply of Seats

50X121 + 75X122 + 100X123 >= 650

50X131 + 75X132 + 100X133 >= 250

50X141 + 75X142 + 100X143 >= 400

50X211 + 75X212 + 100X213 >= 500

50X231 + 75X232 + 100X233 >= 200

50X241 + 75X242 + 100X243 >= 250

50X311 + 75X312 + 100X313 >= 300

50X321 + 75X322 + 100X323 >= 175

50X341 + 75X342 + 100X343 >= 25

50X411 + 75X412 + 100X413 >= 150

50X411 + 75X412 + 100X413 >= 325

50X411 + 75X412 + 100X413 >= 40


Aircraft Availability

10.5 <= 20X121 + 20X122 + 20X123

24 <= 20X131 + 20X132 + 20X133

12.5 <= 20X141 + 20X142 + 20X143

9 <= 20X211 + 20X212 + 20X213

6 <= 20X231 + 20X232 + 20X233

8 <= 20X241 + 20X242 + 20X243

24 <= 20X311 + 20X312 + 20X313

4 <= 20X321 + 20X322 + 20X323

3 <= 20X341 + 20X342 + 20X343

5 <= 20X411 + 20X412 + 20X413

12 <= 20X421 + 20X422 + 20X423

3 <= 20X431 + 20X432 + 20X433

Flight Frequency

X121 + X122 + X123 >= 7

X131 + X132 + X133 >= 4

X141 + X142 + X143 >= 5

X211 + X212 + X213 >= 6

X231 + X232 + X233 >= 3

X241 + X242 + X243 >= 2

X311 + X312 + X313 >= 4

X321 + X322 + X323 >= 2

X341 + X342 + X343 >= 1

X411 + X412 + X413 >= 2

X421 + X422 + X423 >= 3

X431 + X432 + X433 >= 1


Running this LP on Lindo, the final tableaux reads:


       OBJECTIVE FUNCTION VALUE
       1)     607200.0
 VARIABLE        VALUE          REDUCED COST
       X121         0.000000        562.500000
       X122         8.666667          0.000000
       X123         0.000000        330.000000
       X131         2.000000          0.000000
       X132         2.000000          0.000000
       X133         0.000000       3570.000000
       X141         0.000000        937.500000
       X142         5.333333          0.000000
       X143         0.000000        550.000000
      X211         0.000000        562.500000
      X212         6.666667          0.000000
      X213         0.000000        330.000000
      X231         1.000000          0.000000
      X232         2.000000          0.000000
      X233         0.000000       1190.000000
      X241         0.000000       1500.000000
      X242         3.333333          0.000000
      X243         0.000000        880.000000
      X311         0.000000          0.000000
      X312         4.000000          0.000000
      X313         0.000000       3570.000000
      X321         0.000000        750.000000
      X322         2.333333          0.000000
      X323         0.000000        440.000000
      X341         1.000000          0.000000
      X342         0.000000        675.000000
      X343         0.000000       3135.000000
      X411         0.000000          0.000000
      X412         2.000000          0.000000
      X413         0.000000       1487.500000
      X421         0.000000       1500.000000
      X422         4.333333          0.000000
      X423         0.000000        880.000000
      X431         1.000000          0.000000
      X432         0.000000       1125.000000
      X433         0.000000       3585.000000


      ROW   SLACK OR SURPLUS     DUAL PRICES
       2)         0.000000        -36.000000
       3)         0.000000        -54.000000
       4)         0.000000        -60.000000
       5)         0.000000        -36.000000
       6)         0.000000        -18.000000
       7)         0.000000        -96.000000
       8)         0.000000        -54.000000
       9)         0.000000        -48.000000
      10)        25.000000          0.000000
      11)         0.000000        -22.500000
      12)         0.000000        -96.000000
      13)        10.000000          0.000000
      14)       162.833328          0.000000
      15)        56.000000          0.000000
      16)        94.166664          0.000000
      17)       124.333336          0.000000
      18)        54.000000          0.000000
      19)        58.666668          0.000000
      20)        56.000000          0.000000
      21)        42.666668          0.000000
      22)        17.000000          0.000000
      23)        35.000000          0.000000
      24)        74.666664          0.000000
      25)        17.000000          0.000000
      26)         1.666667          0.000000
      27)         0.000000      -6750.000000
      28)         0.333333          0.000000
      29)         0.666667          0.000000
      30)         0.000000      -2250.000000
      31)         1.333333          0.000000
      32)         0.000000      -6750.000000
      33)         0.333333          0.000000
      34)         0.000000      -4725.000000
      35)         0.000000      -2812.500000
      36)         1.333333          0.000000
      37)         0.000000      -4275.000000
NO. ITERATIONS=      18


It seems like we never use the CRJ1000. This is because it costs more per person to fly with the CRJ1000 then the CRJ705. As the CRJ705 is able to fulfill more constraints and carry passengers for cheaper, it will almost always be preferred. (Unless the CRJ705 just barely can't meet the demand of extra passengers and a plane that can carry just a tiny bit more is preferred).

However the extra little bit seems to take with the CRJ100. This aircraft is more useful for the fulfilling the small flights or the flights which are meant to have more frequency. Both the legs between Yellowknife and Whitehorse are flown exclusively with the CRJ100. This is because it is easily able to meet seating demand and we don't require frequent routes between those two cities.

Conclusion

To sum up, By using linear programs appropriately, our model can be easily maximized for profit and we can perform sensitivity analysis very easily. Our project presented a mathematical optimization model in linear programming , which intends to maximize the profits by reducing the flight cost and operation cost through an appropriate route and crew scheduling. After taking all the constraints into consideration, we eventually solved the LP problem, and got the efficient result on building aircraft routes and crew rotations which could be used to provide our company’s service while maximizing profits.