comment: This is an IPAT-S script. IPAT-S is an open-source scripting language for developing sustainability scenarios. It can be run using the free IPAT-S software, available from: http://ipat-s.kb-creative.net/ For more information, please contact the author of IPAT-S, Eric Kemp-Benedict (eric@kb-creative.net) :comment comment: This script uses the concept of "constant travel time" to generate transport scenarios. Input variables for the scenario are the change in speed of road and rail transport and a "sprawl factor." As the sprawl factor grows (that is, as urban areas become more spread out), people must use faster transport options in order to maintain a constant travel time. The script uses a linear goal programming approach to keep the travel budget as close to the base-year pattern as possible. Two scenarios are calculated: a "Sprawling" scenario, where urban areas spread out, and a "Compact" scenario, where they become smaller. Vehicle speed is the same in the two scenarios. Note that the constant travel time hypothesis is controversial. However, the script is offered in a spirit of "what-if." It allows an exploration of the question, "What if the constant travel time hypothesis is true for the future?" :comment base year 2000 scenario years 2010...2030 every 10 dimension scenario 'Sprawling' 'Compact' dimension vehicle 'Foot' 'Bike' 'Motorbike' 'Car' 'Bus' 'Rail' summvar DistBudget{vehicle, scenario} # Distance budget in pass-km summvar totDistance{scenario} summvar TimeBudget{vehicle, scenario} # Time budget in hours var speed{vehicle} # Vehicle speeds, in km/hr # Human-powered speeds are constant speed{vehicle = 'Foot'} = 5 speed{vehicle = 'Bike'} = 20 # Motorized speeds may change speed.by{vehicle = 'Motorbike'} = 70 speed.by{vehicle = 'Car'} = 70 speed.by{vehicle = 'Bus'} = 70 speed.by{vehicle = 'Rail'} = 100 ratio roadSpeed = ndx[<1.05>] ratio railSpeed = ndx[<1.00>] chain >> roadSpeed -> speed{vehicle = 'Motorbike'} chain >> roadSpeed -> speed{vehicle = 'Car'} chain >> roadSpeed -> speed{vehicle = 'Bus'} chain >> railSpeed -> speed{vehicle = 'Rail'} number totalTime = <45/60> # 45 min. total time budget - constant # Distribution of work trips for Industrialized countries from the Habitat database TimeBudget.by{vehicle = 'Foot'} = 15% * totalTime TimeBudget.by{vehicle = 'Bike'} = 9% * totalTime TimeBudget.by{vehicle = 'Motorbike'} = 2% * totalTime TimeBudget.by{vehicle = 'Car'} = 55% * totalTime TimeBudget.by{vehicle = 'Bus'} = 13% * totalTime TimeBudget.by{vehicle = 'Rail'} = (100% - 15% - 9% - 2% \ - 55% - 13%) * totalTime # Store values for the base year time budget in byTimeBudget summvar byTimeBudget{vehicle, scenario} chain byv(TimeBudget) -> byTimeBudget # Calculate the base-year distance budget from speed and time info (non-base year will be zero) summarize speed * TimeBudget -> DistBudget as totDistance # Calculate distance budget in the scenario, based on sprawl factor ratio sprawlFactor{scenario} # Distance traveled grows by this amount per year sprawlFactor{scenario='Sprawling'} = gr(<0.5%>) sprawlFactor{scenario='Compact'} = gr(<-0.5%>) chain >> sprawlFactor -> totDistance report totDistance/totalTime as "Average Speed (km/hr)" var deltaPlus{scenario} deltaMinus{scenario} # Set the time constraint for each scenario, for the LP summvar timeConstraint{scenario} timeConstraint = totalTime LP: solve for deltaPlus deltaMinus TimeBudget DistBudget minimize deltaPlus + deltaMinus # Relation between time and distance budgets speed * TimeBudget - DistBudget = 0{vehicle, scenario} # Total time and distance budgets are fixed TimeBudget = timeConstraint DistBudget = totDistance # LGP constraints TimeBudget + byTimeBudget * deltaPlus >= byTimeBudget TimeBudget - byTimeBudget * deltaMinus <= byTimeBudget :LP report 100 * TimeBudget/totalTime as "Time budget (%)" report 100 * DistBudget/totDistance as "Distance budget (%)"