! A fuel ferrying/tankering model in LINGO.
Given an aircraft that must
visit a sequence of cities,
price of fuel in each city, and
amount of fuel needed to fly from
city to city, and
additional fuel burned to carry additional fuel,
How much fuel should be bought at each city?
Qualitatively, we want to buy fuel at the cheap stops,
and ferry fuel into the stops where fuel is expensive;
! Additional complications might be: city specific
landing and takeoff weight limits, nonlinear fuel
burn curves, nonlinear fuel purchase schedules
at an airport;
! Keywords: Fuel purchasing, Tankering, Ferrying;
SETS:
CITY: C, R, B, P, D;
ENDSETS DATA:
! Max fuel allowed on board;
FMX = 6000;
CITY= DFW ATL ORD DSM STL OMA;
! Cost of fuel at each city;
C = 5.80 6.80 7.00 5.60 6.10 5.90;
! Min fuel required (and used) out of each city
in order to travel to next city;
R = 3100 2700 1300 1350 2500 0;
! Additional fuel burned (gal/gal)
ferried/delivered to next stop;
B = .04 .03 .03 .01 .04 0;
! Note, at last stop we do not know how much
fuel is needed for the next unknown leg;
ENDDATA
!-----------------------------------------;
! Variables:
P(i) = amount of fuel purchased at stop i,
D(i) = amount of fuel delivered to stop i;
! Minimimze the cost of fuel purchased over all stops;
MIN = @SUM( CITY( I): C( I) * P( I));
NSTOPS = @SIZE( CITY);
! Assume plane starts empty;
D( 1) = 0;
@FOR( CITY( I) | I #LT# NSTOPS:
! Fuel delivered to I + purchased at I
= min burn to get to I+1 + delivered to I+1,
+ extra fuel burned because of extra fuel carried;
[MATBAL] D( I) + P( I) =
R( I) + D( I+1) + B( I) * D( I+1);
! Take off limit;
[TANKUL] D( I) + P( I) <= FMX;
);
|