2 2 2 0 1 1 4 98 0 1 2 0 1 2 -1 0 Time Dynamic simulation periods are specified in Time's definition. This is usually a list of numbers or labels, typically in some unit of time (days, weeks, months, etc.). Use the ÒDynamic()Ó function in your variables to perform dynamic simulation. [0,1,2] 2,450,279,476,409 Log Composite traffic v. 1.7 - Health and costs in the Helsinki metropolitan area This model is a decision analysis in a poorly studied area, trip aggregation, and it studies decisions of two different stakeholders, the passenger and the society. In composite traffic, a centralised system collects the information on all trips online, aggregates the trips with the same origin and destination into public vehicles with eight or four seats, and sends the travel instructions to the passengers' mobile phones. We show here that in an urban area with one million inhabitants, this system could reduce environmental and other pressures of car traffic typically by 50-70 %, would attract about half of the car passengers, and within a broad operational range needs no public subsidies. Composite traffic gives a new level of freedom in urban decision-making towards solving the problems of urban traffic. The model is built using Analytica 3.0(TM) program that utilises a graphical interface for creating probabilistic (Monte Carlo) models. A free browser can be downloaded from the Analytica web site http://www.lumina.com . The file format for the models is XML, and therefore the code can also be viewed with a regular web browser. In this material, we present the main views of the graphical model and describe several modules in more detail. The model consists of two parts: a deterministic trip aggregation model that produces the output tables used in decision analysis. The calculation of the results takes several days and therefore they are stored as static tables in the module 'Static nodes'. In the second part the aggregation results are combined with cost functions, emission factors and other uncertain and/or varying variables using probabilistic (Monte Carlo) simulation. This part of the model is readily available for detailed examination, and several input values can be changed and explored using the Analytica Browser. Note, however, that the model (depending on dimensions used) easily requires more than 1 GB of RAM memory. jtue (Jouni Tuomisto) 7. Novta 2002 13:32 ekue 9. Augta 2007 9:26 48,24 1,0,-23,1280,923,21 2,10,87,476,467 Arial, 13 0,Model Composite_traffic_v_,2,2,0,1,N:\Huippuyksikko\Tutkimus\R79_CompositeTraffic2\Mallit\Composite_traffic_1_8.ANA 81,1,1,0,2,1,4900,6400,7 2,40,7,450,720 Timing profile 1 140,212,1 132,12 1,0,0,1,0,0,0,72,0,1 Timing_profile From 0 140,68,1 132,12 1,0,0,1,0,0,0,72,0,1 From Composite traffic reduces pressures typically by 50-70% 1 656,512,1 52,44 65535,65532,19661 Composite_traffic_re Personal car traffic causes problems in urban city centres Traffic congestion in urban areas is rapidly becoming the most important obstacle for town development. In addition traffic is causing major environmental, health, and economical problems. On the other hand it is vital for the functions of the modern society. Pressure 760,56,1 48,46 2,102,90,476,357 There are several reasons why many people are not willing to use public transportation. Many people driving cars are not willing to use public transportation. This may be due to poor connections, difficult timing, uncomfort of changing etc. Pressure 792,184,1 60,52 2,50,301,476,372 Traffic is a major source of fine particles, which kill 300000 people/a in Europe Pressure; Effect 368,504,1 56,55 2,102,90,476,414 Steve Pye and Paul Watkiss: CAFE CBA: Baseline analysis 2000 to 2020. AEAT/ED51014/ Baseline Issue 2. <a href= "http://www.iiasa.ac.at/docs/HOTP/Mar05/cafe-cba-baseline-results.pdf" >Click</a> CO2 emissions must be reduced to prevent climate change State; Effect 224,336,1 56,48 Private car is a very inefficient way of transporting people. Its superiority is based on flexibility, not efficiency. Therefore, systems that are both flexible and efficient must be developed. Pressure 224,472,1 76,80 Driving force Other_actions 368,176,1 48,24 Pressure Other_actions; Driving_force 368,232,1 48,24 [Constant Co2_emissions_must_b] State Pressure 368,288,1 48,24 Exposure State 368,344,1 48,24 Effect Exposure 368,400,1 48,24 [Constant Traffic_is_major_sou] The marginal cost of car is low given the passenger already owns one. An alternative must be efficient enough to compete with this Other_actions; Effect 656,232,1 68,64 65535,31131,19661 Composite traffic gives new freedom and flexibility to decision-makers in urban policy-making The maybe most important effect (and the most difficult to model) comes from the increased degree of freedom in urban policy-making. Some examples of the possible changes: The pressures towards enlarging road infrastructure are relieved, giving resources to other possible targets. Car limits in e.g. historical city centres can be implemented without disrupting peoples' possibilities to move freely in the city. Public transportation can be provided in areas where sparse population or poor urban planning hamper efficient bus service. It will become cheaper to implement technical measures to reduce emissions with a smaller, intensively used fleet. Many families can give up the second, and sometimes even the first car, when most trips can be performed without an own vehicle. Reduced pressures to buy an own car decrease problems of car-owning to city infrastructure. Elderly, disabled, and young people get more freedom to move around. Parents don't need to drive their children so much. The need for driving drunk reduces. The connection between the freedom to move and car ownership is loosened. Emission reduction techniques are more economic, as there are fewer vehicles that drive more. Even expensive solutions such as hydrogen or electricity may become profitable. The question of mileage per tank is not an issue with composite vehicles, which makes it easier to use electricity. Composite_traffic_re 504,512,1 68,48 2,379,84,520,386 65535,65532,19661 Personal transport is necessary in urban areas. The question is how to organise the transport with minimal harm Driving_force 364,84,1 68,55 Action ktluser 8. maata 2005 6:30 48,24 504,232,1 48,24 1,40,-23,382,245,17 With composite traffic 1. the service and flexibility is comparable to the car 2. most pressures reduce by 50-70% but driver salary costs are high 3. ca. 50 % of passengers found it attractive 4. system can start in a small way and expand later We found out that with composite traffic 1. most trips are direct; 40% involve one change 2. most pressures reduce by 50-70% but driver salary costs are high 3. ca. 50 % of passengers found it cheaper 4. day-time traffic does not need subsidies composite_traffic_dummy 680,304,1 92,92 2,512,136,476,381 65535,65532,19661 We studied 1. how effectively trips can be combined 2. what the various costs of each option are 3. what is the variation of perceived costs among passengers 4. what incentives are needed to reach targets We studied 1. how effectively trips can be combined 2. what are the various costs of each option 3. what is the variation of perceived costs among passengers 4. what incentives are needed to reach targets composite_traffic_dummy 680,104,1 88,89 1,1,1,1,1,1,0,,1, 2,102,90,476,473 Composite traffic jtue 24. Febta 2005 15:24 48,24 504,160,1 48,24 1,40,0,382,245,17 100,100,100,100,1,9,6798,4744,7,0 2,53,21,627,600 Input var Index for variables that may affect the number of composite traffic trips. ['Car fraction','Public fraction','Guarantee level','Large guarantee?','Public matrix','Public level','No-change fraction','Max size','Min direct load','Vehicle types','Drop points/area'] 56,336,1 48,12 2,102,90,476,320 Scenario input Input variable values for base case scenario. If Large guarantee? is 'Yes', then it is assumed that the guarantee covers the whole area, if the origin OR the destination of the trip are in the guaranteed area. Otherwise, both O and D must be in the covered area. Table(Input_var)( 0.5,1,7,0,2,0,0,8,4,2,8) ['Composite fraction','Guarantee level','Lim'] 56,304,1 48,24 2,102,90,476,224 2,11,333,217,303,0,MIDM 52425,39321,65535 [Scenario_input,Scenario] 45-60% composite fraction is optimal The best alternative for society is about 45-60% of current car traffic to change to composite traffic. The fraction is relative to the area of guarantee but is still rather robust. With evening trips, composite traffic is better only at high guarantee. In contrast, during night composite traffic is not competitive, and it is always more expensive than car traffic. However, the availability of composite traffic around the clock is an important factor when car-owners are considering not to buy a new car at all. This pheniomenon is not modelled here, but it is probably important. If composite traffic is subvented during nights, the overall societal costs are still well in favor of composite traffic. This is because night trips are not numerous and can easily be subsidised. Societal_cost 392,64,1 48,38 2,102,90,476,452 [Alias A45_60__composite_f2] 65535,65532,19661 Composite traffic reduces pressures typically by 50-70% We show here that in an urban area with one million inhabitants, this system could reduce environmental and other pressures of car traffic typically by 50-70 %, would attract about half of the car passengers, and within a broad operational range needs no public subsidies. Composite traffic gives a new level of freedom in urban decision-making towards solving the problems of urban traffic. Table_1_pressures 160,80,1 52,44 2,131,221,476,279 [Alias Composite_traffic_r1] 65535,65532,19661 Trip aggregation This module calculates the actual trips, modes of transportation, and delays during trips and vehicle transfers. It also calculates the kilometres traveled by each type of vehicle and number of vehicles needed. The composite traffic trips are allocated into different vehicles. The following hierarchy is used in allocation. If the criterion is fulfilled, that number of passengers is allocated, and the rest will go to the next criterion. The criteria are used for a group of trips that has the same origin, destination, and time. Time resolution is 12 min. Origin and destination are described as '129-areas' used for city authorities in Helsinki metropolitan area. The 129 areas have on average 7300 inhabitants (0, 25%, 50%, 75%, and 100% percentiles are 0, 3400, 6800, 10300, and 28300, respectively). 1) Use an 8-seat vehicle if there are enough passengers to get it full. 2) Use a 4-seat vehicle if there are enough passengers to get it full. Divide the trips into two parts so that the passengers change vehicle in the most busy point along the route. Then, 3) Use an 8-seat vehicle if there are enough passengers to get it full. 4) Use a 4-seat vehicle if there are enough passengers to get it full. 5) Use a 4-seat vehicle for all remaining trips. The criterion is checked at the actual arrival time at the transfer point, i.e. the model takes into account the different travel times between areas. The following outputs are calculated: Number of passenger trips by mode (car or composite traffic) Number of passenger trips by vehicle type. Note that in this output, the trip that includes a transfer is calculated twice. Vehicle kilometres driven Parking lots needed for the vehicles that are used Average vehicle numbers per hour for the 30 most busy links at 8.00-9.00 in the morning Number of vehicles needed Waiting time due to traffic jams and waiting for composite vehicle to arrive. The outputs of each scenario are indexed (when relevant) by period (day, evening, night); zone (Helsinki downtown, other centre, suburb), length of trip (less or more than 5 km), and vehicle type (8-seat or 4-seat vehicle with of without transfer, or car). jtue 6. helta 2003 18:55 48,24 176,232,1 48,24 1,40,0,398,544,17 2,102,90,476,451 100,170,170,770,1,9,6798,4744,7,0 Vehicle types Table(Self,Vehicle)( 'Minibus','Minibus','Minibus','Minibus','Minibus','Minibus','Minibus','Minibus','Minibus','Minibus','Minibus','Minibus','Minibus','Minibus','Minibus','Minibus','Minibus','Minibus', 'Minibus','Minibus','Minibus','Minibus','Minibus','Minibus','Car (d)','Car (d)','Car (d)','Minibus','Minibus','Minibus','Minibus','Minibus','Car (d)','Car (d)','Car (d)','Car (d)', 'Minibus','Minibus','Minibus','Minibus','Minibus','Minibus','Car (d)','Car (d)','Car (d)','Minibus','Minibus','Minibus','Minibus','Minibus','Minibus','Car (d)','Car (d)','Car (d)' ) [1,2,3] 56,224,1 48,24 2,531,17,416,475,0,MIDM 2,40,50,416,413,0,MIDM 52425,39321,65535 [Vehicle_types,Vehicle] [Vehicle_types,Vehicle] Delay time units Travel time between two city areas. It includes the time that is spent in the composite vehicle when it drives within the origin or destination area picking up or dropping off other passengers. However, the travel times of composite vehicles and car are estimated to be so close to each other that the same value is used for both. (In any case, the resolution is 12 min anyway). ceil(Distances[mode1='Car', time_of_day1='Morning']/Traffic_speed/time_unit) 56,152,1 48,24 2,262,247,476,324 2,414,130,694,363,0,MIDM [From,To1] Vehicle size passengers Size of vehicles that is used to allocate passengers into vehicles. For cars, the average number of passengers is 1.345 (See Car occupancy). A slightly higher number is used here, because with low volumes (1-4 passengers) the need of cars is overestimated if the actual number is used. Even if the higher number overcompensates this and causes bias, it is in favour of personal cars. Table(Vehicle)( 9,8,7,6,5,4,3,2,1,9,8,7,6,5,4,3,2,1) 168,184,1 48,24 1,1,1,1,1,1,0,,0, 2,9,108,476,406 2,88,98,416,398,0,MIDM 52425,39321,65535 [Hellman, 2004 54 /id] Trips trips/time unit The composite traffic trips are allocated into different vehicles. The following hierarchy is used in allocation. If the criterion is fulfilled, that number of passengers is allocated, and the rest will go to the next criterion. The criteria are used for a group of trips that has the same origin, destination, and time. 1) Use an 8-seat vehicle if there are enough passengers to get it full. 2) Use a 4-seat vehicle if there are enough passengers to get it full. Divide the trips into two parts so that the passenger changes vehicle in the most busy point along the route. Then, 3) Use an 8-seat vehicle if there are enough passengers to get it full. 4) Use a 4-seat vehicle if there are enough passengers to get it full. 5) Use a 4-seat vehicle for all the remaining trips. The criterion is checked at the actual arrival time at a transfer point, i.e. the model takes into account the different travel times between areas. var v:= Transfer_point; var b:= All_trips[Mode1='Composite']; var h:= 0; var y:= 1; var out:= 0; var yy:= if findintext('d',vehicle_noch)=1 then 1 else 0; yy:= if evaluate(selecttext(vehicle_noch,2))<= Scenario_input[input_var='Max size'] and evaluate(selecttext(vehicle_noch,2))>= Scenario_input[input_var='Min direct load'] then yy else 0; yy:= subset(yy); while y<=size(yy) do ( var s:= evaluate(selecttext(slice(yy,y),2)); h:= mod(b,s); out:= if ('d'&s)=Vehicle_noch then b-h else out; b:= h; y:= y+1); var noch:= round(b*scenario_input[input_var='No-change fraction']); b:= b-noch; var changed:= b; var a:= From&','&To1; var j:= if v=a then b else 0; b:= b-j; a:= ','&To1; {laskee alkumatkan matkasuoritteen} var d:= for x[]:= a do ( var c:= (if findintext(From&x,v)>0 then b else 0); c:= sum(c,To1) ); {siirtŠŠ matkasuoritetta alkumatkan viipeen verran.} var e:= selecttext(v,6,9); e:= for x[]:= evaluate(e) do delay[To1=x]; b:= time_shift(b,e); {laskee loppumatkan matkasuoritteen} a:= From&','; b:= for x[]:= a do ( var c:= (if findintext(x&To1,v)>0 then b else 0); c:= sum(c,From) ); b:= j+d+b; b:= b+noch; y:= 1; yy:= if findintext('c',vehicle_noch)=1 then 1 else 0; yy:= if evaluate(selecttext(vehicle_noch,2))<= Scenario_input[input_var='Max size'] then yy else 0; yy:= subset(yy); while y<=size(yy) do ( var s:= evaluate(selecttext(slice(yy,y),2)); h:= mod(b,s); out:= if ('c'&s)=Vehicle_noch then b-h else out; b:= h; y:= y+1); if Vehicle_noch='Noch' then noch else out 280,152,1 48,24 2,460,19,476,607 2,25,71,468,508,0,MIDM Graphtool:0 Distresol:10 Diststeps:1 Cdfresol:5 Cdfsteps:1 Symbolsize:6 Baroverlap:0 Linestyle:1 Frame:1 Grid:1 Ticks:1 Mesh:1 Scales:1 Rotation:45 Tilt:0 Depth:70 Frameauto:1 Showkey:1 Xminimum:0 Xmaximum:1 Yminimum:0 Ymaximum:1 Zminimum:0 Zmaximum:1 Xintervals:0 Yintervals:0 Includexzero:0 Includeyzero:0 Includezzero:0 Statsselect:[1,1,1,1,1,0,0,0] Probindex:[0.05,0.25,0.5,0.75,0.95] [Time,To1] [Index Mista] Total vehicle need vehicles Total number of vehicles needed to run the system. It is assumed that cars can be used in a similar way as composite vehicles, i.e. that if a car is parked, anyone can take and use it. This is of course unrealistic, but the bias is in the favour of car travelling. In addition, this number is not used for the final car need calculations. var a:= cumulative_balance; var driving:= -sum(a,from); a:= a-min(a,time); a:= sum(a,from)+driving; a:= max(a,time); if vehicle_type= 'Bus' then bus_need else a 392,352,1 48,24 2,518,118,476,305 2,15,21,372,202,0,MIDM [Vehicle_type,Time_of_day1] [Index Travel_type] Areal vehicle peak vehicles The highest number of vehicles during the observation period in each area. This excludes vehicles that are driving through the area. This is a proxy of parking lot need in the area. For practical reasons, the numbers are aggregated into zone level. It is assumed that cars can be used in a similar way as composite vehicles, i.e. that if a car is parked, anyone can take and use it. This is of course unrealistic, but the bias underestimates the parking lot need in favour of car travelling. It is also assumed that composite vehicles and cars use separate parking areas. In this way the beforementioned bias does not affect the estimate for composite traffic. var a:= cumulative_balance; a:= max(a,time)-min(a,time); aggr_zone(a) 392,288,1 48,24 2,25,35,476,460 2,8,6,365,180,0,MIDM [Zone,Vehicle_type] [Index Region2] 36,1,1,0,1,9,6798,4744,7 Link intensity vehicles/h The average number of vehicles per hour driving along a link for the 30 most busy links at 8.00-9.00 in the morning. Note that each street consists of two links going to opposite directions. var a:= if rank(-Trips_per_link_bau1,link1)<30 then 1 else 0; sum(a*Vehicles_per_link1,link1)/sum(a) 392,416,1 48,24 2,385,178,476,384 2,12,422,360,163,0,MIDM Transfer intensity passengers/d The number of transfers (changing composite vehicle in the middle of a trip) in each area. var a:= if vehicle_noch='Noch' then 0 else Trips; a:= sum(a,vehicle_noch); a:= sum(a-all_trips[Mode1='Composite'],time); var fro:= sum(a,To1); var to:= sum(a,from); fro+to[to1=from] 168,88,1 48,24 2,109,186,476,425 2,781,43,296,405,0,MIDM [To1,From] Trips per hour trips/h Total number of trips travelled per hour in the whole area. var a:= Trips[vehicle_noch=vehicle]; a:= sum(sum(a,From),To1)/time_unit; a 56,88,1 48,24 2,517,83,476,410 2,25,49,676,547,0,MIDM Graphtool:0 Distresol:10 Diststeps:1 Cdfresol:5 Cdfsteps:1 Symbolsize:6 Baroverlap:0 Linestyle:10 Frame:1 Grid:1 Ticks:1 Mesh:1 Scales:1 Rotation:45 Tilt:0 Depth:70 Frameauto:1 Showkey:1 Xminimum:0 Xmaximum:1 Yminimum:0 Ymaximum:7.25M Zminimum:1 Zmaximum:2 Xintervals:0 Yintervals:0 Includexzero:0 Includeyzero:0 Includezzero:0 Statsselect:[1,1,1,1,1,0,0,0] Probindex:[0.05,0.25,0.5,0.75,0.95] Arial, 8 [Vehicle,Time] Cumulative balance vehicles Cumulative net balance of vehicles and its development in time. This could take into account the compensative gap filling, i.e. if there is shortage of composite vehicles, empty vehicles are transported into the area. However, in the current version, it is assumed that empty vehicles are not transported. Because of this, there must be enough vehicles in each area so that it will not run out of them at any time of the day. dynamic(0,Cumulative_balance[time-1]+Vehicle_balance) 280,352,1 48,24 2,102,90,476,369 2,178,119,756,399,0,MIDM [Time,From] [Index From] Vehicle balance vehicles/time unit Number of vehicles coming to and leaving each area, i.e. the net balance of the area for each time point. Assumes 1.5 trips per private car. Assumes that all gasoline cars are private cars. var b:= vehicle_by_type; b:= if vehicle_type='Car (g)' then ceil(all_trips[mode1='Car']/1.5) else b; var a:= time_shift(b,delay+1); a:= sum(a,From); a:= a[To1=From]; a:= -sum(b,To1)+a; a 280,288,1 48,24 2,62,35,476,649 2,248,12,694,438,0,MIDM [Time,From] [Index From] Vehicle km km/time unit Number of vehicle kilometres driven during each time unit. Assumes 1.5 trips per private car. Assumes that all gasoline cars are private cars. var a:= vehicle_by_type; a:= if vehicle_type='Car (g)' then ceil(all_trips[mode1='Car']/1.5) else a; a:= aggr_period(a); a:= a*distances[mode1='Car', time_of_day1='Morning']; a:= aggr_zone(aggr_length(a)); a:= a[mode1='Composite']; if length='< 5 km' and zone=1 and vehicle_type='Bus' then bus_km else a 168,272,1 48,24 2,368,50,476,445 2,23,341,591,469,0,MIDM [Vehicle_type,Period] [Sysvar Time] 88,1,1,0,2,9,4744,6798,7 Waiting min Calculates the waiting time for composite traffic. First, we calculate the number of vehicles running between each points at each time. This is calculated for short (< 5 km) and long trips separately. We assume that the vehicles run at relatively regular intervals, and then the expected waiting time is half of the time difference between the vehicles. Then we sum over areas and aggregate over time, and calculate the trip-number-weighted waiting time. var siz:= if vehicle_noch='Noch' then 1 else vehicle_size[vehicle=vehicle_noch]; index a:= (4..max(drop_points*5))/5; a:= drop_points[area1=from]/Sqrt(a); a:= if a=inf then 0 else a; a:= a*(1-((a-1)/a)^siz)*drop_length[area1=from]; a:= a +(if findintext('c',vehicle_noch)=1 then time_unit*60/2 else 0); a:= if vehicle_noch='Noch' then 0 else a; var n:= sum(vehicle_by_type,vehicle_type); n:= drop_points[area1=from]/Sqrt(n); n:= if n=inf then 0.8 else round(n*5)/5; a:= a[.a=n]; var per:= if time>=6 and time<20 then ' 6.00-20.00' else if time>=20 and time<24 then '20.00-24.00' else ' 0.00- 6.00'; var x:= 1; var c:= 0; while x<= size(time) do ( var b:= slice(a,time,x)*slice(trips,time,x); c:= if slice(per,time,x)=period then c+b else c; x:= x+1); a:= trips_by_type(aggr_zone(aggr_length(c))); a:= a/composite_trips; if isnan(a) then 0 else a 512,184,1 48,24 2,26,19,474,651 2,2,11,470,460,0,MIDM Graphtool:0 Distresol:10 Diststeps:1 Cdfresol:5 Cdfsteps:1 Symbolsize:6 Baroverlap:0 Linestyle:1 Frame:1 Grid:1 Ticks:1 Mesh:1 Scales:1 Rotation:45 Tilt:0 Depth:70 Frameauto:1 Showkey:1 Xminimum:0 Xmaximum:1 Yminimum:0 Ymaximum:1 Zminimum:0 Zmaximum:1 Xintervals:0 Yintervals:0 Includexzero:0 Includeyzero:0 Includezzero:0 Statsselect:[1,1,1,1,1,0,0,0] Probindex:[0.05,0.25,0.5,0.75,0.95] [Period,Vehicle_type] [Index Vehicle] 11.7.2006 Jouni Tuomisto Ennen oli tŠmmšinen hieno yhteenveto, mutta sitten keksin paljon yksinkertaisemman, ja muistitarve romahti. var e:= for x:= waiting_time do ( var d:= if round(a)=x then c else 0; d:= trips_by_type(aggr_period(d)); d:= aggr_zone(aggr_length(d))); sum(e*waiting_time,waiting_time)/sum(e,waiting_time) 13.7.2006 Jouni Tuomisto Silti muistia kului liikaa tŠllŠ koodilla: {var siz:= if vehicle_noch='Noch' then 1 else vehicle_size[vehicle=vehicle_noch]; var a:= if vehicle_noch='Noch' then 0 else trips; a:= ceil(a/siz); var n:= drop_points[area1=from]/Sqrt(a); a:= if a>0 then n*(1-((n-1)/n)^siz)*drop_length[area1=from] else 0; a:= if findintext('c',vehicle_noch)=1 then ceil(time_unit*60/2)+a else a; a:= trips_by_type(aggr_zone(aggr_length(aggr_period(a*trips)))); a/composite_trips}{missing ')'} Yritin siis vielŠ viilata sujuvammaksi, mutta ei pŠŠse mihinkŠŠn siitŠ, ettŠ tŠssŠ pitŠŠ pyšrittŠŠ taulua jonka ulottuvuudet ovat from*to1*time*vehicle_noch. PitŠmŠllŠ Vehicle_nochin mahdollisimman lyhyenŠ sŠŠstetŠŠn tietysti muistia. Waiting time A dummy index 1..20 512,216,1 48,12 Zones The areas are classified into three categories: 1) downtown (downtown of Helsinki), 2) centre (other major centres within the Metropolitan area), and 3) suburb (all other areas). Table(Area1)( 1,1,1,1,2,2,2,2,2,2,2,2,3,3,2,3,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,3,3,3,2,2,3,3,3,3,3,3,3,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,3,3,3,3,3,3,2,3,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,0) 512,32,1 48,24 2,782,11,215,614,0,MIDM 52425,39321,65535 All trips2 trips Total composite and car trips classified into zones and periods. This is the number of original trips, which is divided into car and composite trips. Compare Trips.v by zone. aggr_zone(aggr_length(aggr_period(All_trips))) 512,352,1 48,24 2,403,72,476,371 2,253,263,718,295,0,MIDM [Zone,Period] [Index Length] Outputs The combined result of various variables using the basic assumptions. This output is copied to the module 'Static nodes' and subsequently used as the basis for cost calculations. var a:= array(zone,[total_vehicle_need,0,0]); var b:= array(zone,[link_intensity,0,0]); a:= array(period,[areal_vehicle_peak,b,a]); a:= array(length,[a,0]); b:= all_trips2; b:= array(vehicle_type,[ slice(b,mode1,3), slice(b,mode1,2),0, slice(b,mode1,1)]); array(output1, [composite_trips,b,nochange_trips,vehicle_km,a,waiting]) 512,272,1 48,24 2,32,126,475,355 2,627,251,487,311,0,MIDM [Alias Bau_scenario_output1, Formnode Outputs2] Graphtool:0 Distresol:10 Diststeps:1 Cdfresol:5 Cdfsteps:1 Symbolsize:6 Baroverlap:0 Linestyle:1 Frame:1 Grid:1 Ticks:1 Mesh:1 Scales:1 Rotation:45 Tilt:0 Depth:70 Frameauto:1 Showkey:1 Xminimum:0 Xmaximum:1 Yminimum:0 Ymaximum:1 Zminimum:0 Zmaximum:1 Xintervals:0 Yintervals:0 Includexzero:0 Includeyzero:0 Includezzero:0 Statsselect:[1,1,1,1,1,0,0,0] Probindex:[0.05,0.25,0.5,0.75,0.95] [Zone,Period] [Index Length] Length The length of the trip classified as short (< 5 km) and long. ['< 5 km','>= 5 km'] 280,48,1 48,12 Composite trips trips Total composite and car trips classified into zones and periods. This is indexed by different vehicle types based on the modelled allocation. Note that this number is greater than Trips.m by zone, because here all trips with transfer are calculated as two separate trips. var a:= aggr_period(trips); a:= trips_by_type(a); a:= aggr_length(a); aggr_zone(a) 392,224,1 48,24 2,102,90,476,388 2,43,123,450,295,0,MIDM [Zone,Period] (a) Trips by type Aggregates the vehicle index into vehicle_type index. The input parameter a must be indexed by either vehicle or vehicle_noch. var type:= vehicle_types[vehicle_types= Scenario_input[input_var= 'Vehicle types']]; type:= type[vehicle=vehicle_noch]; {a:= if size(a)=size(sum(a,vehicle_noch)) then a else a[vehicle_noch=vehicle]; a:= if a=null then 0 else a;} a:= if vehicle_noch='Noch' then 0 else a; for x:= vehicle_type do ( var b:= if type=x then a else 0; sum(b,vehicle_noch)) 392,48,1 48,12 2,372,20,476,352 a (param1) Aggr zone Aggregates geographical location based on the following rules: If trip is within downtown, it is Downtown. If trip is within downtown or centre, it is Centre. If trip goes to suburb, it is Suburb. Param1 must contain To1, From, or both, and this function will aggragate those two indices. if size(param1)/size(from)/size(to1)=size(sum(sum(param1,from),to1)) then var a:= zones[area1=to1]*zones[area1=from]; a:= if a>4 then 3 else if a=4 then 2 else a; a:= if zone=a then param1 else 0; a:= sum(sum(a,from),to1) else var b:= param1[from=to1]; var a:= zones[area1=to1]; a:= if zone=a then b else 0; a:= sum(a,to1) 392,16,1 48,12 2,16,127,476,428 param1 Nochange trips We assume here that Noch-trips are performed with the vehicle in the first row of Vehicle_noch index. Actually, it is not known, which type of vehicles are used for noch-trips, but this is not a problem unless Nochange fraction is not 0. And even then it is a minor thing. var a:= aggr_zone(aggr_length(trips_aggr_period)); a:= if findintext('c',vehicle_noch)>0 then 0 else a; a:= a+array(vehicle_noch,[a[vehicle_noch='Noch']]); a:= trips_by_type(a); 392,152,1 48,24 2,40,50,684,303,0,MIDM [Zone,Period] (param1) Aggr length var c:= array(length,[0,1]); c:= if distances[mode1='Car', time_of_day1='Morning'] < 5 then 1-c else c; param1*c 288,16,1 48,12 param1 Drop points area1*0+scenario_input[input_var='Drop points/area'] 512,88,1 48,24 65535,52427,65534 Drop length area1*0+1 392,88,1 48,24 2,496,250,476,224 65535,52427,65534 Vehicle by type var type:= vehicle_types[vehicle_types= Scenario_input[input_var= 'Vehicle types']]; type:= type[vehicle=vehicle_noch]; var a:= trips/vehicle_size[vehicle=vehicle_noch]; var c:= 0; var x:= 1; while x< size(vehicle_noch) do ( var b:= ceil(slice(a,vehicle_noch,x)); b:= if slice(type,vehicle_noch,x)=vehicle_type then b else 0; c:= c+b; x:= x+1); c 280,224,1 48,24 2,530,57,476,336 2,65,48,416,303,0,MIDM [To1,From] Trips aggr period aggr_period(trips) 280,88,1 48,24 [To1,From] Vehicles per link vehicles/h The number of vehicles in each link. Assumes 1.5 trips per private car. Assumes that all gasoline cars are private cars. var v:= Route_matrix; index e:= Sequence(8,8.99,time_unit); var g:= vehicle_by_type; g:= if vehicle_type='Car (g)' then ceil(all_trips[mode1='Car']/1.5) else g; g:= sum(g[time=e],e); for x[]:= link1 do ( var c:= (if findintext(x,v)>0 then g else 0); c:= sum(sum(c,From),To1) ) 168,352,1 48,24 2,96,75,428,552,0,MIDM [Vehicle_type,Link1] Trips per link BAU trips/h Vehicles per link in a scenario with cars only. This is used to rank the links according to their vehicle intensities. var v:= Route_matrix; var a:= Link1; index e:= sequence(8,8.99,time_unit); var f:= sum(sum(adjusted_trip_rate[time=e],e),mode1); for x[]:= a do ( var c:= (if findintext(x,v)>0 then f else 0); c:= sum(sum(c,From),To1) ) 280,416,1 48,24 2,74,10,797,552,0,MIDM [To1,From] Bus km km The number of buses needed depends on the higher amount of trips to one direction. In addition, we assume that if a bus is put on its way, it will drive the whole route and come back (thus the factor 2) independently on what is the need elsewhere. The travel is assumed to happen immediately, because there is no need to have higher time resolution. One bus is assumed to take max 50 passengers. var a:= ceil(max(max(bus_trips,bus_trips.etappi), bus_trips.mp)/50); a:= sum(a*bus_route_length*2,a.i); a:= sum((if time_of_day_by_time= time_of_day1 then a else 0),time_of_day1); aggr_period(a) 56,272,1 48,24 2,102,90,476,412 2,40,50,480,303,0,MIDM [Time_of_day1,Time] [Sysvar Time] Bus need # The number of buses needed depends on the amount of trips to the more busy direction. In addition, we assume that if a bus is put on its way, it will drive the whole route and come back independently on what is the need elsewhere. The travel is assumed to happen immediately, because there is no need to have higher time resolution. One bus is assumed to take max 50 passengers and drive on average 30 km/h. The need is simplly the highest total need summed over all routes at one time point. But also other buses are taken into account, those that have started but have not returned yet. The busyest time point only is considered. var a:= bus_trips; a:= ceil(max(max(a,a.etappi), a.mp)/50); a:= a*bus_route_length*2/30/time_unit; max(sum(a,a.i),time_of_day1) 512,416,1 48,24 2,615,108,605,505 2,40,50,1105,409,0,MIDM [I,Time_of_day1] [Index I] Vehicle by type var type:= vehicle_types[vehicle_types= Scenario_input[input_var= 'Vehicle types']]; type:= type[vehicle=vehicle_noch]; var siz:= if vehicle_noch='Noch' then 1 else vehicle_size[vehicle=vehicle_noch]; var a:= if vehicle_noch='Noch' then 0 else ceil(trips/siz); for x:= vehicle_type do ( var b:= if type=x then a else 0; sum(b,vehicle_noch)) 64,344,1 48,24 2,65,48,416,303,0,MIDM [To1,From] Costs This module calculates various pressures of different traffic scenarios. The estimates are based on Outputs node (which has been calculated beforehand due to slow calculations) and the numbers are stored in Static nodes). The outputs of each scenario are indexed (when relevant) by period (day, evening, night); zone (Helsinki downtown, other centre, suburb), length of trip (less or more than 5 km), and vehicle type (8-seat or 4-seat vehicle with of without transfer, or car). Costs are separately calculated for the passenger and the society. Some costs affect these stakeholders differently, such as fine particle and carbon dioxide emissions: they are calculated as societal costs only, not as costs to a passenger. The following endpoints are considered (see Table 1): Fraction of composite trips without change (%) Vehicles needed (number) Parking places need (number) Average vehicle flow on the 30 most busy roads (vehicles/h at 8.00-9.00 AM) Fine particle (<2.5 µm of diameter) emissions (kg per day) Carbon dioxide emissions (ton per day) Driver salaries (thousand e per day) Vehicle capital and operational costs (thousand e per day) Time cost (thousand e per day) Average car trip cost to passenger (e per trip) Expected composite trip cost to passenger (e per trip) The following costs are taken into account for passenger (P) or societal (S) costs: Vehicle capital cost (P+S) Driver salary cost (P+S) Driving cost (fuel) (P+S) Parking (parking fees for individual drivers) (P) Parking land (opportunity cost of reserving land to parking purposes) (P+S) Emissions (fine particles and carbon dioxide causing health and climate change effects, respectively (S) Time for waiting composite vahicles, time spent in traffic jams (P+S) Accidents (an option only, not used in the current model) Ticket (profit for composite service provider) (P) The module has a submodule Cost elements. It contains the detailed descriptions of the unit costs and other input variables that are used to calculate the pressures of each scenario. The values used are dependent on the stakeholder. For example, the car price is the price that a random new car would cost, and it has therefore large uncertainty. On the other hand, the price of a 4-seat composite vehicle is the average price a taxi-style car would cost in Finland, and the confidence intervals are narrower because there is no individual uncertainty. This is because the price of an individual car affects the costs of individual car trips, while the cost of composite trip is dependent on the total cost of vehicles. Variation between individuals has been separately estimated for three variables: how passengers evaluate the capital costs of owning a car; how passengers are willing to pay for either the right to drive themselves or to not need to drive; and how many passengers are traveling together. jtue 6. syyta 2004 13:46 48,24 296,232,1 48,24 1,238,69,408,523,17 Scenarios output # or #/h A set of scenarios organised along two indexes: Guar is the level of composite traffic guarantee. This means that trips within a certain area will be organised by composite travel, while areas outside this guarantee remain without the service. The point in using this index is to explore whether composite traffic can be started with low profile and expanded geographically as more people start using it. Comp_fr is the fraction of trips that were previously performed by personal car but are performed by composite traffic in the scenario. var a:= Scenario_data; var b:= Scenario_description; a:= if b[input_var='Car fraction']=Car_fr then a else 0; a:= if Car_fr=1 then a[guar=7] else a; a:= if Car_fr=1 and output1='Waiting' then 0 else a; a:= if b[input_var='Public fraction']=public_fr then a else 0; a:= if b[input_var='Guarantee level']=guar then a else 0; a:= if b[input_var='Large guarantee?']=large then a else 0; a:= if b[input_var='Public level']=public_level then a else 0; a:= if b[input_var='No-change fraction']=nochange_fr then a else 0; a:= if b[input_var='Max size']=max_size then a else 0; a:= if b[input_var='Min direct load']=min_direct then a else 0; a:= if b[input_var='Vehicle types']=veh_types then a else 0; a:= if b[input_var='Drop points/area']=drop then a else 0; a:= sum(a,Scen_ind); a:= if a=null then 0 else a; a:= if size(car_fr)=1 then sum(a,car_fr) else a; a:= if size(guar)=1 then sum(a,guar) else a; a:= if size(public_fr)=1 then sum(a,public_fr) else a; a:= if size(large)=1 then sum(a,large) else a; a:= if size(public_level)=1 then sum(a,public_level) else a; a:= if size(nochange_fr)=1 then sum(a,nochange_fr) else a; a:= if size(max_size)=1 then sum(a,max_size) else a; a:= if size(min_direct)=1 then sum(a,min_direct) else a; a:= if size(veh_types)=1 then sum(a,veh_types) else a; a:= if size(drop)=1 then sum(a,drop) else a; 280,32,1 48,24 2,499,5,476,620 2,38,42,940,419,0,MIDM Graphtool:0 Distresol:10 Diststeps:1 Cdfresol:5 Cdfsteps:1 Symbolsize:6 Baroverlap:0 Linestyle:10 Frame:1 Grid:1 Ticks:1 Mesh:1 Scales:1 Rotation:45 Tilt:0 Depth:70 Frameauto:1 Showkey:1 Xminimum:5 Xmaximum:15 Yminimum:0 Ymaximum:1M Zminimum:1 Zmaximum:6 Xintervals:0 Yintervals:0 Includexzero:0 Includeyzero:0 Includezzero:0 Statsselect:[1, 1, 1, 1, 1, 0, 0, 0] Probindex:[5%, 25%, 50%, 75%, 95%] Arial, 5 [Car_fr,Period] [Index Length] [0,0,0,0] Cost structure The various costs that are included in the model. The details of each cost are described in the respective node in the 'Detailed costs' module. Accidents are omitted, although there is a placeholder. ['Vehicle','Driver','Driving','Parking','Parking land','Emissions','Time','Accidents','Ticket'] 280,312,1 52,12 2,102,90,476,466 2,15,262,416,303,0,MIDM Car capital valuation The variation of how much an individual values the capital costs of the personal car when estimating the costs of a single trip. If the person needs the car only for trips within the composite traffic area, the valuation might be 1. However, the car is often needed for other purposes also such as longer trips (value: <1), and some people like to own a car in any case (value: 0). ktluser 24. lokta 2004 12:48 ktluser 28. lokta 2004 23:31 48,24 56,400,1 48,24 1,1,1,1,1,1,0,0,0,0 1,40,59,-432,294,17 Arial, 13 Cap variab fraction Each row represents one possibility for the distribution of individual valuations in the population. Probability distributions are used to represent this variation within population. Table(Self)( Uniform(0,1),Triangular(0,0,1),Bernoulli(0.2)) [1,2,3] 56,32,1 48,24 2,376,89,476,280 2,98,96,288,157,0,MIDM 2,280,290,465,303,0,MIDM 65535,52427,65534 [0,0,0,0] Based on author judgement, as there is no data available. Cap uncert The uncertainty between several valuation distributions on the population level. Probtable(Self)( (1/3),(1/3),(1/3)) 56,96,1 48,24 2,97,295,351,170,0,MIDM 2,248,258,416,303,0,SAMP 52425,39321,65535 [1,2,3] Based on author judgement, as there is no data available. Cap fraction The aggregate of the car capital variation and uncertainty. Cap_variab_2[Cap_variab=Cap_uncert] 168,96,1 48,24 2,247,96,476,420 2,83,220,416,303,0,MIDM [0,0,0,0] Cap variation fractile The fractile of the sample within the population. average(sample(Cap_variab_2),cap_variab) 168,32,1 48,24 2,199,80,476,280 2,510,212,416,303,1,CDFP [Run,Cap_variab] [0,0,0,0] 9.5.2005 Jouni Tuomisto Vanha syntaksi, ennen kuin keksin miten epŠvarmuus ja vaihtelu erotetaan: var a:= rank(cap_variab,run)/samplesize; a[Cap_variab=Cap_uncert] Cap variab 2 Vanha Cap: Cap_variab_2[Cap_variab=Cap_uncert] Vanha Cap_variation: average(sample(cap_variab_2),cap_variab) var a:= cap_variab[run=sortindex(cap_variab,run)]; var b:= uniform(0,1); a[run=sortindex(b,run)] 168,168,1 48,24 2,252,400,476,224 2,576,48,377,441,0,SAMP Graphtool:0 Distresol:10 Diststeps:1 Cdfresol:5 Cdfsteps:1 Symbolsize:6 Baroverlap:0 Linestyle:10 Frame:1 Grid:1 Ticks:1 Mesh:1 Scales:1 Rotation:45 Tilt:0 Depth:70 Frameauto:1 Showkey:1 Xminimum:0 Xmaximum:100 Yminimum:0 Ymaximum:1 Zminimum:1 Zmaximum:3 Xintervals:0 Yintervals:0 Includexzero:0 Includeyzero:0 Includezzero:0 Statsselect:[1,1,1,1,1,0,0,0] Probindex:[0.05,0.25,0.5,0.75,0.95] Arial, 8 [Cap_variab,Run] [0,0,0,0] Willingness to drive The price that the passenger is willing to pay to be able to drive the vehicle him/herself compared with the situation where the composite driver drives the vehicle. Note that for car passengers, the question is not about driving but being a passenger in a car or in a composite vehicle. There are also cases where the car driver is not traveling but only chauffeuring passengers that do not have driver's license. The willingness to drive is probably low in these cases, but we were very modest in these estimates. There exists no data about this variable, because it is about a comparison between the current and a hypothetical situation. Author judgement is therefore used. ktluser 24. lokta 2004 12:48 48,24 56,456,1 48,24 1,1,1,1,1,1,0,0,0,0 1,444,64,-318,333,17 Arial, 13 Drive variab fraction Willingness to drive. This is expressed as fraction of composite driver's salary. Each row represents one possibility for the distribution of individual valuations in the population. Probability distributions are used to represent this variation within population. Table(Self)( Uniform(-0.3,0),Triangular(-0.1,0,0.3),Uniform(-0.2,0.2)) [1,2,3] 64,40,1 48,24 2,102,90,476,405 2,79,219,457,274,0,MIDM 2,132,57,335,303,0,SAMP 65535,52427,65534 [Drive_variab,Run] [0,0,0,0] Based on author judgement, as there is no data available. Drive uncert The uncertainty between several valuation distributions on the population level. Probtable(Self)( (1/3),(1/3),(1/3)) 64,104,1 48,24 2,488,60,247,303,0,SAMP 52425,39321,65535 [1,2,3] Based on author judgement, as there is no data available. Drive fraction The aggregate of the willingness to drive variation and uncertainty. It is expressed as a fraction of composite driver's salary. Drive_variab_2[Drive_variab=Drive_uncert] 176,104,1 48,24 2,786,88,416,303,0,SAMP [0,0,0,0] Drive variation fractile The fractile of the sample within the population. average(sample(drive_variab_2),drive_variab) 176,40,1 48,24 2,104,69,476,224 2,120,130,416,303,1,CDFP [Run,Cap_variab] [0,0,0,0] Drive variab 2 Vanha Drive: Drive_variab_2[Drive_variab=Drive_uncert] Vanha Drive_variation: average(sample(drive_variab_2),drive_variab) var a:= drive_variab[run=sortindex(drive_variab,run)]; var b:= uniform(0,1); a[run=sortindex(b,run)] 176,176,1 48,24 2,767,125,476,362 2,576,48,377,441,0,SAMP Graphtool:0 Distresol:10 Diststeps:1 Cdfresol:5 Cdfsteps:1 Symbolsize:6 Baroverlap:0 Linestyle:10 Frame:1 Grid:1 Ticks:1 Mesh:1 Scales:1 Rotation:45 Tilt:0 Depth:70 Frameauto:1 Showkey:1 Xminimum:0 Xmaximum:100 Yminimum:0 Ymaximum:1 Zminimum:1 Zmaximum:3 Xintervals:0 Yintervals:0 Includexzero:0 Includeyzero:0 Includezzero:0 Statsselect:[1,1,1,1,1,0,0,0] Probindex:[0.05,0.25,0.5,0.75,0.95] Arial, 8 [Drive_variab,Run] [0,0,0,0] Trips per mode trips/period Number of trips per period var a:= scenarios_output[output1='All trips']; a:= array(mode1,[ slice(a,vehicle_type,4), slice(a,vehicle_type,2), slice(a,vehicle_type,1)]); sum(sum(a[period=choose_period],zone),length) 400,208,1 48,16 2,102,90,476,257 2,17,71,622,270,0,MIDM [Car_fr,Mode1] [Index Length] [0,0,0,1] Stakeholder There are three different stakeholders: 'Passenger' is a random sample of passengers who have chosen the personal car in the business-as-usual scenario, and may choose between car and composite traffic in other scenarios. 'Society' the community that is responsible for the well-being of citizens in the metropolitan area. It also has the ability to pay subsidies to public transportation. Societal costs include other costs than passenger costs, such as health effects of air pollution, and opportunity costs of parking space. 'Bus company', the composite traffic service provider, is a simple stakeholder and does not therefore show up in the stakeholder index. Its only interest (in the model) is to get a reasonable profit ('Ticket' cost) from each composite trip (in addition to covering direct costs). ['Passenger','Society'] 168,456,1 48,12 Cost elements This module contains the detailed descriptions of the unit costs and other input variables that are used to calculate the pressures of each scenario. The values used are dependent on the context. For example, the car price is the price that a random new car would cost, and it has therefore large uncertainty. On the other hand, the price of a 4-seat composite vehicle is the average price a taxi-style car would cost in Finland, and the confidence intervals are narrower because there is no individual uncertainty. This is because the price of an individual car affects the costs of individual car trips, while the cost of a composite trip is dependent on the total cost of vehicles to the service provider. ktluser 3. marta 2004 16:37 48,24 168,360,1 48,24 1,153,37,408,505,17 [Alias Cost_elements1] Emission factor g/km Fine particle and carbon dioxide unit emissions for average vehicles. Fine particle emissions are taken from the Lipasto model using average (mixed gasoline and diesel) values for personal car and diesel EURO3 (applied since 2000) values for composite vahicles. For CO2, typical emissions of a new car were used based on the Finnish Vehicle Administration AKE. The following vehicles are used as typical examples of the class: 8-seat vehicle: Toyota Hiace 2.5 D4D 100 4 door long DX bus 4-seat vehicle: Toyota Corolla 2.0 90 D4D Linea Terra 5 door Hatchback (diesel) Car: Toyota Corolla 1.6 VVT-i Linea Terra 5ov Hatchback (gasoline) Table(Vehicle_type,Emission)( (0.1*Triangular(0.3,1,1.7)),(232*Triangular(0.9,1,1.1)), (0.1*Triangular(0.3,1,1.7)),(232*Triangular(0.9,1,1.1)), (0.1*Triangular(0.3,1,1.7)),(153*Triangular(0.9,1,1.1)), (0.047*Triangular(0,1,2)),(168*Triangular(0.9,1,1.1)) ) 472,368,1 48,24 2,45,51,618,623 2,231,148,416,303,0,MIDM 2,56,66,416,303,0,MEAN 65535,52427,65534 [Emission,Vehicle_type] [Emission,Vehicle_type] [0,0,0,0] http://lipasto.vtt.fi/yksikkopaastot/henkiloautotkeskimaarin.htm PŠŠkaupunkiseudun julkaisusarja B1999: 5. Vaihtoehtoisten polttoaineiden kŠyttšmahdollisuudet joukkoliikentessŠ PŠŠkaupunkiseudulla. Taulukko 3, Keskusta ja esikaupunki. Autorekisterikeskus AKE: Uuden auton kulutustiedot. EKOAKE, huhtikuu 2003. Emission ['PM','CO2'] 472,400,1 48,12 Vehicle price e/vehicle Price of a new vehicle. Note that the interpretation is slightly different with different vehicles. The car price is the price that a random new car would cost, and it has therefore large uncertainty. The price of a composite vehicle is the average price of a taxi-style car in Finland, and the confidence intervals are narrower because there is no individual uncertainty. This is because the price of an individual car affects the costs of individual car trips, while the cost of a composite trip is dependent on the total cost of vehicles to the service provider. var d:= 160K*Triangular(0.75,1,1.25); var a:= 39.52K*Triangular(0.75,1,1.25); var b:= 22.6K*Triangular(0.75,1,1.25); var c:= lognormal(19.1K,1.5); a:= array(Vehicle_type,[d,a,b,c]); {a[vehicle_type=vehicle_types]} 56,24,1 48,24 2,102,90,476,375 2,22,50,416,303,0,MIDM 2,68,58,839,549,0,MIDM 65535,52427,65534 Graphtool:0 Distresol:10 Diststeps:1 Cdfresol:5 Cdfsteps:1 Symbolsize:6 Baroverlap:0 Linestyle:1 Frame:1 Grid:1 Ticks:1 Mesh:1 Scales:1 Rotation:45 Tilt:0 Depth:70 Frameauto:1 Showkey:1 Xminimum:-20K Xmaximum:80K Yminimum:-1u Ymaximum:1u Zminimum:1 Zmaximum:6 Xintervals:0 Yintervals:0 Includexzero:0 Includeyzero:0 Includezzero:0 Statsselect:[1,1,1,1,1,0,0,0] Probindex:[0.05,0.25,0.5,0.75,0.95] [0,0,0,0] Vehicle lifetime a Expected operation time of a new vehicle. var d:= 12*Triangular(0.75,1,1.25); var a:= 7*Triangular(0.75,1,1.25); var b:= 5*Triangular(0.75,1,1.25); var c:= 9*Triangular(0.7,1,1.3); a:= array(Vehicle_type,[d,a,b,c]); {a[vehicle_type=vehicle_types]} 184,88,1 48,24 2,102,90,476,484 2,14,383,416,303,0,MIDM 65535,52427,65534 [0,0,0,0] Fuel consumption l/km Fuel consumption of a vehicle. It is assumed that composite vehicles use diesel fuel and cars use gasoline. The values are based on standardised European consumption values of a new car. var a:= (8.7/100)*Triangular(0.75,1,1.25); var b:= (5.7/100)*Triangular(0.75,1,1.25); var c:= (8/100)*Triangular(0.5,1,1.5); a:= array(Vehicle_type,[a,a,b,c]); {a[vehicle_type=vehicle_types]} 56,168,1 48,24 2,454,28,476,455 2,425,410,416,303,0,MIDM 2,152,162,416,303,0,MIDM 65535,52427,65534 [0,0,0,0] Fuel price e/l Diesel price for composite vehicles; gasoline price for cars. The values are based on rough follow-up of retail prices in Finland in fall 2004 - summer 2005. var a:= 0.95*triangular(0.8,1,1.2); var b:= 1.22*triangular(0.8,1,1.2); array(Vehicle_type,[a,a,a,b]) 56,216,1 48,24 2,102,90,476,529 2,481,182,416,246,0,MIDM 2,264,175,697,402,0,MIDM 65535,52427,65534 [0,0,0,0] St1 gas station, Kuopio keskusta, 6.9.2004. Driver salary e/h Monthly salary and social security costs (35 %), and scaled to one hour assuming 160 hours of work per month. The salary is based on that of bus drivers in municipality-owned bus companies. var a:= 2313/160*1.35; normal(a,a*0.18) 192,32,1 48,24 2,102,90,476,468 2,411,332,416,303,0,CONF 65535,52427,65534 [0,0,0,0] Statistics Finland 2005 <a href= "http://statfin.stat.fi/StatWeb/start.asp?LA=en&lp=home&DM=SLEN" >Click</a> Parking space e/d/parking space Cost of a parking space to the society due to the opportunity loss of the land, and maintenance costs. var va1:= 1.05^30; var a:= 20*3000; a:= (a-a/va1)*va1; a:= a/30/365; a/2*lognormal(1,1.3) 192,272,1 48,24 2,102,90,476,328 2,40,50,416,303,0,MIDM 65535,52427,65534 [0,0,0,0] Emission unit cost e/kg Assumptions: Primary fine particle emissions of 24290 kg/a caused 12.5 deaths in a risk assessment study in Helsinki (Tainio et al, 2005). We here use the distribution of deaths per emission derived from that study. The value of a statistical life is 0.98-2 Me (Watkiss et al., 2005). The official value for road economy calculations is 201.879 e/kg (LVM, 2003). This value is within the range derived from Tainio, but clearly lower than the mean. CO2 emission price comes from the emission trade market. According to Helsingin Sanomat (7 May, 2005), it was 18 e/ton in 5 Apr, 2005, although it had been lower during previous months. In July, it was approaching 30 e/ton according to Taloussanomat. The official value for road economy calculations is 32 e/ton (LVM, 2003), which is within the range used here. var a:= Pm_unit_lethality; array(Emission, [a*uniform(0.98M,2M), uniform(5,40)/1000]) 192,216,1 48,24 2,73,7,548,645 2,466,127,416,303,0,MIDM 2,54,148,672,472,0,MIDM 65535,52427,65534 Graphtool:0 Distresol:10 Diststeps:1 Cdfresol:5 Cdfsteps:1 Symbolsize:6 Baroverlap:0 Linestyle:1 Frame:1 Grid:1 Ticks:1 Mesh:1 Scales:1 Rotation:45 Tilt:0 Depth:70 Frameauto:1 Showkey:1 Xminimum:0 Xmaximum:1 Yminimum:0 Ymaximum:1 Zminimum:0 Zmaximum:1 Xintervals:0 Yintervals:0 Includexzero:0 Includeyzero:0 Includezzero:0 Statsselect:[1,1,1,1,1,0,0,0] Probindex:[0.05,0.25,0.5,0.75,0.95] [0,0,0,0] Tainio, M., Tuomisto, J.T., HŠnninen, O., Aarnio, P., Koistinen, K.J., Jantunen, M.J., and Pekkanen J. Health effects caused by primary particulate matter (PM2.5) emitted from buses in the Helsinki Metropolitan Area, Finland. Risk Analysis, Vol. 25, No.1, 2005. pp. 151-160. {[Tainio, 2005 96 /id]} <a href="http://www.blackwell-synergy.com/links/doi/10.1111/j.0272-4332.2005.00574.x/abs/">Link to publisher</a> {[Watkiss, 2005]} <a href="http://europa.eu.int/comm/environment/air/cafe/activities/cba_baseline_results2000_2020.pdf">Click</a> {[LVM, 2003]} <a href="http://www.mintc.fi/www/sivut/dokumentit/julkaisu/mietinnot/2003/b292003.pdf">Click</a> Trips per car trips/d/car Number of trips per car per day, i.e. the cumulative number of passenger that use the car during the day. This value is used to calculate the need of cars. uniform(4,10) 312,88,1 48,24 65535,52427,65534 Ticket e/trip The income the service provider wants to get from composite traffic users in addition to the price of the direct costs (vehicle, fuel, driver, and parking costs). Uniform( 0.2, 0.6 ) 312,160,1 48,24 65535,52427,65534 [0,0,0,0] Group size passengers Size of group traveling together for a random passenger. var a:= Car_occupancy*occupancy; a:= a/sum(a,occupancy); chancedist(a,occupancy,occupancy) 192,328,1 48,24 2,355,136,476,344 2,445,95,416,473,0,MEAN 65535,52427,65534 [0,0,0,1] Occupancy An index for the number of passengers in a personal car. 1..5 56,360,1 48,12 Rush delay h, fraction Delay that is caused by increased link intensity. The node contains two values. Delay is the average time of delay due to traffic jams during daytime. Reduction is the relative reduction to 'Link intensity' (average vehicle flow on the 30 most busy roads at 8.00-9.00 AM) that is needed to reduce the delay to 0 min. Table(Self)( (Triangular(0,0,10)/60),0.3) ['Delay','Reduction'] 312,32,1 48,24 2,102,90,476,386 2,592,87,416,303,0,MIDM 2,40,50,416,303,0,SAMP 65535,52427,65534 [Rush_delay,Run] [0,0,0,0] Parking price e/trip The cost of 30 min parking in zones 1, 2, 3 in Helsinki. It is assumed that each car trip involves 30 min of parking during daytime, while during evening and night, the parking is free. Also daytime parking at home is included in these estimates, although it is difficult to valuate. In any case, it is common to pay at least 5-10 euro per month for a parking place (or more for a garage), which is 15-30 cents per day. Due to the uncertainties, the confidence intervals are large. Table(Period,Zone)( ((2.4*0.5)*Triangular(0,1,2)),((1.2*0.5)*Triangular(0,1,2)),((0.6*0.5)*Triangular(0,1,2)), 0,0,0, 0,0,0 ) 312,272,1 48,24 2,102,90,476,392 2,336,267,416,303,0,MIDM 2,232,242,416,303,0,MIDM 65535,52427,65534 [Period,Zone] [Period,Zone] [0,0,0,0] Accidents cases/a The number of injuries and deaths in traffic accidents in Vantaa, Espoo, and Helsinki, respectively. It is assumed that the number of 2002 or 2003 statistics is the expectation. Poisson distribution is used to describe the uncertainty. Taulukko 1-1 Liikenneonnettomuudet Vantaalla v. 2002 YhteensŠ Hvo Ovo Loukkaantui Kuoli Auto-onnettomuus 570 100 470 155 5 MoottoripyšrŠonnettomuus 23 15 8 13 2 Mopo-onnettomuus 14 6 8 7 0 PolkupyšrŠonnettomuus 47 37 10 40 0 Jalankulkijaonnettomuus 33 29 4 31 0 YhteensŠ tieliikenne 687 187 500 246 7 Raideliikenne (jk) 8 8 - 1 7 Hvo= henkilšvahinkoon johtanut onn. Ovo= omaisuusvahinkoon johtanut onn. LIIKENNEONNETTOMUUDET VUONNA 2003 Pelti rytisi Espoon alueella viime vuonna yhteensŠ 434 kertaa. Henkilšvahinko-onnettomuuksia oli 135, niissŠ kuoli 3 ja loukkaantui 159 henkilšŠ. Edelliseen vuoteen verrattuna liikenneonnettomuuksien mŠŠrŠ kŠŠntyi hienoiseen laskuun. Vuonna 2002 tilastoitiin 538 onnettomuutta. Liikenneonnettomuustiedot on koottu poliisille ilmoitetuista onnettomuustapauksista. Onnettomuuskustannukset Liikenneonnettomuudet aiheuttivat HelsingissŠ vuonna 2003 yhteensŠ 244 miljoonan euron yhteiskunnalliset kustannukset. Henkilšvahinkoihin johtaneiden onnettomuuksien osuus oli 213 miljoonaa euroa. Laskelma perustuu liikenne- ja viestintŠministerišn hyvŠksymiin liikenneonnettomuuksien yksikkškustannuksiin vuodelta 2000. Kustannuksissa ovat mukana onnettomuuksien aiheuttamat reaalitaloudelliset menetykset ja ns. hyvinvoinnin menetys. Taloudellisia kustannuksia ovat sairaanhoitokulut, uhrin tyšn menetys, ajoneuvovahingot sekŠ muut aineelliset vahingot. Table(Self)( Poisson(((246+159)+724)),Poisson(((7+3)+16))) ['Injuries','Deaths'] 312,408,1 48,24 2,82,80,500,500 2,578,153,416,303,0,MIDM 2,136,146,416,303,0,STAT 65535,52427,65534 Graphtool:0 Distresol:10 Diststeps:1 Cdfresol:5 Cdfsteps:1 Symbolsize:6 Baroverlap:0 Linestyle:1 Frame:1 Grid:1 Ticks:1 Mesh:1 Scales:1 Rotation:45 Tilt:0 Depth:70 Frameauto:1 Showkey:1 Xminimum:0 Xmaximum:1 Yminimum:0 Ymaximum:1 Zminimum:0 Zmaximum:1 Xintervals:0 Yintervals:0 Includexzero:0 Includeyzero:0 Includezzero:0 Statsselect:[1,1,1,1,1,0,0,0] Probindex:[0.05,0.25,0.5,0.75,0.95] [0,0,0,1] Liikenneonnettomuudet Vantaalla 2002. C21:2003. Vantaan kaupunki, Vantaa 2003. <a href="http://www.vantaa.fi/i_liitetiedosto.asp?path=1;135;137;221;1761;1827;7348;7349">Internet PDF</a> Liikenneonnettomuudet HelsingissŠ vuonna 2003. <a href="http://www.hel.fi/ksv/hela/Kaupunkisuunnittelulautakunta/Esityslistat/liitteet/041670240.pdf">Internet file</a> Espoon kaupunki, liikenneturvallisuus. <a href="http://www.espoo.fi/xsl_taso2_alasivuilla.asp?path=1;606;607;4214;7808">Internet page</a> http://www.tieh.fi/liikenneturvallisuus/lion04.pdf Accident costs e/d The societal costs of traffic accidents were 227 million euro in Helsinki in 2004. For the whole metropolitan area, this is more than 1 million euro per day. The numbers are scaled up from Helsinki to the metropolitan area based on the numbers of injured people in accidents. The uncertainty is based on the standard deviation of the variable Accidents (deaths), which is ca. 20% of the mean. The accident cost number for Helsinki is scaled up by the number of injuries in the whole Helsinki Metropolitan Area (for data and references, see Accidents). "Onnettomuuskustannukset Liikenneonnettomuudet aiheuttivat HelsingissŠ vuonna 2003 yhteensŠ 244 miljoonan euron yhteiskunnalliset kustannukset. Henkilšvahinkoihin johtaneiden onnettomuuksien osuus oli 213 miljoonaa euroa. Laskelma perustuu liikenne- ja viestintŠministerišn hyvŠksymiin liikenneonnettomuuksien yksikkškustannuksiin vuodelta 2000. Kustannuksissa ovat mukana onnettomuuksien aiheuttamat reaalitaloudelliset menetykset ja ns. hyvinvoinnin menetys. Taloudellisia kustannuksia ovat sairaanhoitokulut, uhrin tyšn menetys, ajoneuvovahingot sekŠ muut aineelliset vahingot." var a:= 227M*((246+159+724)/724)/365; normal(a,a/5) 312,328,1 48,24 2,511,78,500,544 2,26,124,416,303,0,MIDM 65535,52427,65534 [0,0,0,0] Liikenneonnettomuudet HelsingissŠ vuonna 2003. <a href="http://www.hel.fi/ksv/hela/Kaupunkisuunnittelulautakunta/Esityslistat/liitteet/041670240.pdf">Internet file</a> Liikenneonnettomuudet HelsingissŠ vuonna 2004. <a href="http://www.hel.fi/ksv/Mita_suunnitellaan/Liikenne/tilastoja/liikenneonnettomuudet2004.pdf"> Internet file </a> http://www.ytv.fi/FIN/seutu_ymparistotietoja/liikkuminen/onnettomuudet/etusivu.htm Cars should also have variation The costs of car have large individual variation. This might be an important factor in the comparison of car and composite traffic. This is not currently done but could be considered in the future versions of the model. Fuel_consumption; Vehicle_lifetime; Vehicle_price; 0 464,48,1 48,29 The costs are calculated for a passenger who has a car in the household and is trying to decide between the car and composite traffic The costs are calculated for a passenger who has a car in the household and is trying to decide between the car and composite traffic. vehicle_price 464,160,1 68,72 1,1,1,1,1,1,0,,1, 2,102,90,476,427 [Alias The_costs_are_calcu1] Time unit cost e/h The cost of time spent waiting for a composite vehicle or in traffic jam. Triangular( 0, 5.9, 11.8 ) ['Delay','Reduction','Cost'] 312,216,1 48,24 2,102,90,476,301 2,199,277,416,303,0,MIDM 65535,52427,65534 [0,0,0,0] Group subvention e/trip This subvention is given to passengers that travel in groups with more than one person. The idea is that the subsidy is an amount (uncertain to the decision-maker) which is given to everyone in the group except the first one. In this way, the total group subsidy increases with the size of the group (just like the efficiency of car travelling increases with more passengers). We assume here that the groups are identical in both car and composite modes. var a:= uniform(0,2); a:= a*(sample(Group_size)-1)/sample(Group_size); if subsidise_groups_='Yes' then a else 0 192,408,1 48,24 2,144,229,512,326 2,136,146,416,303,0,MIDM 65535,52427,65534 [Run,Subsidise_groups_] [0,0,0,1] Subsidise groups? Personal car becomes more efficient if there are several passengers. To attract groups to use the composite traffic, it is possible to subsidise groups so that there is a certain reduction in the ticket price. This node determines whether group subsidies are considered in the model or not. In the default model, this variable is set to No. Choice(Self,2) 56,408,1 48,24 2,102,90,476,342 [Formnode Subsidise_groups_1] ['Yes','No'] Car occupancy fraction Proportion of cars with different number of passengers. The last number is divided into occupancy '4' and '5' based on author judgement. The original data is from streets entering downtown Helsinki during a weekday (from 6.00 to 21.00) in May. driver 72.0 % driver+1 passenger 23.3 % driver+2 passengers 3.3 % driver+ at least 3 passenger 1.4 % var a:= array(occupancy,[0.72,0.233,0.033,0.01,0.004]); a 56,328,1 48,24 2,102,90,476,345 2,445,95,416,473,0,MIDM 65535,52427,65534 Car maintenance e/km Maintenance costs (service, tyres, oil etc.). This is based on Autoliitto's report 'Costs of car 2004'. Insurance and use tax are excluded, as like capital costs, there may be other reasons to own the car, and then these would be sunken costs. Original values assuming an old car with the original price 20000 e, 20000 km/a of driving (e/a): Maintenance 844 Tyres 320 total 1164/20000 = 0.0582 e/km Triangular( 0.03, 0.058, 0.086 ) 56,272,1 48,24 2,210,329,416,303,0,MEAN 65535,52427,65534 [0,0,0,0] PM unit lethality deaths/kg Assumptions: Primary fine particle emissions of 24290 kg/a caused 12.5 deaths in a risk assessment study in Helsinki (Tainio et al, 2005). We use the distribution of deaths per emission derived from that study. var a:= fractiles([ -7.223e-004, 5.640e-006, 4.228e-005, 5.987e-005, 8.013e-005, 1.150e-004, 2.037e-004, 2.939e-004, 3.598e-004, 4.132e-004, 4.640e-004, 5.139e-004, 5.662e-004, 6.233e-004, 6.854e-004, 7.577e-004, 8.441e-004, 9.519e-004, 1.093e-003, 1.314e-003, 2.805e-003]); a 192,160,1 48,24 2,102,90,476,428 2,466,127,416,303,0,MIDM 2,54,148,672,472,1,PDFP 65535,52427,65534 Graphtool:0 Distresol:10 Diststeps:1 Cdfresol:5 Cdfsteps:1 Symbolsize:6 Baroverlap:0 Linestyle:1 Frame:1 Grid:1 Ticks:1 Mesh:1 Scales:1 Rotation:45 Tilt:0 Depth:70 Frameauto:1 Showkey:1 Xminimum:0 Xmaximum:1 Yminimum:0 Ymaximum:1 Zminimum:0 Zmaximum:1 Xintervals:0 Yintervals:0 Includexzero:0 Includeyzero:0 Includezzero:0 Statsselect:[1,1,1,1,1,0,0,0] Probindex:[0.05,0.25,0.5,0.75,0.95] [0,0,0,0] Tainio, M., Tuomisto, J.T., HŠnninen, O., Aarnio, P., Koistinen, K.J., Jantunen, M.J., and Pekkanen J. Health effects caused by primary particulate matter (PM2.5) emitted from buses in the Helsinki Metropolitan Area, Finland. Risk Analysis, Vol. 25, No.1, 2005. pp. 151-160. {[Tainio, 2005 96 /id]} <a href="http://www.blackwell-synergy.com/links/doi/10.1111/j.0272-4332.2005.00574.x/abs/">Link to publisher</a> Bus ticket price ARVO Henkilškohtaiset ja haltijakohtaiset matkakortit Kaikilla arvolipuilla voi vaihtaa lipun voimassaoloaikana. Liput ovat voimassa ¥ Helsingin sisŠisillŠ matkoilla 60 minuuttia ¥ seutumatkoilla sekŠ Espoon, Kauniaisten ja Vantaan sisŠisillŠ matkoilla 80 minuuttia. SEUTU Aikuinen Lapsi ¥ arvolippu 2,90 ­ 1,45 ­ ¥ pŠivŠarvolippu ma-pe 9-14 2,70 ­ ¥ yšarvolippu ma-su 2-4.30 4,00 ­ HELSINGIN SIS€INEN Aikuinen Lapsi ¥ arvolippu 1,70 ­ 0,70 ­ ¥ pŠivŠarvolippu ma-pe 9-14 1,40 ­ ¥ yšarvolippu ma-su 2-4.30 2,50 ­ ¥ arvolippu, raitiovaunu 1,28 ­ ________________________________ Matkakorttiyksikšn toimintamenot vuonna 2005 ovat noin 4,2 milj. euroa, mikŠ on hieman vŠhemmŠn kuin edellisvuonna. __________________________________ YTV:n matkakorttijŠrjestelmŠn piirissŠ on 800.000 matkakortin kŠyttŠjŠŠ pŠŠkaupunkiseudulla. PŠivittŠin jŠrjestelmŠŠ kŠytetŠŠn yli miljoonan matkan tekemiseen. 4.2M/1M/365 448,272,1 48,24 2,325,106,476,384 65535,52427,65534 <a href="http://www.ytv.fi/matkakortti/mitamaksaa.html">Ticket prices (in Finnish)</a> <a href="http://www.ytv.fi/yleis/asiak/poutakirjat/04015347.HTM"> Total costs of the travel card system (matkakortti)</a> <a href="http://www.ytv.fi/liikenne/ajank/uutinen.php?id=2774">Total trip volumes using travel card</a> Car fr The fraction of trips that were previously performed by personal car but are performed by composite traffic in the scenario. index b:= copyindex(Scenario_description[input_var='Car fraction']); unique(b,b) 280,64,1 44,12 2,460,148,476,416 2,236,315,416,303,0,MIDM [0,0,0,0] Guar The level of composite traffic guarantee. This means that trips within certain areas will be organised by composite travel, while areas outside this guarantee remain without the service. The point in using this index is to explore whether composite traffic can be started with low profile and expanded geographically as more people start using it. index b:= copyindex(Scenario_description[input_var='Guarantee level']); unique(b,b) 192,64,1 48,12 2,102,90,476,353 2,623,192,416,303,0,MIDM [0,0,0,1] Detailed costs Detailed costs and pressures. See each individual node for a full description. ktluser 24. marta 2004 0:00 48,24 280,208,1 48,24 1,638,27,239,455,17 Emission kg/d Total emissions based on kilometres driven. The unit emissions are based on standard values. vehicle_km_s*Emission_factor/1000 176,224,1 48,16 2,218,232,476,224 2,43,56,717,317,0,MIDM [Car_fr,Period] [Index Travel_type] [0,0,0,0] Driver need persons The number of full-time drivers needed in the composite traffic. This is based on the kilometres driven and an 8-hour working day. It is assumed that there is no waiting for drivers. This assumption probably causes underestimation of the true number. sum(sum(vehicle_km_s/traffic_speed/8,zone),length) {var a:= Scenarios_output[output1='Vehicle km']; a:= slice(a,region,1); ceil(a/traffic_speed/8)} 296,96,1 48,16 2,102,90,476,286 2,19,38,868,392,0,MIDM [Car_fr,Period] [Index Travel_type] Cars needed vehicles For composite vehicles, this comes directly from traffic optimising; for cars, it is simply the number of trips divided by the average number of trips per car per day. For cars, the amount needed is difficult to estimate, because most cars are needed also for trips beyond the area modelled here. Therefore, even if some trips are performed by composite traffic, it is possible that the number of cars needed remains the same but the number of trips per car decreases. var a:= Trips_per_mode[mode1='Car']/trips_per_car; a:= sum(sum(sum(a,length),zone),period); {if vehicle_type='Car (g)' then a else vehicles_needed_s} {var a:= Trips_per_period[mode1='Car']/Trips_per_car; var b:= trips_per_period[Mode1='Composite']; b:= b/sum(b,length); b:= b*sum(sum(scenarios_output[output1='Vehicles'],zone),length); b:= if Vehicle_type='Car (g)' then a else b; if periods=1 then b else 0} 504,136,1 48,16 2,470,127,477,494 2,25,485,438,264,0,MIDM [Car_fr,Vehicle_type] [Index Length] [0,0,0,0] Car parking cost e/d It is assumed that each car trip involves parking. However, composite traffic does not pay anything in parking meters. Instead, they have to pay for the land. This cost is calculated as Parking land cost. var a:= scenarios_output[output1='All trips', vehicle_type='Car (g)']; a:= a*parking_price 296,160,1 48,16 2,77,296,476,402 2,48,139,602,242,0,MIDM [Period,Zone] [Variable Zone] [0,0,0,0] Emission cost e/d Fine particles are assumed to cause 10 deaths per 17 ton emission, a result from buses in Helsinki (1). CO2 costs are based on the estimated costs of CO2 in the greenhouse gas emission market. The true health and environmental costs are probably clearly higher than the price of the emission market. emission1*Emission_unit_cost 296,224,1 48,16 2,102,90,476,392 2,64,54,639,305,0,MIDM [Car_fr,Vehicle_type] [Index Length] [0,0,0,0] Parking land cost e/d Cost of parking land. It is assumed that for composite vehicles, there is a fixed amount of reserved parking places. The cost is equal to the societal cost of the land use. This cost is allocated to short and long trips based on the number of trips. parking_s*parking_space {var a:= scenarios_output; var b:= a[output1='All trips']; b:= b/sum(b,length); a:= sum(slice(a[output1='Park rush veh'],period,2),length); a*Parking_space*b} 296,192,1 48,16 2,541,90,476,285 2,40,16,555,416,0,MIDM [Zone,Vehicle_type] [Variable Zone] [0,0,0,0] Taxi accident rate "The accident risk of taxies (related to kilometres driven) is 40 percent lower than that of regular drivers. However, the accident density is 10.4 accidents per year per 100 cars, is double the number for private drivers." .6 504,40,1 48,24 65535,52427,65534 Ammattiliikenteen turvallisuuden kehittŠminen. LINTU-projektin osaraportti 12. Research report 566/2000. VTT 2000, Espoo. <a href="http://www.vtt.fi/rte/projects/srs/raportit/lintu_osa12_ammattiliik.pdf">Internet PDF</a> Acc costs e/d We assume that half of the accidents are attributable to personal car traffic, while the other half is attributable to other traffic modes (walking, cycling, public transportation). In addition, the accident risk is proportional to the change in traffic volume, but there is uncertainty about the slope. The expected value is that when traffic volume decreases 10%, accident risk decreases 5%; but it could vary between 0% and 10%. It is likely that these two assumptions underestimate rather than overestimate the benefit of composite traffic, but we were careful not to exaggerate the benefits. The guidelines for road projects #REF# assume that accidents are proportional to the traffic volume. var a:= Vehicle_km_s; var b:= sum(sum(sum(sum(a,zone),vehicle_type),length),period); b:= (1-b/b[Car_fr=1])*triangular(0,0.5,1); b:= (1-b)*accident_costs*0.5; a:= a/sum(sum(sum(sum(a,zone),vehicle_type),length),period); b*a 296,288,1 48,16 2,523,131,476,433 2,27,48,714,303,0,MIDM [Period,Vehicle_type] [Index Length] [0,0,0,0] Acc num A draft node. Not used in the model. var a:= sum(scenarios_output,zone); a:= a[output1='Vehicle km']; var b:= sum(sum(sum(a,vehicle),length),period); b:= (1-b/b[Car_fr=0])*triangular(0,0.5,1); (1-b)*accidents*0.5 504,88,1 48,24 2,60,131,476,452 2,15,97,354,363,0,MIDM [Accidents,Car_fr] [0,0,0,0] Rush BAU vehicles/h The average number of vehicles per hour driving along a link for the 30 most busy links at 8.00-9.00 in the morning. These numbers are for business-as-usual scenario where there is no composite traffic. rush_s[car_fr=1, public_fr=1, guar=7] {var c:= Scenario_description[input_var='Car fraction']; var g:= Scenario_description[input_var='Guarantee level']; a:= if c=1 and g=7 then a else 0; sum(sum(sum(a,Scen_ind),zone),length)} 176,320,1 48,16 2,403,80,476,527 2,26,211,355,321,0,MIDM Graphtool:0 Distresol:10 Diststeps:1 Cdfresol:5 Cdfsteps:1 Symbolsize:6 Baroverlap:0 Linestyle:10 Frame:1 Grid:1 Ticks:1 Mesh:1 Scales:1 Rotation:45 Tilt:0 Depth:70 Frameauto:1 Showkey:1 Xminimum:5 Xmaximum:15 Yminimum:0 Ymaximum:1M Zminimum:1 Zmaximum:6 Xintervals:0 Yintervals:0 Includexzero:0 Includeyzero:0 Includezzero:0 Statsselect:[1, 1, 1, 1, 1, 0, 0, 0] Probindex:[5%, 25%, 50%, 75%, 95%] Arial, 5 [Vehicle_type,Public_fr] [0,0,0,1] Vehicle cost e/d Capital costs of the vehicle. It is assumed here that each vehicle is bought new and driven until the end of the vehicle's lifetime. In reality, of course many cars change owners during their lifetime, and this causes variation between individual car-owners about how much their way of owning a car really causes capital costs. However, this source of variation was excluded for simpilicity. This choice can be defended with an argument that those car-owners who spend most on the capital costs, i.e. buy the most expensive cars or sell them when they are still rather new, are likely to count a smaller fraction of the capital cost of the car when comparing different modes of transport. Vehicles_needed_s*vehicle_price/vehicle_lifetime/365 296,32,1 48,16 2,40,50,416,303,0,MIDM [Car_fr,Vehicle_type] [0,0,0,0] Time cost e/d Time costs has two parts: the cost of delays due to traffic jams; and the cost of waiting for composite vehicles. The traffic jam cost includes only the direct costs of actual delays. However, a likely much bigger cost is the need to reserve extra time because of the risk of a traffic jam. If this was included, the costs for both car and composite passengers would be smaller especially with high volumes of composite traffic. Although this is indexed by vehicle type, it actually is indexed by mode. var a:= waiting_s/60*composite_trips_s*time_unit_cost; a:= array(mode1,[0,sum(a,vehicle_type),0]); {a:= if vehicle_type='Car (g)' then 0 else a;} var c:= sum(rush_s,vehicle_type)/sum(rush_bau,vehicle_type); c:= 1-min([(1-c)/rush_delay[rush_delay='Reduction'],1]); c:= if period=' 6.00-20.00' then c else 0; c:= c*Trips_per_mode*rush_delay[rush_delay='Delay']*time_unit_cost; c:= array(Delay_cause,[c,a]); c:= if isnan(c) then 0 else c; array(vehicle_type,[slice(c,mode1,3),slice(c,mode1,2),0,slice(c,mode1,1)]) 296,320,1 48,16 2,30,65,476,526 2,63,79,634,303,0,MIDM [Car_fr,Vehicle_type] [Index Length] [0,0,0,0] 20.7.2005 Jouni Tuomisto: Vanha koodi {index i:= ['Passengers in traffic jam','Waiting a composite vehicle']; var a:= sum(scenarios_output,zone); var b:= a[output1='Waiting']/60*a[output1='Trips']; b:= if Vehicle='Car' then 0 else b*time_unit_cost; var c:= a[output1='Link intensity',length='< 5 km']; c:= sum(c,Vehicle)/rush_bau; c:= 1-min([(1-c)/rush_delay[rush_delay='Reduction'],1]); var d:= a[output1='Trips']; d:= if periods=1 then d else 0; d:= d*rush_delay[rush_delay='Delay']*c*time_unit_cost; d:= array(i,[d,b]); sum(d,d.i)} Driver cost e/d Salary and social security costs of the composite vehicle drivers. We assume that the drivers are paid only when driving, not when waiting for passengers. Although this might slightly underestimate the costs, this is a common practice among hired taxi drivers, who don't own the vehicle. vehicle_km_s*driver_salary/traffic_speed 296,64,1 48,16 2,12,43,433,355,0,MIDM [Period,Vehicle_type] [Index Length] [0,0,0,0] Driving cost e/d Costs due to fuel and maintenance. vehicle_km_s*(fuel_price*fuel_consumption+car_maintenance) 296,128,1 48,16 [Period,Vehicle_type] [Index Length] [0,0,0,0] PM lethality e/d Fine particles are assumed to cause 10 deaths per 17 ton emission, a result from buses in Helsinki (1). CO2 costs are based on the estimated costs of CO2 in the greenhouse gas emission market. The true health and environmental costs are probably clearly higher than the price of the emission market. emission1[emission='PM']*Pm_unit_lethality 296,256,1 48,16 2,431,209,476,224 2,301,50,639,305,0,MIDM [Car_fr,Length] Emission cost e/d This version calculates emission costs per drive for a 10-km drive. Fine particles are assumed to cause 10 deaths per 17 ton emission, a result from buses in Helsinki (1). CO2 costs are based on the estimated costs of CO2 in the greenhouse gas emission market. The true health and environmental costs are probably clearly higher than the price of the emission market. var a:= 10*Emission_factor/1000*Emission_unit_cost; sum(a,emission) 504,248,1 48,16 2,301,50,262,305,0,MIDM [Vehicle,Emission] Vehicle cost e/drive This version calculates the capital costs per trip assuming that each car takes 15 drives per day. Capital costs of the vehicle. It is assumed here that each vehicle is bought new and driven until the end of the vehicle's lifetime. In reality, of course many cars change owners during their lifetime, and this causes variation between individual car-owners about how much their way of owning a car really causes capital costs. However, this source of variation was excluded for simpilicity. This choice can be defended with an argument that those car-owners who spend most on the capital costs, i.e. buy the most expensive cars or sell them when they are still rather new, are likely to count a smaller fraction of the capital cost of the car when comparing different modes of transport. vehicle_price/vehicle_lifetime/365/15 504,184,1 48,16 2,340,200,476,312 2,82,146,654,409,0,MIDM [Vehicle,Car_fr] Driving cost e/drive Costs due to fuel and maintenance for a 10-km drive. 10*(fuel_price*fuel_consumption+car_maintenance) 504,216,1 48,16 [Period,Vehicle] Four-passenger drive e/trip Cost per trip of vehicle-dependent costs (=vehicle price, driving, emissions). The numbers are compared with the largest vehicle type. var a:= array(cost_structure,[Vehicle_cost1,0,Driving_cost1,0,0,Emission_cost1,0,0,0]); a:= sum(a,cost_structure)/4; a/a[vehicle='Bus no change'] 504,296,1 48,24 2,674,6,336,558,0,MEAN [Vehicle_type,Vehicle] [Index Cost_structure] [0,0,1,0] (a) Fillindex var b:= indexnames(a); a:= if sum(findintext('Length',b))>0 then a else if length='< 5 km' then a else 0; a:= if sum(findintext('Vehicle_type',b))>0 then a else if Vehicle_type='Minibus' then a else 0; a:= if sum(findintext('Zone',b))>0 then a else if zone=1 then a else 0; a:= if sum(findintext('Period',b))>0 then a else if Period=' 6.00-20.00' then a else 0; a 504,384,1 48,12 2,102,90,476,326 a Delay cause ['Passengers in traffic jam','Waiting a composite vehicle'] 296,344,1 48,12 Composite trips s slice(Scenarios_output,output1,1) 64,256,1 48,16 2,102,90,476,367 [Car_fr,Length] [0,0,0,1] Nochange trips s slice(Scenarios_output,output1,3) 64,160,1 48,16 [Public_fr,Car_fr] Vehicle km s slice(Scenarios_output,output1,4) 64,96,1 48,16 [Car_fr,Length] [0,0,0,0] Vehicles needed s sum(sum(slice(slice(Scenarios_output,output1,5),period,3),length),zone) 64,32,1 48,16 2,40,50,416,303,0,MIDM [Car_fr,Vehicle_type] [0,0,0,0] Parking s sum(slice(slice(Scenarios_output,output1,5),period,1),length) 64,192,1 48,16 2,120,130,416,303,0,MIDM [Car_fr,Vehicle_type] [0,0,0,1] Rush s sum(sum(slice(slice(Scenarios_output,output1,5),period,2),length),zone) 64,320,1 48,16 2,40,50,456,304,0,MIDM [Car_fr,Vehicle_type] [Index Vehicle_type] [0,0,0,1] Waiting s slice(Scenarios_output,output1,6) 64,288,1 48,16 [Car_fr,Length] [0,0,0,0] Stakeholders: Passenger Society (Bus company) There are three different stakeholders: Passenger, society, and bus company (which does not show up in the stakeholder index). See Stakeholder for more details. Cost_to_stakeholder 504,424,1 52,36 1,1,1,1,1,1,0,,1, 2,245,4,476,458 Cost strength The stakeholder-specific weights that are given to different cost types. The weight is 1 always with the following exceptions: - Car capital costs may be <1 because the owner may need the car for other purposes than the trips considered here. - Willingness to drive (Driver costs for car drivers) may be positive or negative depending on how the the driving is valuated. - 'Parking' is zero for composite traffic and society, because 'Parking land' cost is then calculated. - 'Parking land ' is zero for car passengers, because 'Parking' is then calculated. - 'Emission costs' and 'Accidents' are not calculated for passengers because they harm people in general, not any individual specifically. - 'Ticket' cost is calculated only for composite traffic passengers. It is not relevant for cars; and from the societal point of view, it is only a money transfer from the passenger to the service provider. Table(Cost_structure,Mode1,Stakeholder)( Cap,Cap, 1,1, 1,1, Drive,Drive, 1,1, 1,1, 1,1, 1,1, 1,1, 1,0, 0,0, 0,0, 0,1, 1,1, 1,1, 0,1, 0,1, 0,1, 1,1, 1,1, 1,1, 0,1, 0,1, 0,1, 0,0, 1,0, 1,0 ) 168,424,1 48,24 2,102,90,476,355 2,387,248,416,303,0,MIDM 2,134,368,725,281,0,MEAN Graphtool:0 Distresol:10 Diststeps:1 Cdfresol:5 Cdfsteps:1 Symbolsize:6 Baroverlap:0 Linestyle:1 Frame:1 Grid:1 Ticks:1 Mesh:1 Scales:1 Rotation:45 Tilt:0 Depth:70 Frameauto:1 Showkey:1 Xminimum:0 Xmaximum:1 Yminimum:0 Ymaximum:1 Zminimum:0 Zmaximum:1 Xintervals:0 Yintervals:0 Includexzero:0 Includeyzero:0 Includezzero:0 Statsselect:[1,1,1,1,1,0,0,0] Probindex:[0.05,0.25,0.5,0.75,0.95] [Mode1,Cost_structure] [Mode1,Cost_structure] [0,0,0,0] Costs not included: Street infrastructure City planning Recreational values Secondary health effects We were careful not to unrealistically exaggerate the benefits of the composite traffic. On the contrary, we excluded several clear but not easily quantifiable benefits: Reduced road traffic volumes save road management and infrastructure. City planning gets more freedom when the vehicle volumes decrease. This also improves the recreational values of the area. There may be an increase in walking and cycling, if the dependence on car is relieved. This may have positive secondary health effects in the population. Transport_cost 464,88,1 68,52 1,1,1,1,1,1,0,,1, [Alias Costs_not_included_1] The costs are calculated for a passenger who has a car in the household and is trying to decide between the car and composite traffic 1 72,248,1 68,72 1,1,1,1,1,1,0,,1, The_costs_are_calcul Additional benefits of composite traffic: Mass transit feeder Quiet bus service replacement Efficiency by correlation Replacement of quiet bus routes with composite traffic would probably improve service and reduce costs at the same time. Composite traffic is probably an efficient feeder for high-volume transport modes such as buses and metro. We assumed that the trips are uncorrelated in time (given the total volume at each time point). However, in reality a large proportion of trips is clustered: they are directed to or from particular places such as schools, offices, ballparks, and supermarkets at specific times. With composite vehicles, it results in more efficient trip aggregation; with cars, it results in local traffic jams. Transport_cost 488,280,1 80,52 2,72,347,476,224 Nochange fr index b:= copyindex(Scenario_description[input_var='No-change fraction']); unique(b,b) 192,88,1 48,12 index b:= copyindex(Scenario_description[input_var='Large guarantee?']); unique(b,b) 192,112,0 48,12 1,1,1,1,1,1,0,0,0,0 Public fr The fraction of trips that were previously performed by personal car but are performed by composite traffic in the scenario. index b:= copyindex(Scenario_description[input_var='Public fraction']); unique(b,b) 280,88,1 44,12 2,236,315,416,303,0,MIDM Max size The fraction of trips that were previously performed by personal car but are performed by composite traffic in the scenario. index b:= copyindex(Scenario_description[input_var='Max size']); unique(b,b) 280,136,1 44,12 2,236,315,416,303,0,MIDM Min direct The fraction of trips that were previously performed by personal car but are performed by composite traffic in the scenario. index b:= copyindex(Scenario_description[input_var='Min direct load']); unique(b,b) 280,160,1 44,12 2,236,315,416,303,0,MIDM Veh types The fraction of trips that were previously performed by personal car but are performed by composite traffic in the scenario. index b:= copyindex(Scenario_description[input_var='Vehicle types']); unique(b,b) 192,136,1 48,12 2,236,315,416,303,0,MIDM Drop The fraction of trips that were previously performed by personal car but are performed by composite traffic in the scenario. index b:= copyindex(Scenario_description[input_var='Drop points/area']); unique(b,b) 280,112,1 44,12 2,236,315,416,303,0,MIDM Public level The fraction of trips that were previously performed by personal car but are performed by composite traffic in the scenario. index b:= copyindex(Scenario_description[input_var='Public level']); unique(b,b) 192,160,1 48,12 2,236,315,416,303,0,MIDM Transport cost The total cost (per day) of various cost elements calculated for each vehicle type separately. var a:= array(Cost_structure,[ if period= ' 6.00-20.00' then Vehicle_cost else 0, sum(sum(Driver_cost,zone),length), sum(sum(Driving_cost,zone),length), sum(sum((If (Vehicle_type='Car (g)') Then Car_parking_cost Else 0),zone),length), sum((if period= ' 6.00-20.00' then Parking_land_cost else 0),zone), sum(sum(Sum(Emission_cost,Emission),zone),length), sum(sum(Sum(Time_cost,Delay_cause),zone),length), sum(sum(acc_costs,zone),length), 0]); a 280,280,1 48,24 2,644,531,476,346 2,775,456,416,303,0,MIDM 2,24,460,883,345,0,MIDM [Car_fr,Vehicle_type] [Variable Zone] [0,0,0,0] Cost per trip var a:= Transport_cost; a:= array(mode1,[ slice(a,vehicle_type,4), slice(a,vehicle_type,2)+slice(a,vehicle_type,3), slice(a,vehicle_type,1)]); a:= a[period=choose_period]; var b:= Trips_per_mode; a:= if cost_structure='Vehicle' or cost_structure='Parking land' then sum(a,period)/sum(b,period) else a/b; a:= if cost_structure='Ticket' and Mode1<>'Car' then ticket-group_subvention else a; a:= if isnan(a) then 0 else a; 280,360,1 48,24 2,104,215,657,318,0,MIDM [Car_fr,Cost_structure] [Index Cost_structure] [0,0,0,0] Cost to stakeholder The cost per trip for a random individual passenger. These values have been weighted by the stakeholder-specific weights (Cost strength). The costs are first calculated for an average trip from total costs and total numbers of trips. The costs of individual car trips depend on the number of passengers. Therefore, the average cost is multiplied by the average number of passengers and divided by the number of passengers in the particular case we are looking at. var a:= mean(Group_size)/sample(Group_size); a:= if cost_structure <>'Time' and Mode1='Car' then a else 1; a:= a*Cost_per_trip; a:= if isnan(a) then 0 else a; a:= if a=inf then 0 else a; a:= a*cost_strength; {sum(a,cost_structure)} 280,424,1 48,24 2,162,-2,792,372,0,MEAN Graphtool:0 Distresol:10 Diststeps:1 Cdfresol:5 Cdfsteps:1 Symbolsize:6 Baroverlap:0 Linestyle:1 Frame:1 Grid:1 Ticks:1 Mesh:1 Scales:1 Rotation:45 Tilt:0 Depth:70 Frameauto:1 Showkey:1 Xminimum:0 Xmaximum:1 Yminimum:0 Ymaximum:1 Zminimum:0 Zmaximum:1 Xintervals:0 Yintervals:0 Includexzero:0 Includeyzero:0 Includezzero:0 Statsselect:[1,1,1,1,1,0,0,0] Probindex:[0.05,0.25,0.5,0.75,0.95] [Public_fr,Cost_structure] [Index Public_fr] [0,0,1,0] Choose period Choice(Period,0,True) 400,360,1 48,16 2,61,457,476,224 52425,39321,65535 ['item 1'] Ei toimi WTD probabilistisesti drive 56,528,1 48,29 VOI and importance analysis Value of information analyses, studies on variation in the population, and other analyses on the results. jtuomist Tue, Mar 27, 2001 11:26 jtue 12. Aprta 2005 16:35 48,24 416,232,0 48,29 1,1,1,1,1,1,0,0,0,0 1,426,18,395,523,17 94,1,1,0,2,9,4744,6798,7 Fig 2 Trips trips/h Fig 1 in the main text. Trips by vehicle type as a function of time when the fraction of composite trips is 50% of the current personal car trips. In this graph, you can also view other composite fractions than 0.5 when guar is set to 7, and other other levels of guarantee when composite fraction is set to 0.5. FunctionOf(var a:= Trips1_0; var b:= Scenario_description; a:= if b[input_var='Composite fraction']=Car_fr then a else 0; a:= if b[input_var='Guarantee level']=guar then a else 0; a:= if Car_fr=0 then a[guar=7] else a; a:= a[guar=Expr]; a:= a[Car_fr=choose_comp]; a:= if b[input_var='Flexible fraction']=choose_flexible then a else 0; a:= if b[input_var='No-change fraction']=choose_nochange then a else 0; a:= if b[input_var='Large guarantee?']='Yes' then (if large='Yes' then a else 0) else (if large='No' then a else 0); a:= a[large=choose_large]; a:= sum(a,Scen_ind); a*array(vehicle,[1,0.5,1,0.5,0.5,1])) 544,96,1 48,24 2,493,4,476,590 2,161,13,835,589,1,MIDM [Formnode Figure_3] Graphtool:0 Distresol:10 Diststeps:1 Cdfresol:5 Cdfsteps:1 Symbolsize:6 Baroverlap:0 Linestyle:10 Frame:1 Grid:1 Ticks:1 Mesh:1 Scales:1 Rotation:45 Tilt:0 Depth:70 Frameauto:1 Showkey:1 Xminimum:5 Xmaximum:15 Yminimum:0 Ymaximum:1M Zminimum:1 Zmaximum:6 Xintervals:0 Yintervals:0 Includexzero:0 Includeyzero:0 Includezzero:0 Statsselect:[1, 1, 1, 1, 1, 0, 0, 0] Probindex:[5%, 25%, 50%, 75%, 95%] Arial, 5 [Time_stat,Vehicle] Endpoint Endpoints or pressures estimated. ['Fraction of composite trips without change (%)','Vehicles needed (number)','Parking places needed (number)','Average vehicle flow on the 30 most busy roads (vehicles/h at 8.00-9.00 AM)','Injuries due to accidents (cases per year)','Deaths due to accidents (cases per year)','Deaths due to fine particles (cases per year)','Fine particle (<2.5 µm of diameter) emissions (kg per day)','Carbon dioxide emissions (ton per day)','Driver salaries (thousand e per day)','Vehicle capital and operational costs (thousand e per day)','Time cost (thousand e per day)','Average car trip cost to passenger (e per trip)','Average composite trip cost to passenger (e per trip)'] 664,128,1 48,12 2,17,81,625,372 2,-3,30,512,303,0,MIDM Table 1 Pressures Table 1 in the Main text of the article. To retrieve the same table, 'Choose guar' should be set to 7, 'Choose comp' to All, and 'Choose period' to All. Footnotes: Mean (90% confidence interval when applicable). If a passenger requests a trip without a transfer, the additional price to him/her will be 3 - 6 euro/trip during daytime. This cost is due to reduced efficiency in trip aggregation. The number of vehicles and parking places is theoretical and involves the modelled trips only; a car owner may need the car for trips outside Helsinki even if he/she uses composite traffic. The true number of cars in the area was 346 400 in 2001. (1) The current ticket prices for buses, metro, and trams are 1.70 e per trip in Helsinki and 2.90 e per trip between communities in the Helsinki metropolitan area. Note that the car trip and composite trip costs include time costs. var d:= sum(sum(sum(scenarios_output,zone),period),length); d:= d[Car_fr=i]; var a:= d[output1='Trips by vehicle']; a:= (slice(a,vehicle,1)+slice(a,vehicle,3)) +sum(sum(sum(no_change_trips[Car_fr=i],period),length),zone); a:= a/d[output1='Trips',vehicle='Bus no change']*100; var b:= sum(d[output1='Vehicles'],vehicle); var c:= sum(d[output1='Parking lot'],vehicle); d:= sum(d[output1='Link intensity'],vehicle); a:= rounding(a,3); b:= rounding(b,3); c:= rounding(c,3); d:= rounding(d,3); var e:= tm(sample(acc_num[accidents='Injuries'])); var f:= tm(sample(acc_num[accidents='Deaths'])); var g:= tm(sample(pm_lethality)*365); var h:= tm(sample(emission1[emission='PM'])); var i:= tm(sample(emission1[emission='CO2'])/1000); var j:= tm((if Vehicle='Car' then 0 else sample(driver_cost))/1k); var k:= tm(sample(vehicle_cost[guar=7])/1k+sample(driving_cost)/1k); var l:= tm(sample(time_cost)/1k); var x:= tm(sample(Cost_passenger)); var m:= (x[Mode1='Car']); var n:= (x[Mode1='Composite']); array(endpoint,[a,b,c,d,e,f,g,h,i,j,k,l,m,n]) 664,96,1 48,24 2,439,7,545,621 2,357,353,682,303,0,MIDM 2,5,2,990,352,0,MIDM [Formnode Table_4] Graphtool:0 Distresol:10 Diststeps:1 Cdfresol:5 Cdfsteps:1 Symbolsize:6 Baroverlap:0 Linestyle:1 Frame:1 Grid:1 Ticks:1 Mesh:1 Scales:1 Rotation:45 Tilt:0 Depth:70 Frameauto:1 Showkey:1 Xminimum:0 Xmaximum:1 Yminimum:0 Ymaximum:1 Zminimum:0 Zmaximum:1 Xintervals:0 Yintervals:0 Includexzero:0 Includeyzero:0 Includezzero:0 Statsselect:[1,1,1,1,1,0,0,0] Probindex:[0.05,0.25,0.5,0.75,0.95] [I,Endpoint] 1,D,4,2,0,0 85,1,1,0,2,9,4744,6798,7 YTV: Liikkumisen nykytila (The Present-day Traffic Situation) PJS B 2001:10 <a hfref="http://www.ytv.fi/liikenne/julk/nykytila.pdf">PDF file</a> Uncertain inputs A list of uncertain variables used in the model. This list is used to analyse the role of each variable by e.g. value-of-information analysis or importance analysis. The variables with 'V:' are not uncertain but describe variability within the population. Note that the last variable 'Blank' is NOT included in the model and therefore whatever significance is attached to this variable, is just a random effect. Table(Uncertain_var)( Vehicle_price[Vehicle='Car'],Vehicle_lifetime[Vehicle='Car'],Fuel_price[Vehicle='Car'],Car_maintenance,Driver_salary,Rush_delay[Rush_delay='Delay'],Time_unit_cost,Trips_per_car,Emission_factor[Vehicle='Car', Emission='PM'],Emission_unit_cost[Emission='PM'],Sum(Sum(Sum(Accident_costs,Period),Vehicle),Length),Cap_uncert,Drive_uncert,Group_subvention,Group_size,Cap_variation,Drive_variation,Uniform(0,1)) ['Pollutant levels in fish feed after lower limits (S+P)','Salmon consumption after feed limits (S+P)','Does omega-3 help CHD patients or everyone? (S)','Dose-response of health benefit (S)','Highest omega-3 dose with health benefit (S)','Current average consumption of salmon (S)','Fraction of farmed from total salmon use (S)','Omega3 content in salmon (S)','Consider pollutant or net health effect? (P)','Dieldrin concentration in farmed salmon (S)','Toxaphene concentration in farmed salmon (S)','PCB concentration in farmed salmon (S)','Farmed salmon use after recommendation (S)','Lower limits for pollutants in fish feed? (P)','Recommend restricted farmed salmon consumption? (P)'] 408,56,1 48,24 1,1,1,1,1,1,0,0,0,0 2,541,193,476,275 2,525,42,465,461,0,MIDM 2,148,242,582,361,0,MIDM 52425,39321,65535 [Self,Self] Uncertain var A list of uncertain variables used in the model. ['Car price','Car lifetime','Fuel price','Vehicle maintenance','Driver salary','Delay due to rush','Unit cost of time','Trips per car','Car fine particle emission','Fine particle unit cost','Accident costs','Car capital','Willingness to drive','Group subvention','V: Car occupancy','V: Car capital','V: Willingness to drive','Blank'] 408,88,1 48,12 1,1,1,1,1,1,0,0,0,0 2,123,124,476,469 2,351,356,688,342,0,MIDM 2,168,178,582,361,0,MIDM [Self,Self] Subvention e/d Direct costs occurring to the society if it subsidises the composite traffic ticket prices so much that the target level of composite fraction is reached, i.e. that that fraction of population thinks that composite traffic is equally or more economic for them than car traffic. var a:= Expected_total_varia[stakeholder='Passenger']; a:= Linearinterp(a.i,a, car_fr {Exprchoose_comp},a.i); (a+mean(group_subvention))*Trips_per_mode[{period=choose_period,} Mode1='Composite'] 288,208,1 48,24 2,102,90,476,475 2,336,56,550,289,0,MIDM Graphtool:0 Distresol:10 Diststeps:1 Cdfresol:5 Cdfsteps:1 Symbolsize:6 Baroverlap:0 Linestyle:10 Frame:1 Grid:1 Ticks:1 Mesh:1 Scales:1 Rotation:45 Tilt:0 Depth:70 Frameauto:1 Showkey:1 Xminimum:1 Xmaximum:14 Yminimum:-100K Ymaximum:909.4K Zminimum:1 Zmaximum:2 Xintervals:0 Yintervals:0 Includexzero:0 Includeyzero:0 Includezzero:0 Statsselect:[1,1,1,1,1,0,0,0] Probindex:[0.05,0.25,0.5,0.75,0.95] Arial, 8 [Car_fr,Length] [Index Length] Cost variation e/trip This node is a combination of variables that represent variation, not uncertainty. In other words, all variation between the Monte Carlo iterations are due to variation within the population. (However, there are actually two variables, namely Cap_uncert and Drive_uncert that represent uncertainty of capital cost of car and willingness to drive, respectively. It would be tricky to separate these from variation, and therefore this discrepancy is allowed.) var a:= mean(Group_size)/sample(Group_size); a:= if cost_structure <>'Time' and Mode1='Car' then a else 1; a:= a*mid(Cost_per_trip); a:= if isnan(a) then 0 else a; a:= a*cost_strength_variability; a:= sum(a,cost_structure); {a:= a[stakeholder='Passenger',length='>= 5 km']; a[Mode1='Composite']-a[Mode1='Car']} 168,136,1 48,24 2,424,37,476,584 2,0,8,394,483,0,SAMP [Mode1,Run] [0,0,0,0] Expected total variation e/trip Cost difference of composite and car trips shown as the expectation. The X axis shows the fractiles of the total variation within the population. See also 'Expected variations'. These lines are used in Figure 2 of the main text. See 'Figure 2'. var a:= cost_variation[Mode1='Composite']-cost_variation[Mode1='Car']; a:= variation1(a,Cost,9); var b:= a[.varia=1/9]+(a[.varia=1/9]-a[.varia=2/9])/2; var c:= a[.varia=9/9]+(a[.varia=9/9]-a[.varia=8/9])/2; index i:= [0,1/18,3/18,5/18,7/18,9/18,11/18,13/18,15/18,17/18,1]; array(i,[b,a[.varia=1/9],a[.varia=2/9],a[.varia=3/9],a[.varia=4/9],a[.varia=5/9],a[.varia=6/9],a[.varia=7/9],a[.varia=8/9],a[.varia=9/9],c]) 288,136,1 48,24 2,102,90,476,340 2,94,158,860,436,0,MIDM Graphtool:0 Distresol:10 Diststeps:1 Cdfresol:5 Cdfsteps:1 Symbolsize:6 Baroverlap:0 Linestyle:1 Frame:1 Grid:1 Ticks:1 Mesh:1 Scales:1 Rotation:45 Tilt:0 Depth:70 Frameauto:1 Showkey:1 Xminimum:0 Xmaximum:1 Yminimum:-4 Ymaximum:4 Zminimum:0.1111 Zmaximum:1 Xintervals:0 Yintervals:0 Includexzero:0 Includeyzero:0 Includezzero:0 Statsselect:[1,1,1,1,1,0,0,0] Probindex:[0.05,0.25,0.5,0.75,0.95] [0,0,0,0] Classes The number of classes in the value-of-information analysis. This is a technical parametre only, and it should be large enough. However, the samplesize should be at least 100 times larger than this to avoid random noise. 17 528,280,1 48,12 2,102,90,476,405 52425,39321,65535 Variation fractile Total variation expressed as fractiles. See 'Cost variation'. var a:= sample(cost_variation); a:= a[Mode1='Composite']-a[Mode1='Car']; a:= rank(a,run)/samplesize; slice(a[guar=7,Car_fr=0.5, stakeholder='Passenger'], period,1) 168,88,1 48,12 2,41,49,476,335 2,142,191,670,314,1,SAMP [Run,Length] 1,D,4,2,0,0 Passenger VOI e/trip Value of information analysis for the input variables with the passenger decision between composite and car traffic. The analysis calculates the expected benefit for the passenger when the uncertainty of a variable is resolved. var a:= sample(cost__variation[stakeholder='Passenger']); a:= sum(a*sum(trip_fraction,mode1),length); a{Voi(a,Mode1,uncertain_inputs,uncertain_var,Classes)} 408,208,1 48,24 2,68,266,476,284 2,28,44,735,480,0,MIDM Graphtool:0 Distresol:10 Diststeps:1 Cdfresol:5 Cdfsteps:1 Symbolsize:6 Baroverlap:0 Linestyle:1 Frame:1 Grid:1 Ticks:1 Mesh:1 Scales:1 Rotation:45 Tilt:0 Depth:70 Frameauto:1 Showkey:1 Xminimum:1 Xmaximum:20 Yminimum:-0.3 Ymaximum:0 Zminimum:1 Zmaximum:1 Xintervals:0 Yintervals:0 Includexzero:0 Includeyzero:0 Includezzero:0 Statsselect:[1,1,1,1,1,0,0,0] Probindex:[0.05,0.25,0.5,0.75,0.95] [Run,Car_fr] 1,F,4,3,0,0 [Index Comp_fr] Societal cost e/d Total societal costs including subsidies. var a:= Cost_to_stakeholder[stakeholder='Society']; a:= a*Trips_per_mode{[period=choose_period]}; if mode1='Composite' then a+subvention else a 288,280,1 48,24 2,104,11,736,486,0,MEAN [Car_fr,Mode1] [Index Length] [0,0,0,0] Societal VOI 0-100 e/d Value of information analysis for the input variables with the societal decision about the target level of composite fraction. Each level involves a particular amount of subsidies to composite traffic to reach the target. The analysis calculates the expected benefit for the society when the uncertainty of a variable is resolved. var a:= sum(sum(sample(Societal_cost__varia),length),mode1); a:= if Car_fr=1 then a[Car_fr=0.9] else a; Voi(a,Car_fr,uncertain_inputs,uncertain_var,classes) 408,408,1 48,24 2,506,97,476,310 2,18,41,377,506,0,MIDM Graphtool:0 Distresol:10 Diststeps:1 Cdfresol:5 Cdfsteps:1 Symbolsize:6 Baroverlap:0 Linestyle:9 Frame:1 Grid:1 Ticks:1 Mesh:1 Scales:1 Rotation:45 Tilt:0 Depth:70 Frameauto:1 Showkey:1 Xminimum:1 Xmaximum:3 Yminimum:-70K Ymaximum:0 Zminimum:1 Zmaximum:12 Xintervals:0 Yintervals:0 Includexzero:0 Includeyzero:0 Includezzero:0 Statsselect:[1,1,1,1,1,0,0,0] Probindex:[0.05,0.25,0.5,0.75,0.95] Arial, 6 Fig 5A Societal costs e/d Figure 3 top panel of the main text. Marginal societal costs of traffic (composite+car) as a function of the fraction that composite replaces personal car trips (composite fraction). Top: Societal costs (excluding subsidies for composite traffic) during different periods of day. To reproduce the figure in the article, set Choose comp = All Choose guar = 7 Choose period = All Subsidise groups? = No Choose large = No Choose_nochange = 0 Uncertainty options: Sample size 5000, random seed = 98, Median Latin Hypercube Warning: This will require > 1 MB of system memory var a:= sum(sum(Societal_cost,mode1)-subvention,length); a-a[Car_fr=0] 288,352,1 48,29 2,521,109,476,271 2,277,24,326,548,0,MEAN [Formnode Figure_3_top2] [Car_fr,Period] [0,0,0,0] Fig 5B Subsidies e/d Figure 3 middle panel of the main text. Marginal societal costs of traffic (composite+car) as a function of the fraction that composite replaces personal car trips (composite fraction). Middle: Subsidies to ticket prices needed to reach the target fraction of composite traffic (i.e., to make that fraction of current car passengers to favour composite traffic). For comparison, the current subsidies to public transportation in Helsinki area are on the range of 380 000 e per day. The public transport subsidies in Helsinki, Espoo (incl Kauniainen), and Vantaa were 93.30, 25.95, and 19.49 million euro in 2003, which is approximately 380 000 euro per day for the whole area. To reproduce the figure in the article, set Choose comp = All Choose guar = 7 Choose period = All Subsidise groups? = No Choose large = No Choose_nochange = 0 Uncertainty options: Sample size 5000, random seed = 98, Median Latin Hypercube Warning: This will require > 1 MB of system memory var a:= sum(subvention,length); a 168,208,1 48,24 2,120,77,476,224 2,62,10,324,463,0,MIDM [Formnode Figure_3_middle2] Graphtool:0 Distresol:10 Diststeps:1 Cdfresol:5 Cdfsteps:1 Symbolsize:6 Baroverlap:0 Linestyle:10 Frame:1 Grid:1 Ticks:1 Mesh:1 Scales:1 Rotation:45 Tilt:0 Depth:70 Frameauto:1 Showkey:1 Xminimum:0 Xmaximum:1 Yminimum:-100K Ymaximum:100K Zminimum:1 Zmaximum:7 Xintervals:0 Yintervals:0 Includexzero:0 Includeyzero:0 Includezzero:0 Statsselect:[1,1,1,1,1,0,0,0] Probindex:[0.05,0.25,0.5,0.75,0.95] Arial, 6 [Car_fr,Period] [Index Period] [Rosenberg, 2005 55 /id] <a href="http://www.mintc.fi/oliver/upl471-Julkaisuja_2_2005.pdf">PDF file</a> Fig 5C Expanding e/d Figure 3 bottom panel of the main text. Marginal societal costs of traffic (composite+car) as a function of the fraction that composite replaces personal car trips (composite fraction). Bottom: Societal costs (including subsidies) during daytime with increasing areal coverage of composite traffic (starting from the most densely populated areas). Both origin and destination must be in the covered area. The legend shows the number of inhabitants living in the covered area. (To see the legend, calculate Population_guaranteed.) To reproduce the figure in the article, set Choose comp = All Choose guar = All Choose period = 6.00-20.00 Subsidise groups? = No Choose large = No Choose_nochange = 0 Uncertainty options: Sample size 5000, random seed = 98, Median Latin Hypercube Warning: This will require > 1 MB of system memory var a:= Societal_cost; a:= a-a[Car_fr=0]; sum(sum(a,length),mode1); 168,352,1 48,24 2,411,30,476,357 2,558,40,290,520,1,MEAN [Formnode Figure_3_bottom2] Graphtool:0 Distresol:10 Diststeps:1 Cdfresol:5 Cdfsteps:1 Symbolsize:6 Baroverlap:0 Linestyle:10 Frame:1 Grid:1 Ticks:1 Mesh:1 Scales:1 Rotation:45 Tilt:0 Depth:70 Frameauto:1 Showkey:1 Xminimum:0 Xmaximum:1 Yminimum:-1.2M Ymaximum:200K Zminimum:1 Zmaximum:1 Xintervals:0 Yintervals:0 Includexzero:0 Includeyzero:0 Includezzero:0 Statsselect:[1,1,1,1,1,0,0,0] Probindex:[0.05,0.25,0.5,0.75,0.95] Arial, 2 [Car_fr,Guar] [0,0,0,0] Fig 4 Cost variation e/trip Figure 2 in the main text. Individual variation in the cost of a composite trip compared with a personal car trip for an individual passenger. The estimates include daytime trips with 50% composite fraction scenario. The trips are divided into two groups based on length. The variation between individuals is shown on X axis, with people most in favour of composite traffic on left. The expected values across individuals are shown as lines, and the dots represent the uncertainty of the value. Note that the lines of expectations are shown in another node, 'Expected total variation'. To reproduce the figure in the article, set Choose comp = 0.5 Choose guar = 7 Choose period = 6.00-20.00 Subsidise groups? = No Choose large = No Choose_nochange = 0 Uncertainty options: Sample size 1000, random seed = 98, Median Latin Hypercube slice(Cost[guar=7,Car_fr=0.5,stakeholder='Passenger'],period,1) 168,56,1 48,24 2,102,90,476,385 2,159,34,670,538,1,SAMP [Formnode Figure_6] Graphtool:0 Distresol:10 Diststeps:1 Cdfresol:5 Cdfsteps:1 Symbolsize:4 Baroverlap:0 Linestyle:4 Frame:1 Grid:1 Ticks:1 Mesh:1 Scales:1 Rotation:45 Tilt:0 Depth:70 Frameauto:1 Showkey:1 Xminimum:0 Xmaximum:1 Yminimum:-4 Ymaximum:3 Zminimum:1 Zmaximum:2 Xintervals:0 Yintervals:0 Includexzero:0 Includeyzero:0 Includezzero:0 Statsselect:[1,1,1,1,1,0,0,0] Probindex:[0.05,0.25,0.5,0.75,0.95] Arial, 2 [Run,Length] Variation [0,0,0,0] Cost e/trip The cost difference of the composite and car trips for the passenger (negative values: composite traffic is more beneficial). var a:= sum(Cost_to_stakeholder{[stakeholder='Passenger']},cost_structure); a:= a{[Mode1='Composite']}-a[Mode1='Car']; a 288,56,1 48,24 2,77,76,476,325 2,8,10,828,422,0,MEAN Graphtool:0 Distresol:10 Diststeps:1 Cdfresol:5 Cdfsteps:1 Symbolsize:6 Baroverlap:0 Linestyle:10 Frame:1 Grid:1 Ticks:1 Mesh:1 Scales:1 Rotation:45 Tilt:0 Depth:70 Frameauto:1 Showkey:1 Xminimum:0 Xmaximum:1 Yminimum:-4 Ymaximum:10 Zminimum:1 Zmaximum:7 Xintervals:0 Yintervals:0 Includexzero:0 Includeyzero:0 Includezzero:0 Statsselect:[1, 1, 1, 1, 1, 0, 0, 0] Probindex:[5%, 25%, 50%, 75%, 95%] Arial, 5 [Drop,Mode1] [0,0,0,0] Single passenger VOI e/trip Same as 'Passenger VOI' except that the value of information is estimated for the subgroup that travels alone. var a:= sample(cost__variation[stakeholder='Passenger']); a:= sum(a*sum(trip_fraction,mode1),length); a:= if sample(Group_size)=1 then a else 0; Voi(a,Mode1,uncertain_inputs,uncertain_var,Classes) 408,280,1 52,24 2,15,127,476,224 2,393,95,352,473,0,MIDM Graphtool:0 Distresol:10 Diststeps:1 Cdfresol:5 Cdfsteps:1 Symbolsize:6 Baroverlap:0 Linestyle:1 Frame:1 Grid:1 Ticks:1 Mesh:1 Scales:1 Rotation:45 Tilt:0 Depth:70 Frameauto:1 Showkey:1 Xminimum:0 Xmaximum:1 Yminimum:0 Ymaximum:1 Zminimum:0 Zmaximum:1 Xintervals:0 Yintervals:0 Includexzero:0 Includeyzero:0 Includezzero:0 Statsselect:[1,1,1,1,1,0,0,0] Probindex:[0.05,0.25,0.5,0.75,0.95] 1,F,4,3,0,0 [Index Comp_fr] The highest VOI is in willingness to drive The highest VOI is in willingness to drive, when 'Car occupancy' is standardised to 1; otherwise the variation of 'Car occupancy' drives the VOI analysis. single_passenger_voi 664,240,1 48,38 65535,65532,19661 Composite traffic is more attractive to those with long (>= 5 km) trips Composite traffic is more attractive to those with long (>= 5 km trips). Fig_4_cost_variation 56,56,1 52,48 [Alias Composite_traffic_i1] 65535,65532,19661 Cost \variation Cost_to_stakeholder-(Cost_variation-mean(cost_variation)) 408,136,1 48,24 2,122,153,476,567 2,257,61,680,471,1,SAMP Graphtool:0 Distresol:10 Diststeps:1 Cdfresol:5 Cdfsteps:1 Symbolsize:4 Baroverlap:0 Linestyle:4 Frame:1 Grid:1 Ticks:1 Mesh:1 Scales:1 Rotation:45 Tilt:0 Depth:70 Frameauto:1 Showkey:1 Xminimum:0 Xmaximum:1000 Yminimum:-3 Ymaximum:3 Zminimum:1 Zmaximum:2 Xintervals:0 Yintervals:0 Includexzero:0 Includeyzero:0 Includezzero:0 Statsselect:[1, 1, 1, 1, 1, 0, 0, 0] Probindex:[5%, 25%, 50%, 75%, 95%] Arial, 8 [Run,Mode1] Variation [0,0,0,0] Societal cost \variation e/d Total societal costs including subsidies. Here we exclude the variation so that the VOI is calculated based on uncertainty only. var a:= Cost_variation-mean(cost_variation); a:= Cost_to_stakeholder-a; a:= a[stakeholder='Society']; a:= a*Trips_per_mode{[period=choose_period]}; if mode1='Composite' then a+subvention else a 408,344,1 48,24 2,542,125,476,224 2,154,69,736,486,1,MEAN Graphtool:0 Distresol:10 Diststeps:1 Cdfresol:5 Cdfsteps:1 Symbolsize:6 Baroverlap:0 Linestyle:10 Frame:1 Grid:1 Ticks:1 Mesh:1 Scales:1 Rotation:45 Tilt:0 Depth:70 Frameauto:1 Showkey:1 Xminimum:1 Xmaximum:14 Yminimum:0 Ymaximum:600K Zminimum:1 Zmaximum:1 Xintervals:0 Yintervals:0 Includexzero:0 Includeyzero:0 Includezzero:0 Statsselect:[1,1,1,1,1,0,0,0] Probindex:[0.05,0.25,0.5,0.75,0.95] Arial, 8 [Car_fr,Undefined] [Index Length] [0,0,0,0] Other parts ktluser 10. touta 2005 21:28 48,24 664,32,1 48,24 1,0,0,1,1,1,0,,0, 1,483,26,-164,528,17 Trips by vehicle type trips/d Number of trips per day by vehicle type. Set guar to 7 to view the trips as a function of composite fraction. Set comp fr to 0.5 to view the trips as a function of guarantee level. sum(Fig_2_trips,time_stat)*time_unit 312,400,1 48,24 2,102,90,476,345 2,13,28,811,629,1,MIDM Graphtool:0 Distresol:10 Diststeps:1 Cdfresol:5 Cdfsteps:1 Symbolsize:6 Baroverlap:0 Linestyle:10 Frame:1 Grid:1 Ticks:1 Mesh:1 Scales:1 Rotation:45 Tilt:0 Depth:70 Frameauto:1 Showkey:1 Xminimum:1 Xmaximum:7 Yminimum:0 Ymaximum:100K Zminimum:1 Zmaximum:6 Xintervals:0 Yintervals:0 Includexzero:0 Includeyzero:0 Includezzero:0 Statsselect:[1,1,1,1,1,0,0,0] Probindex:[0.05,0.25,0.5,0.75,0.95] Arial, 5 Fig1 flexible var a:= slice(time_stat,time_stat,ceil(rank(time_stat)/2)*2-1); index tim:= sequence(0,max(time_stat),time_unit*2); sum((if tim=a then Fig_2_trips else 0),time_stat)/2 312,344,1 48,24 2,320,289,476,224 2,7,15,469,587,1,MIDM Cost.passenger e/trip Costs per trip to the passenger. var b:= cost__variation; var a:= (sum(sum(Trips_per_mode,length),period)); a:= Trips_per_mode/a; a:= sum(sum(a*b,length),period); a[stakeholder='Passenger'] 176,360,1 48,24 2,641,24,476,562 2,132,15,788,516,1,MEAN [Car_fr,Mode1] [Index Cost_structure] [0,0,0,0] Fig 3 Cost by source e/trip The cost per trip for a random individual passenger. These values have been weighted by the stakeholder-specific weights (Cost strength). The costs are first calculated for an average trip from total costs and total numbers of trips. The costs of individual car trips depend on the number of passengers. Therefore, the average cost is multiplied by the average number of passengers and divided by the number of passengers in the particular case we are looking at. var a:= mean(Group_size)/sample(Group_size); a:= if cost_structure <>'Time' and Mode1='Car' then a else 1; a:= a*Cost_per_trip[Car_fr=0.5,guar=7]; a:= if isnan(a) then 0 else a; a:= a*cost_strength; var b:= Trips_per_mode[Car_fr=0.5, guar=7]; b:= b/(sum(sum(b,length),period)); sum(sum(a*b,length),period); 176,480,1 52,24 2,589,137,476,456 2,61,3,833,348,1,MEAN [Formnode Cost_by_type_to_sta1] Graphtool:0 Distresol:10 Diststeps:1 Cdfresol:5 Cdfsteps:1 Symbolsize:6 Baroverlap:0 Linestyle:9 Frame:1 Grid:1 Ticks:1 Mesh:1 Scales:1 Rotation:45 Tilt:0 Depth:70 Frameauto:1 Showkey:1 Xminimum:0 Xmaximum:10 Yminimum:0 Ymaximum:0.6 Zminimum:1 Zmaximum:2 Xintervals:0 Yintervals:0 Includexzero:0 Includeyzero:0 Includezzero:0 Statsselect:[1,1,1,1,1,0,0,0] Probindex:[0.05,0.95] Arial, 2 [Cost_structure,Mode1] [Index Cost_structure] [0,0,0,0] Trip fraction var a:= Trips_per_mode/sum(sum(Trips_per_mode,length),mode1); a[period=choose_period] 176,208,1 48,24 2,18,307,416,303,0,MIDM [Car_fr,Length] [Index Length] No-change trips # or #/h A set of scenarios organised along two indexes: Guar is the level of composite traffic guarantee. This means that trips within a certain area will be organised by composite travel, while areas outside this guarantee remain without the service. The point in using this index is to explore whether composite traffic can be started with low profile and expanded geographically as more people start using it. Comp_fr is the fraction of trips that were previously performed by personal car but are performed by composite traffic in the scenario. scenarios_output[output1='Nochange trips'] {var a:= scen1_0; a:= a[vehicle_noch='No-change',output1='Trips by vehicle']; var b:= Scenarios1_0; a:= if b[input_var='Flexible fraction']=flexible_fr then a else 0; a:= a[flexible_fr=choose_flexible]; a:= if b[input_var='No-change fraction']=nochange_fr then a else 0; a:= a[nochange_fr=choose_nochange]; a:= if b[input_var='Large guarantee?']='Yes' then (if large='Yes' then a else 0) else (if large='No' then a else 0); a:= a[large=choose_large]; a:= if b[input_var='Composite fraction']=Car_fr then a else 0; a:= if b[input_var='Guarantee level']=guar then a else 0; a:= sum(a,scenario1_0); a:= if Car_fr=0 then a[guar=7] else a; a:= a[Car_fr=choose_comp]; a:= a[guar=choose_guar]; a[period=choose_period]} 64,424,1 48,24 2,462,53,476,517 2,69,383,591,222,0,MIDM Graphtool:0 Distresol:10 Diststeps:1 Cdfresol:5 Cdfsteps:1 Symbolsize:6 Baroverlap:0 Linestyle:10 Frame:1 Grid:1 Ticks:1 Mesh:1 Scales:1 Rotation:45 Tilt:0 Depth:70 Frameauto:1 Showkey:1 Xminimum:5 Xmaximum:15 Yminimum:0 Ymaximum:1M Zminimum:1 Zmaximum:6 Xintervals:0 Yintervals:0 Includexzero:0 Includeyzero:0 Includezzero:0 Statsselect:[1, 1, 1, 1, 1, 0, 0, 0] Probindex:[5%, 25%, 50%, 75%, 95%] Arial, 5 [Length,Zone] No-change cost e/trip Calculates the additional cost to those passengers that want a direct trip even if there is not a full vehicle available. First, the additional cost per trip of having these trips in the system is calculated. This is multiplied by the total number of trips to get the total additional cost per day. This is divided by the number of these special-service trips. Taken together, everyone must pay the price shown with No-change fraction=0, and the No-change cost is added to this price to cover the additional costs. var a:= cost_passenger-cost_passenger[nochange_fr=0]; a:= a[mode1='Composite']; a:= a*sum(Trips_per_mode[{period=choose_period,}mode1='Composite'],length); var b:= sum(sum(no_change_trips,length),zone); a/b 176,424,1 48,24 2,102,90,485,430 2,281,258,643,324,0,MEAN [Car_fr,Period] [Index Cost_structure] Cost strength variability The same as Cost strength, except that this node only contains the variability, not uncertainty. The stakeholder-specific weights that are given to different cost types. The weight is 1 always with the following exceptions: - Car capital costs may be <1 because the owner may need the car for other purposes than the trips considered here. - Willingness to drive (Driver costs for car drivers) may be positive or negative depending on how the the driving is valuated. - 'Parking' is zero for composite traffic and society, because 'Parking land' cost is then calculated. - 'Parking land ' is zero for car passengers, because 'Parking' is then calculated. - 'Emission costs' and 'Accidents' are not calculated for passengers because they harm people in general, not any individual specifically. - 'Ticket' cost is calculated only for composite traffic passengers. It is not relevant for cars; and from the societal point of view, it is only a money transfer from the passenger to the service provider. Table(Cost_structure,Mode1,Stakeholder)( Cap_variation,Cap_variation, 1,1, 1,1, (-Drive_variation),Drive_variation, 1,1, 1,1, 1,1, 1,1, 1,1, 1,0, 0,0, 0,0, 0,1, 1,1, 1,1, 0,1, 0,1, 0,1, 1,1, 1,1, 1,1, 0,1, 0,1, 0,1, 0,0, 1,0, 1,0 ) 312,456,1 48,24 2,102,90,476,422 2,826,255,416,303,0,MIDM 2,564,215,350,281,0,MEAN [Mode1,Cost_structure] [Mode1,Cost_structure] Most of the VOI (esp. car occupancy) is actually in variables known to the passenger Most of the VOI (esp. car occupancy) is actually in variables known to the passenger. passenger_voi_and_voc 456,208,1 48,63 65535,65532,19661 Most of the VOI is actually VOC=value of consensus Most of the VOI is actually VOC=value of consensus. This means that VOI is calculated for an input variable that is not actually unknown, but it reflects true variability in the population. Therefore the reduction of the spread of this variable does not mean that uncertainty is decreased. It means that the variability is decreased, i.e. that the population is approaching consensus. Societal_voi_and_voc 336,128,1 48,46 65535,65532,19661 Outcome Importance Spearman r Importance analysis of the uncertain input variables. It is a Spearman rank correlation between the input variables and the outcome ('Cost'). Abs( RankCorrel( Uncertain_inputs,Cost) ) 64,120,1 48,24 1,1,1,1,1,1,0,0,0,0 2,127,41,402,453,0,MIDM [Length,Uncertain_var] Uncertainties fractile Uncertain input variables standardised as fractiles. rank(uncertain_inputs,run)/samplesize 64,72,1 48,12 2,97,189,665,420,0,SAMP [Run,Uncertain_var] Expected variations e/trip Cost difference of composite and car trips shown as the expectation. The X axis shows the fractiles of one uncertain variable. If there is a trend, this varible has a large impact on the cost difference. See also 'Cost by uncertainty'. variation1(uncertain_inputs,Cost,9) 64,240,1 48,24 2,116,222,476,224 2,12,12,607,474,1,MIDM [Car_fr,Uncertain_var] Costs \car occupancy e/trip An alternative way of calculating costs given a certain input variable ('Car occupancy' in this case). var classes:= 100; index varia:= 1..classes; var c:= getfract(Group_size,varia/classes); average(for x[]:= c do (whatif(Costs__cap,Group_size,x)),varia) 176,304,1 48,24 2,45,0,833,212,1,SAMP Graphtool:0 Distresol:10 Diststeps:1 Cdfresol:5 Cdfsteps:1 Symbolsize:6 Baroverlap:0 Linestyle:10 Frame:1 Grid:1 Ticks:1 Mesh:1 Scales:1 Rotation:45 Tilt:0 Depth:70 Frameauto:1 Showkey:1 Xminimum:0 Xmaximum:100 Yminimum:-4 Ymaximum:4 Zminimum:1 Zmaximum:1 Xintervals:0 Yintervals:0 Includexzero:0 Includeyzero:0 Includezzero:0 Statsselect:[1, 1, 1, 1, 1, 0, 0, 0] Probindex:[5%, 25%, 50%, 75%, 95%] Arial, 6 Costs \cap e/trip An alternative way of calculating costs given a certain input variable ('Cap' in this case). var classes:= 100; index varia:= 1..classes; var c:= getfract(cap,varia/classes); average(for x[]:= c do (whatif(Cost,cap,x)),varia) 64,304,1 48,24 2,47,207,833,237,1,SAMP Graphtool:0 Distresol:10 Diststeps:1 Cdfresol:5 Cdfsteps:1 Symbolsize:6 Baroverlap:0 Linestyle:10 Frame:1 Grid:1 Ticks:1 Mesh:1 Scales:1 Rotation:45 Tilt:0 Depth:70 Frameauto:1 Showkey:1 Xminimum:0 Xmaximum:100 Yminimum:-4 Ymaximum:4 Zminimum:1 Zmaximum:1 Xintervals:0 Yintervals:0 Includexzero:0 Includeyzero:0 Includezzero:0 Statsselect:[1, 1, 1, 1, 1, 0, 0, 0] Probindex:[5%, 25%, 50%, 75%, 95%] Arial, 6 Cost by uncertainty e/trip Cost difference of composite and car trips shown as a scatter plot. The X axis shows the fractiles of one uncertain variable. If there is a trend, this varible has a large impact on the cost difference. Cost 64,40,1 48,24 2,82,65,830,529,1,SAMP Graphtool:0 Distresol:10 Diststeps:1 Cdfresol:5 Cdfsteps:1 Symbolsize:4 Baroverlap:0 Linestyle:4 Frame:1 Grid:1 Ticks:1 Mesh:1 Scales:1 Rotation:45 Tilt:0 Depth:70 Frameauto:1 Showkey:1 Xminimum:0 Xmaximum:1 Yminimum:-2.5 Ymaximum:2.5 Zminimum:1 Zmaximum:1 Xintervals:0 Yintervals:0 Includexzero:0 Includeyzero:0 Includezzero:0 Statsselect:[1, 1, 1, 1, 1, 0, 0, 0] Probindex:[5%, 25%, 50%, 75%, 95%] Arial, 6 [Run,Undefined] Uncertainties S Costs \car occupancy e/trip An alternative way of calculating costs given a certain input variable ('Car occupancy' in this case). var classes:= 100; index varia:= 1..classes; var c:= getfract(Group_size,varia/classes); average(for x[]:= c do (whatif(societal_cost,Group_size,x)),varia) 64,184,1 48,24 2,45,0,833,212,1,SAMP Graphtool:0 Distresol:10 Diststeps:1 Cdfresol:5 Cdfsteps:1 Symbolsize:6 Baroverlap:0 Linestyle:10 Frame:1 Grid:1 Ticks:1 Mesh:1 Scales:1 Rotation:45 Tilt:0 Depth:70 Frameauto:1 Showkey:1 Xminimum:0 Xmaximum:100 Yminimum:-4 Ymaximum:4 Zminimum:1 Zmaximum:1 Xintervals:0 Yintervals:0 Includexzero:0 Includeyzero:0 Includezzero:0 Statsselect:[1, 1, 1, 1, 1, 0, 0, 0] Probindex:[5%, 25%, 50%, 75%, 95%] Arial, 6 Cost classified var x:= 9; var a:= sample(cost_variation); a:= a[stakeholder='Passenger']; a:= a[mode1='Composite']-a[mode1='Car']; index vari:= sequence(1/x,1,1/x); var in:= ceil(rank(a,run)*x/samplesize)/x; a:= if in=Vari then a else 0; 176,40,1 48,24 [Run,Car_fr] Classified passenger VOI The iterations are classified into 9 groups based on variability, and these groups are calculated separately. This is reasonable, because there is no point in calculating a common VOI for two individuals, who are on opposite extremes of the variation according to favourness of composite traffic. However, both Passenger VOI and Single passenger VOI are doing this (except that the latter matches for the most important variating variable). var a:= array(Mode1,[sample(Cost_classified)*9,0]); a:= sum(a*sum(trip_fraction,mode1),length); Voi(a,Mode1,uncertain_inputs,uncertain_var,Classes) 336,40,1 52,24 2,389,72,366,497,0,MIDM Societal VOI and VOC e/d Value of information analysis for the input variables with the societal decision about the target level of composite fraction. Each level involves a particular amount of subsidies to composite traffic to reach the target. The analysis calculates the expected benefit for the society when the uncertainty of a variable is resolved. var a:= sum(sum(sample(Societal_cost),length),mode1); a:= if Car_fr=1 then a[Car_fr=0.9] else a; Voi(a,Car_fr,uncertain_inputs,uncertain_var,classes) 176,128,1 48,24 2,581,43,377,506,0,MIDM Graphtool:0 Distresol:10 Diststeps:1 Cdfresol:5 Cdfsteps:1 Symbolsize:6 Baroverlap:0 Linestyle:9 Frame:1 Grid:1 Ticks:1 Mesh:1 Scales:1 Rotation:45 Tilt:0 Depth:70 Frameauto:1 Showkey:1 Xminimum:1 Xmaximum:17 Yminimum:-225K Ymaximum:0 Zminimum:1 Zmaximum:2 Xintervals:0 Yintervals:0 Includexzero:0 Includeyzero:0 Includezzero:0 Statsselect:[1,1,1,1,1,0,0,0] Probindex:[0.05,0.25,0.5,0.75,0.95] Arial, 6 Passenger VOI and VOC e/trip Value of information analysis for the input variables with the passenger decision between composite and car traffic. The analysis calculates the expected benefit for the passenger when the uncertainty of a variable is resolved. var a:= sample(cost[stakeholder='Passenger']); a:= sum(a*sum(trip_fraction,mode1),length); a:= array(mode1,[a,0]); Voi(a,Mode1,uncertain_inputs,uncertain_var,Classes){missing ')'} 312,208,1 48,24 2,482,80,398,480,0,MIDM Graphtool:0 Distresol:10 Diststeps:1 Cdfresol:5 Cdfsteps:1 Symbolsize:6 Baroverlap:0 Linestyle:1 Frame:1 Grid:1 Ticks:1 Mesh:1 Scales:1 Rotation:45 Tilt:0 Depth:70 Frameauto:1 Showkey:1 Xminimum:0 Xmaximum:1 Yminimum:0 Ymaximum:1 Zminimum:0 Zmaximum:1 Xintervals:0 Yintervals:0 Includexzero:0 Includeyzero:0 Includezzero:0 Statsselect:[1,1,1,1,1,0,0,0] Probindex:[0.05,0.25,0.5,0.75,0.95] 1,F,4,3,0,0 Cost \variation var a:= cost_variation[Mode1='Composite']-cost_variation[Mode1='Car']; a:= rank(a,run)/samplesize; var b:= expected_total_varia; a:= Linearinterp(b.i,b, a,b.i); cost-a 424,344,1 48,24 2,102,90,476,375 2,257,61,680,471,1,SAMP Graphtool:0 Distresol:10 Diststeps:1 Cdfresol:5 Cdfsteps:1 Symbolsize:4 Baroverlap:0 Linestyle:4 Frame:1 Grid:1 Ticks:1 Mesh:1 Scales:1 Rotation:45 Tilt:0 Depth:70 Frameauto:1 Showkey:1 Xminimum:0 Xmaximum:1000 Yminimum:-3 Ymaximum:3 Zminimum:1 Zmaximum:2 Xintervals:0 Yintervals:0 Includexzero:0 Includeyzero:0 Includezzero:0 Statsselect:[1, 1, 1, 1, 1, 0, 0, 0] Probindex:[5%, 25%, 50%, 75%, 95%] Arial, 8 [Run,Length] Total societal VOI is 30000 euro/d, which implies robust conclusions For the societal question whether to subsidise composite traffic at 50 % composite fraction or not at all, the total value of resolving all uncertainty is only about 30 000 e per day, and the value for every single variable was zero. This means that the conclusion is robust and that even if the truth about a variable were found out to be the most unfavourable to the composite traffic, the optimal decision would still be the same. Societal_voi_0_or_50 648,408,1 52,44 2,102,90,475,224 [Alias Total_societal__voi1] 65535,65532,19661 Fig 6A Passenger VOI passenger_voi 528,208,1 48,29 2,17,59,799,413,0,MIDM [Formnode Fig_6a_passenger_vo1] Graphtool:0 Distresol:10 Diststeps:1 Cdfresol:5 Cdfsteps:1 Symbolsize:6 Baroverlap:0 Linestyle:9 Frame:1 Grid:1 Ticks:1 Mesh:1 Scales:1 Rotation:45 Tilt:0 Depth:70 Frameauto:1 Showkey:1 Xminimum:1 Xmaximum:3 Yminimum:-70K Ymaximum:0 Zminimum:1 Zmaximum:12 Xintervals:0 Yintervals:0 Includexzero:0 Includeyzero:0 Includezzero:0 Statsselect:[1,1,1,1,1,0,0,0] Probindex:[0.05,0.25,0.5,0.75,0.95] Fig 6B Societal VOI Societal_voi_0_100 288,408,1 48,24 2,563,94,416,435,0,MIDM [Formnode Fig_6b_societal_voi1] Societal VOI 0 or 50 e/d Value of information analysis for the input variables with the societal decision about the target level of composite fraction. Each level involves a particular amount of subsidies to composite traffic to reach the target. The analysis calculates the expected benefit for the society when the uncertainty of a variable is resolved. var a:= sum(sum(sample(Societal_cost__varia),length),mode1); index comp:= [0,0.5]; a:= a[Car_fr=comp]; Voi(a,comp,uncertain_inputs,uncertain_var,classes) 528,408,1 48,24 2,18,41,377,506,0,MIDM Graphtool:0 Distresol:10 Diststeps:1 Cdfresol:5 Cdfsteps:1 Symbolsize:6 Baroverlap:0 Linestyle:9 Frame:1 Grid:1 Ticks:1 Mesh:1 Scales:1 Rotation:45 Tilt:0 Depth:70 Frameauto:1 Showkey:1 Xminimum:1 Xmaximum:3 Yminimum:-70K Ymaximum:0 Zminimum:1 Zmaximum:12 Xintervals:0 Yintervals:0 Includexzero:0 Includeyzero:0 Includezzero:0 Statsselect:[1,1,1,1,1,0,0,0] Probindex:[0.05,0.25,0.5,0.75,0.95] Arial, 6 (a:probtype) Tm a:= if size(a)=size(sum(a,length)) then a else sum(a,length); a:= if size(a)=size(sum(a,vehicle)) then a else sum(a,vehicle); a:= if size(a)=size(sum(a,period)) then a else sum(a,period); a:= rounding(mean(a),3)&' ('& rounding(Getfract(a,0.05),3)&'-'& rounding(getfract(a,0.95),3)&')'; a:= if a='NAN (NAN-NAN)' then '' else a; a:= a; a[Car_fr=i] 664,176,1 48,12 2,7,86,476,512 a i [0,0.25,0.5,0.75,1] 664,152,1 48,12 Trip data This module calculates the trip rate for each origin-destination pair (129^2 pairs) and for each time point (12 min intervals resulting in 120 time points) based on trip data from three separate hours (morning rush, midday, afternoon rush) and time activity (based on diaries) in traffic along 24 hours. The total number of trips equals the number of car trips in Helsinki area on a working day in 2000. All scenarios have the same street strucure and number of trips with a particular origin, destination, and time. The trips are divided into car trips and composite trips differently in each scenario based on two variables. Composite fraction is the percentage of the trips that are handled by composite traffic; the remaining trips are handled by personal cars. Guaranteed area defines the area where composite traffic is provided (i.e. the area where you are guaranteed to get a composite vehicle if you want one). The default assumption is that both the origin AND the destination must be in the guaranteed area, but it is also easy to evaluate scenarios where the guarantee covers all trips in the Helsinki area as long as either the origin OR the destination is in the guaranteed area. The model calculates the expected number of trips for each origin-destination-time cell, and picks one random number from Poisson distributioin based on the expectation. After that, the model is deterministic all the way to Outputs node. jtue 26. Junta 2003 12:49 jtue 18. elota 2004 18:12 48,24 56,232,1 48,24 1,1,1,1,1,1,0,0,0,0 1,387,62,9,665,17 2,244,212,476,362 Arial, 13 Adjusted trip rate trips/time unit Calculates the traffic volume for each time point of the day. Adjusting is taken into account to yield results where the population in an area is not much different after the day. var g:= unadjusted_trip_rate; {index x:= copyindex(From); var b:= 0; var c:= 0; var e:= 0; var a:= sum(Unadjusted_trip_rate,time); b:= sum(a,From); b:= b[To1=From]; c:= sum(a,To1); c:= (b-c)*a/sum(a,To1); e:= if c<0 then -c else 0; c:= if c<0 then 0 else c; e:= e[From=x,To1=From]; e:= e[x=To1]; a:= c+e; var g:= if time>7 and time<19 then 1 else 0; g:= g/sum(g,time); g:= Unadjusted_trip_rate+a*g;} g:= g/sum(sum(sum(g,from),to1),time)*total_trips; {var h:= if rank(time)/2 = floor(rank(time)/2) then g *scenario_input[input_var='Flexible fraction'] else 0; var i:= h[time=time+time_unit] ; i:= if i=null then 0 else i; g:= g+i-h; if isnan(g) then 0 else g} 168,176,1 48,24 2,320,0,476,608 2,14,239,993,392,0,MIDM Graphtool:0 Distresol:10 Diststeps:1 Cdfresol:5 Cdfsteps:1 Symbolsize:6 Baroverlap:0 Linestyle:1 Frame:1 Grid:1 Ticks:1 Mesh:1 Scales:1 Rotation:45 Tilt:0 Depth:70 Frameauto:1 Showkey:1 Xminimum:0 Xmaximum:1 Yminimum:0 Ymaximum:1 Zminimum:0 Zmaximum:1 Xintervals:0 Yintervals:0 Includexzero:0 Includeyzero:0 Includezzero:0 Statsselect:[1,1,1,1,1,0,0,0] Probindex:[0.05,0.25,0.5,0.75,0.95] [Time,From] [Time,From] 13.7.2006 Jouni Tuomisto Poistin Felxible fractionin toiminnasta, koska sitŠ en ole koskaan tarvinnut, ja toteutustapa tuntuu nyt huonolta. EhkŠ koodinkin voisi poistaa kokonaan, mutten sitŠ vielŠ tee. (param1, param2; suurind, pienind:indextype;indtieto) Si_pi A function used to divide aggragate data into its disaggregate units based on weighting factors. var a:=sum((if indtieto=Suurind then param2 else 0), pienind); a:= sum((if indtieto=suurind then a else 0), suurind); a:= param2/a; a:= if indtieto=suurind then param1*a else 0; sum(a, suurind) 512,24,1 48,12 2,36,83,476,372 param1,param2,suurind,pienind,indtieto Place1 The place where the trip ends. copyindex(Place) 512,112,1 48,12 2,120,130,416,303,0,MIDM Place The place where the trip origines/ends. Workplace is a trip to/from the workplace; business is a work-related trip outside the workplace. ['Home','Workplace','Business','School','Other'] 512,88,1 48,12 2,704,209,476,464 Unadjusted trip rate trips/time unit Calculates the traffic volume for each time point of the day. First, the matrix is selected based on the Base_time Name column, and then the numbers are scaled as the proportion of the traffic activity per each hour and the peak hour for which the matrix was calculated. var c:= Select_trip_matrix; c:= c[area1=From,area2=To1]; c:= if c=null then 0 else c; c:= cubicinterp(hour,c,time,hour) 168,96,1 48,24 2,454,141,476,358 2,10,136,678,514,0,MIDM Graphtool:0 Distresol:10 Diststeps:1 Cdfresol:5 Cdfsteps:1 Symbolsize:6 Baroverlap:0 Linestyle:10 Frame:1 Grid:1 Ticks:1 Mesh:1 Scales:1 Rotation:45 Tilt:0 Depth:70 Frameauto:1 Showkey:1 Xminimum:0 Xmaximum:25 Yminimum:0 Ymaximum:180 Zminimum:1001 Zmaximum:1012 Xintervals:0 Yintervals:0 Includexzero:0 Includeyzero:0 Includezzero:0 Statsselect:[1, 1, 1, 1, 1, 0, 0, 0] Probindex:[5%, 25%, 50%, 75%, 95%] Arial, 6 [Time,From] [To1,From] All trips trips/time unit Calculates number of individuals in the composite traffic and in car traffic for each route and time. Composite traffic may be restricted by area or by the fraction of trips that switch from car traffic to composite traffic. var a:= adjusted_trip_rate; a:= if isnan(a) then 100u else a; a:= if a=0 then 100u else a; a:= slice(sample(Poisson(a)),run,1); var g:= Scenario_input[input_var='Guarantee level']; var car:= Scenario_input[input_var='Car fraction']; var pub:= Scenario_input[input_var='Public fraction'] *Bus_existence; var b:= guaranteed_areas; var c:= From&''; b:= if findintext(c,Regions) then b else 0; b:= sum(b,Region); b:= b[guarantee=g]; b:= if Scenario_input[input_var='Large guarantee?']='Yes' then b+b[From=To1] else b*b[From=To1]; b:= if b>0 then 1 else 0; car:= slice(sample(binomial(a[mode1='Car'],b*car)),run,1); pub:= slice(sample(binomial(a[mode1='Public'],b*pub)),run,1); array(Mode1,[car,sum(a,mode1)-car-pub,pub]) 288,176,1 48,24 2,544,169,476,493 2,19,36,435,468,0,MIDM [To1,From] [Index Mista] Flow passengers/time unit Passenger flow at each point. This is a sum of people who start, continue or end their trip from or to here. var a:= From&''; var c:= sum(All_trips[Mode1='Composite'],time); for x[]:= a do ( var b:= (if findintext(x,Route_matrix)>0 then c else 0); sum(sum(b,From),To1) ) 400,176,1 48,24 2,17,204,476,316 2,142,149,654,249,0,MIDM [To1,From] Transfer point The most busy point along the trip. In a case where there is no direct composite vehicle driving from the origin to the destination, the passenger is dropped at this point, and the latter part of the trip is organised separately. index etappi:= 1..max(max((textlength(route_matrix)+1)/5,From),To1); var a:= sum(Flow,To1); var b:= '0*'&Route_matrix&'*0'; b:= for x[]:= b do slice(splittext(x,','),etappi); var c:= a[From=evaluate(b)]; var d:= if istext(c) or isnumber(c) then c else 0; c:= argmax(d,etappi); c:= if max(d,etappi)=0 or c=1 then '' else b[etappi=c]&','; From&','&c&To1 400,240,1 48,24 2,504,112,476,513 2,43,10,972,486,0,MIDM [To1,From] Guarantee A dummy index. [1,2,3,4,5,6,7] 288,272,1 48,12 2,102,90,476,533 2,104,114,416,494,0,MIDM Guaranteed areas Guarantee means that any trip within the specified region is organised by the composite traffic, if wanted. 1=guarantee, 0=no guarantee. The default assumption is that both the origin AND the destination must be in the guaranteed area, but it is also easy to evaluate scenarios where the guarantee covers all trips in the Helsinki area as long as either the origin OR the destination is in the guaranteed area. Table(Guarantee,Region)( 0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,1,0,1,0,0,0,0, 0,0,0,0,0,0,0,0,1,1,1,0,0,0,0, 0,0,0,0,0,0,0,0,1,1,1,1,1,1,1, 0,0,1,1,0,0,0,0,1,1,1,1,1,1,1, 0,0,1,1,0,1,0,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 ) 288,240,1 48,24 2,102,90,476,434 2,354,113,582,448,0,MIDM 2,49,233,589,346,0,MIDM 52425,39321,65535 [Guarantee,Region] [Guarantee,Region] Total trips trips Total number of trips travelled in a personal car in Helsinki Metropolitan area during a working day. The total number of trips is 2.9 million, and 44% of them are by personal cars. Trips by traffic mode on weekday in the Helsinki metropolitan area in 2000. Total trips 2.9 million 22 % Walking 7 % Cycling 16 % Bus 3 % Tram 3 % Train 4 % Metro 34 % Personal car (driver) 10 % Personal car (passenger) and taxi 2.9M*array(mode1,[0.44,0,0.16+0.03+0.04]) 56,176,1 48,24 2,102,90,476,478 2,40,50,416,303,0,MIDM 65535,52427,65534 YTV: Helsingin seudun nykytila (The Current State of Helsinki Region) PJS B 2002:1 <a hfref="http://www.ytv.fi/seutukeh/pks/pks2025/nykytila.pdf">PDF file</a> Population inhabitants Population of the Helsinki Metropolitan Area by area in 2003. Table(Area1)( 389,10.248K,8215,882,6768,4157,11.62K,761,2407,3401,13.137K,14.569K,8705,6832,4746,0,3542,2284,15.89K,7028,11.8K,6825,3344,5755,10.28K,19K,9940,7288,12.956K,12.983K,10.358K,4523,8375,12.656K,5284,8470,13.653K,6422,8695,3549,8782,4169,11.435K,10.766K,2122,5480,7962,11.615K,10.91K,7636,5795,3710,16.146K,9493,8819,8331,11.226K,4023,8631,28.283K,5951,8259,16.458K,13.495K,12,829,9,3235,9228,6191,3145,7835,8819,16.405K,14.91K,6105,8003,15.762K,14.608K,2209,2888,12.29K,7692,3475,8069,2237,5239,8905,9199,8253,15.238K,5847,5934,1845,4671,549,3999,572,3579,9299,6466,18.695K,14.052K,2140,4118,2619,112,3145,3465,215,47,1807,10.396K,4301,11.36K,4840,2895,1346,3723,8338,2620,5403,3375,9873,12.478K,3167,4698,14.244K,9899,0) 56,240,1 48,24 2,388,82,476,459 2,415,198,416,481,0,MIDM 2,510,11,258,615,0,MIDM 65535,52427,65534 [Index Area1] Seutu-CD '03. YTV (The Helsinki Metropolitan Area Council), Helsinki, 2004. Population guaranteed inhabitants Number of inhabitants in the area in which the composite traffic operates. var b:= guaranteed_areas; var c:= From&''; b:= if findintext(c,Regions) then b else 0; {b:= sum(b,Region);} b:= if b>0 then population[area1=from] else 0; sum(b,from) 168,240,1 48,24 2,480,131,476,440 2,202,71,609,369,0,MIDM [Guarantee,Region] [Index Region] Areal surface arbitrary The areal surface of each area. (A rough classification). Table(Region)( 7,4,3,2.5,5,2,3,1,1,1,1,1,1,2,3) 56,304,1 48,24 2,541,153,416,352,0,MIDM 2,526,136,416,386,0,MIDM 65535,52427,65534 Based on rough estimates with a map on scale 1:40000. Population density arbitrary Population density in each area. (A rough classification.) var c:= From&''; var b:= if findintext(c,Regions) then 1 else 0; b:= if b>0 then population[area1=from] else 0; sum(b,from)/areal_surface 168,304,1 48,24 2,481,162,476,400 2,93,219,954,423,0,MIDM [From,Region] Modelled trip rate Trip matrix is sthe same as in Tuomisto and Tainio, 2005. jtue 13. Febta 2003 16:03 ktluser 25. touta 2005 12:30 48,24 168,32,1 48,24 1,1,1,1,1,1,0,0,0,0 1,46,136,-382,408,17 Arial, 13 Trips municipality 1000 tips/d One-way trips from one municipality to another. Table(Municipality,Municipality1)( 223,(365/2),(130/2),(95/2), (365/2),332,(103/2),(117/2), (130/2),(103/2),320,(49/2), (95/2),(117/2),(49/2),179 ) 56,64,1 48,24 2,422,91,476,513 1,77,139,758,383,0,MIDM 2,52,332,708,188,0,MIDM 65535,52427,65534 [Self,Municipality1] [Municipality,Municipality1] [Index Suuralue] YTV: Liikkumisen nykytila. PŠŠkaupunkiseudun julkaisusarja B 2001:10. Fig 6. <a href="http://www.ytv.fi/NR/rdonlyres/F6B8A4F8-C394-4972-A1DE-C64E2B69EE6D/0/nykytila_B2001_10.pdf>PDF file</a> Trips place 1000 trips/d One-way trips from one place to another (such as home, work etc). Table(Place,Place1)( 29,(642/2),(67/2),(283/2),(1315/2), (642/2),4,(71/2),(9/2),(184/2), (67/2),(71/2),21,(1/2),(21/2), (283/2),(9/2),(1/2),2,(50/2), (1315/2),(184/2),(21/2),(50/2),193 ) 56,176,1 48,24 2,402,104,476,603 2,44,37,504,196,0,MIDM 65535,52427,65534 [Place,Place1] [Place,Place1] [Index Kohde] YTV: Liikkumisen nykytila. PŠŠkaupunkiseudun julkaisusarja B 2001:10. Fig 7. <a href="http://www.ytv.fi/NR/rdonlyres/F6B8A4F8-C394-4972-A1DE-C64E2B69EE6D/0/nykytila_B2001_10.pdf>PDF file</a> Trips place&mode fraction The distribution of trips among transportation modes. Table(Place,Place1,Mode2)( 0.34,0.19,0.46,0.01, 0.15,0.39,0.46,0, 0.34,0.19,0.46,0.01, 0.42,0.42,0.15,0.01, 0.34,0.19,0.46,0.01, 0.15,0.39,0.46,0, 0.25,0.24,0.5,0.01, 0.25,0.24,0.5,0.01, 0.25,0.24,0.5,0.01, 0.25,0.24,0.5,0.01, 0.34,0.19,0.46,0.01, 0.25,0.24,0.5,0.01, 0.25,0.24,0.5,0.01, 0.25,0.24,0.5,0.01, 0.25,0.24,0.5,0.01, 0.42,0.42,0.15,0.01, 0.25,0.24,0.5,0.01, 0.25,0.24,0.5,0.01, 0.25,0.24,0.5,0.01, 0.25,0.24,0.5,0.01, 0.34,0.19,0.46,0.01, 0.25,0.24,0.5,0.01, 0.25,0.24,0.5,0.01, 0.25,0.24,0.5,0.01, 0.25,0.24,0.5,0.01 ) 64,288,1 48,24 2,377,111,476,441 1,494,125,416,303,0,MIDM 2,27,185,456,199,0,MIDM 65535,52427,65534 [Mode2,Place1] [Place,Place1] [Index Kohde] YTV: Liikkumisen nykytila. PŠŠkaupunkiseudun julkaisusarja B 2001:10. Fig 8. <a href="http://www.ytv.fi/NR/rdonlyres/F6B8A4F8-C394-4972-A1DE-C64E2B69EE6D/0/nykytila_B2001_10.pdf>PDF file</a> Trips munic&mode trips/d/inh Number of trips per inhabitant of each transportation mode in different municipalities. These data are not used in the model. Table(Municipality,Mode2)( 1.31,1.1,0.93,0.03, 0.89,1.01,1.34,0.03, 0.92,0.72,2.03,0.03, 0.92,0.73,1.67,0.05 ) 64,368,1 48,24 2,491,162,476,551 1,136,146,595,314,0,MIDM 2,30,208,649,187,0,MIDM 65535,52427,65534 [Mode2,Self] [Municipality,Mode2] [Index Suuralue] YTV: Liikkumisen nykytila. PŠŠkaupunkiseudun julkaisusarja B 2001:10. Fig 9. <a href="http://www.ytv.fi/NR/rdonlyres/F6B8A4F8-C394-4972-A1DE-C64E2B69EE6D/0/nykytila_B2001_10.pdf>PDF file</a> Fraction pub tr munic fraction The fraction of public transportation in municipalities. These data are not used in the model. Table(Municipality,Municipality1)( 0.64,0.59,0.5,0.57, 0.59,0.33,0.24,0.21, 0.5,0.24,0.22,0.14, 0.57,0.21,0.14,0.23 ) 64,424,1 48,24 2,102,90,476,471 1,200,210,666,291,0,MIDM 1,200,210,752,301,1,MIDM 65535,52427,65534 [Self,Municipality1] [Self,Municipality1] YTV: Liikkumisen nykytila. PŠŠkaupunkiseudun julkaisusarja B 2001:10. Fig 6. <a href="http://www.ytv.fi/NR/rdonlyres/F6B8A4F8-C394-4972-A1DE-C64E2B69EE6D/0/nykytila_B2001_10.pdf>PDF file</a> Place weight by hour A rough weighting of different trips along the day. The purpose of this node is to take into account the fact that residences and workplaces are located differently in the area, and therefore the different trips occur unevenly in time and space. var a:= table(Time_of_day)(0.1,0.3,1,0.1,0.1); var c:= table(Time_of_day)(1,0.3,0.2,0.1,0.1); a:= (if Place='Workplace' or Place='Business' then a else if Place1='Workplace' or Place1='Business' then c else 1); a:= a[Time_of_day=Time_of_day_by_hour]; a/sum(a,hour) 512,96,1 48,24 2,534,55,476,570 2,400,26,509,574,0,MIDM 52425,39321,65535 [Place1,Hour] [Index Tunti] Municipality Municipalities in the Helsinki metropolitan area. Helsinki is divided into two parts; Kauniainen is together with Espoo. ['Helsinki, downtown','Helsinki, suburbs','Espoo, Kauniainen','Vantaa'] 56,96,1 48,12 2,243,104,476,437 2,17,221,416,303,0,MIDM Municipality1 The same as Municipality; this index is used as the destination. copyindex(Municipality) 56,120,1 48,12 2,451,144,476,421 2,72,82,416,303,0,MIDM Mode The modes of transportation. ['Kevyt liikenne','Joukkoliikenne','Henkilšauto','Muu'] 64,320,1 48,12 2,102,90,476,446 Time of day Time of day ['Morning','Day','Afternoon','Evening','Night'] 512,128,1 48,12 2,183,445,242,306 Time in traffic min/h Time spent in personal car traffic in Helsinki. Based on personal diaries of adult subjects in Expolis study in 1996-97. Table(hour)( 0.5434,0.3511,0.2547,0.2885,0.1949,0.4356,1.521,4.747,5.118,2.106,1.892,1.663,1.966,1.91,2.608,3.477,6.161,5.567,3.811,2.833,2.158,1.254,0.7295,0.5768) 400,240,1 48,24 2,161,264,476,428 2,136,28,416,569,0,MIDM 2,13,59,490,544,1,MIDM 65535,52427,65534 [Index Tunti] Anu Kousa, Expolis database 12.11.2002. Car trips trips/d Car trips per day. var a:= Trips_place*Trips_place_mode*1000; a[Mode2='Henkilšauto'] 176,176,1 48,24 2,108,133,476,462 2,13,254,489,204,0,MIDM [Place,Place1] Time of day by hour Time of day by hour Table(Hour)( 'Night','Night','Night','Night','Night','Night','Morning','Morning','Morning','Day','Day','Day','Day','Day','Day','Afternoon','Afternoon','Afternoon','Evening','Evening','Evening','Evening','Night','Night') 512,32,1 48,24 2,18,279,476,224 2,488,78,416,538,0,MIDM 2,2,17,203,701,0,MIDM 52425,39321,65535 Inhabitants # Number of inhabitants by district in Jan 1st, 2001. Table(Area1)( 389,10.25K,8215,882,6768,4157,11.62K,761,2407,3401,13.14K,14.57K,8705,6832,4746,10,3542,2284,15.89K,7028,11.8K,6825,3344,5755,10.28K,19K,9940,7288,12.96K,12.98K,10.36K,4523,8375,12.66K,5284,8470,13.65K,6422,8695,3549,8782,4169,11.44K,10.77K,2122,5480,7962,11.62K,10.91K,7636,5795,3710,16.15K,9493,8819,8331,11.23K,4023,8631,28.28K,5951,8259,16.46K,13.5K,12,829,9,3235,9228,6191,3145,7835,8819,16.41K,14.91K,6105,8003,15.76K,14.61K,2209,2888,12.29K,7692,3475,8069,2237,5239,8905,9199,8253,15.24K,5847,5934,1845,4671,549,3999,572,3579,9299,6466,18.7K,14.05K,2140,4118,2619,112,3145,3465,215,47,1807,10.4K,4301,11.36K,4840,2895,1346,3723,8338,2620,5403,3375,9873,12.48K,3167,4698,14.24K,9899,0) 400,32,1 48,24 2,102,90,476,492 2,0,0,184,753,0,MIDM 2,489,294,416,303,0,MIDM 65535,52427,65534 Helsingin kaupungin tietokeskus: Helsingin seudun aluesarjat www.aluesarjat.fi Workplaces # The number of workplaces by district Table(Area1)( 23.89K,28.84K,6227,11.46K,9798,6390,4771,3018,1284,6659,8195,8960,17.77K,4184,12.67K,4232,8797,5226,8561,11.63K,3571,17.04K,2849,3602,3469,9525,2861,2476,3305,5571,17.35K,5016,1728,4239,1053,3709,5964,1673,849,1308,1604,2162,1287,8431,2242,975,720,1853,1668,2334,538,699,1596,1333,7414,1828,1070,7452,1394,3051,893,849,1463,1481,443,1723,4068,9201,6916,2818,6321,3340,1389,2487,7270,1709,690,2794,2389,1237,3399,3463,3694,1581,7038,3254,519,832,1336,1927,2510,4198,4122,309,1681,79,2301,478,1629,3254,2826,7822,5587,2206,1529,504,3285,1814,4254,3928,9509,2633,7034,275,1063,1958,1856,2519,232,1023,346,1808,478,1358,1605,308,2012,3644,794,0) 288,32,1 48,24 2,102,90,476,548 1,248,258,713,303,0,MIDM 2,583,35,416,303,1,MIDM 65535,52427,65534 SeutuCD 02, a CD ROM database about the Helsinki area. Municipality info The municipality to which each district belongs. Table(Area1)( 'Helsinki, downtown','Helsinki, downtown','Helsinki, downtown','Helsinki, downtown','Helsinki, downtown','Helsinki, downtown','Helsinki, downtown','Helsinki, downtown','Helsinki, downtown','Helsinki, downtown','Helsinki, downtown','Helsinki, downtown','Helsinki, downtown','Helsinki, downtown','Helsinki, downtown','Helsinki, downtown','Helsinki, downtown','Helsinki, downtown','Helsinki, downtown','Helsinki, downtown','Helsinki, downtown','Helsinki, downtown','Helsinki, downtown','Helsinki, downtown','Helsinki, downtown','Helsinki, downtown','Helsinki, suburbs','Helsinki, suburbs','Helsinki, suburbs','Helsinki, suburbs','Helsinki, suburbs','Helsinki, suburbs','Helsinki, suburbs','Helsinki, suburbs','Helsinki, suburbs','Helsinki, suburbs','Helsinki, suburbs','Helsinki, suburbs','Helsinki, suburbs','Helsinki, suburbs','Helsinki, suburbs','Helsinki, suburbs','Helsinki, suburbs','Helsinki, suburbs','Helsinki, suburbs','Helsinki, suburbs','Helsinki, suburbs','Helsinki, suburbs','Helsinki, suburbs','Helsinki, suburbs','Helsinki, suburbs','Helsinki, suburbs','Helsinki, suburbs','Helsinki, suburbs','Helsinki, suburbs','Helsinki, suburbs','Helsinki, suburbs','Helsinki, suburbs','Helsinki, suburbs','Helsinki, suburbs','Helsinki, suburbs','Helsinki, suburbs','Helsinki, suburbs','Helsinki, suburbs','Helsinki, suburbs','Helsinki, suburbs','Espoo, Kauniainen','Espoo, Kauniainen','Espoo, Kauniainen','Espoo, Kauniainen','Espoo, Kauniainen','Espoo, Kauniainen','Espoo, Kauniainen','Espoo, Kauniainen','Espoo, Kauniainen','Espoo, Kauniainen','Espoo, Kauniainen','Espoo, Kauniainen','Espoo, Kauniainen','Espoo, Kauniainen','Espoo, Kauniainen','Espoo, Kauniainen','Espoo, Kauniainen','Espoo, Kauniainen','Espoo, Kauniainen','Espoo, Kauniainen','Espoo, Kauniainen','Espoo, Kauniainen','Espoo, Kauniainen','Espoo, Kauniainen','Espoo, Kauniainen','Espoo, Kauniainen','Espoo, Kauniainen','Espoo, Kauniainen','Espoo, Kauniainen','Espoo, Kauniainen','Espoo, Kauniainen','Espoo, Kauniainen','Espoo, Kauniainen','Vantaa','Vantaa','Vantaa','Vantaa','Vantaa','Vantaa','Vantaa','Vantaa','Vantaa','Vantaa','Vantaa','Vantaa','Vantaa','Vantaa','Vantaa','Vantaa','Vantaa','Vantaa','Vantaa','Vantaa','Vantaa','Vantaa','Vantaa','Vantaa','Vantaa','Vantaa','Vantaa','Vantaa','Vantaa','Vantaa',0) 184,32,1 48,24 2,102,90,476,224 2,41,173,416,303,0,MIDM 52425,39321,65535 Trips place munic trips/d Car trips per day by municipality and place. Several weighting factors are used to derive the numbers from the original data. var ap:= array(Place,[Inhabitants, Workplaces, Workplaces, Inhabitants, Inhabitants]); ap:= sum((if Municipality=Municipality_info then ap else 0),area1); ap:= ap/sum(ap,Municipality); var a:= ap*Car_trips; ap:= ap[Municipality=Municipality1, Place=Place1]; a:= ap*a; a:= a/sum(sum(a,Place),Place1); a:= a*Trips_municipality; a:= a/sum(sum(sum(sum(a, Municipality), Municipality1), Place), Place1); a*sum(sum(Car_trips,Place),Place1) 288,176,1 48,24 2,16,104,498,591 1,339,342,644,303,0,MIDM 2,15,44,784,245,0,MIDM [Place,Place1] [Municipality1,Municipality] [Index Suuralue] Trips by hour trips/h Trips by hour from one district to another district. var ap:= array(Place,[Inhabitants, Workplaces, Workplaces, Inhabitants, Workplaces]); ap:= ap/sum(ap,area1); var a:= si_pi(Trips_place_munic,ap,Municipality,area1,Municipality_info); a:= si_pi(a,ap[area1=area2],Municipality1,area2,Municipality_info[area1=area2]); var va4:= Place_weight_by_hour*Time_in_traffic; va4:= va4/sum(va4,hour); a:= a*va4; a:= a/sum(sum(a,Place),Place1) *sum(sum(sum(a,Place),Place1),hour) *Time_in_traffic/sum(Time_in_traffic,hour); a:= sum(sum(a,Place),Place1); array(mode1,[a,0,0]) 400,176,1 48,24 2,38,32,562,688 2,554,42,540,493,0,MIDM [Area1,Area2] HLT2005 hpax 29. Mayta 2006 15:06 vkoe 31. Mayta 2006 9:47 48,24 56,32,1 48,24 1,1,1,1,1,1,0,0,0,0 1,40,17,-441,361,17 Arial, 12 Municipality info HLT Defines the municipality each district belongs to. Table(Area1)( 91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,235,49,49,49,49,49,49,49,49,49,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,0) 272,208,1 48,24 2,102,90,476,224 2,473,196,416,303,0,MIDM 52425,39321,65535 Mista [49,91,92,235] 56,176,1 48,12 2,40,50,416,303,0,MIDM Mihin copyindex(Mista) 56,200,1 48,12 2,459,182,476,224 2,207,465,416,303,0,MIDM Kulkutapa ['henkiloauto','Joukkoliikenne','Muu'] 56,248,1 48,12 HLT2004-05 Table(Cols,Rows)( 0,0,0,0,0.2,0.2,0.2,0.6,0.6,0.6,0.6,0.8,1,1,1,1,1,1,1.2,1.4,1.6,1.6,1.8,2,2,2,2,2,2,2,2.2,2.4,2.6,2.6,2.6,2.6,3,3,3,3,3,3,3,3.6,3.6,3.6,3.8,3.8,4,4,4,4,4.2,4.4,4.8,4.8,5,5,5,5.2,5.4,5.4,5.6,5.6,5.6,5.6,5.6,5.6,5.6,5.6,5.6,5.6,5.8,5.8,5.8,5.8,5.8,5.8,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6.2,6.2,6.2,6.2,6.2,6.2,6.2,6.2,6.2,6.2,6.2,6.2,6.2,6.2,6.2,6.2,6.4,6.4,6.4,6.4,6.4,6.6,6.6,6.6,6.6,6.6,6.6,6.6,6.6,6.6,6.6,6.6,6.6,6.6,6.6,6.6,6.6,6.6,6.6,6.6,6.6,6.6,6.6,6.6,6.6,6.6,6.6,6.6,6.6,6.6,6.6,6.6,6.6,6.6,6.6,6.6,6.6,6.6,6.6,6.6,6.6,6.6,6.6,6.6,6.6,6.6,6.6,6.6,6.6,6.6,6.6,6.6,6.6,6.6,6.8,6.8,6.8,6.8,6.8,6.8,6.8,6.8,6.8,6.8,6.8,6.8,6.8,6.8,6.8,6.8,6.8,6.8,6.8,6.8,6.8,6.8,6.8,6.8,6.8,6.8,6.8,6.8,6.8,6.8,6.8,6.8,6.8,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.4,7.4,7.4,7.4,7.4,7.4,7.4,7.4,7.4,7.4,7.4,7.4,7.4,7.4,7.4,7.4,7.4,7.4,7.4,7.4,7.4,7.4,7.4,7.4,7.4,7.4,7.4,7.4,7.4,7.4,7.4,7.4,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.8,7.8,7.8,7.8,7.8,7.8,7.8,7.8,7.8,7.8,7.8,7.8,7.8,7.8,7.8,7.8,7.8,7.8,7.8,7.8,7.8,7.8,7.8,7.8,7.8,7.8,7.8,7.8,7.8,7.8,7.8,7.8,7.8,7.8,7.8,7.8,7.8,7.8,7.8,7.8,7.8,7.8,7.8,7.8,7.8,7.8,7.8,7.8,7.8,7.8,7.8,7.8,7.8,7.8,7.8,7.8,7.8,7.8,7.8,7.8,7.8,7.8,7.8,7.8,7.8,7.8,7.8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8.2,8.2,8.2,8.2,8.2,8.2,8.2,8.2,8.2,8.2,8.2,8.2,8.2,8.2,8.2,8.2,8.2,8.2,8.2,8.2,8.2,8.2,8.2,8.2,8.2,8.2,8.2,8.2,8.2,8.2,8.2,8.2,8.2,8.2,8.2,8.2,8.2,8.4,8.4,8.4,8.4,8.4,8.4,8.4,8.4,8.4,8.4,8.4,8.4,8.6,8.6,8.6,8.6,8.6,8.6,8.6,8.6,8.6,8.6,8.6,8.6,8.6,8.6,8.6,8.6,8.6,8.6,8.6,8.6,8.6,8.6,8.6,8.6,8.6,8.6,8.6,8.6,8.6,8.6,8.6,8.6,8.6,8.6,8.6,8.6,8.6,8.6,8.6,8.6,8.6,8.6,8.6,8.6,8.6,8.6,8.6,8.6,8.6,8.6,8.6,8.6,8.6,8.6,8.6,8.6,8.6,8.6,8.6,8.6,8.6,8.6,8.6,8.6,8.6,8.6,8.6,8.6,8.6,8.6,8.6,8.6,8.6,8.6,8.6,8.6,8.6,8.6,8.6,8.6,8.6,8.6,8.6,8.6,8.6,8.6,8.6,8.6,8.6,8.6,8.6,8.6,8.6,8.6,8.6,8.6,8.6,8.6,8.6,8.8,8.8,8.8,8.8,8.8,8.8,8.8,8.8,8.8,8.8,8.8,8.8,8.8,8.8,8.8,8.8,8.8,8.8,8.8,8.8,8.8,8.8,8.8,8.8,8.8,8.8,8.8,8.8,8.8,8.8,8.8,8.8,8.8,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9.2,9.2,9.2,9.2,9.2,9.2,9.2,9.2,9.2,9.2,9.2,9.2,9.2,9.2,9.2,9.2,9.2,9.2,9.2,9.2,9.2,9.2,9.2,9.2,9.4,9.4,9.4,9.4,9.4,9.4,9.4,9.4,9.6,9.6,9.6,9.6,9.6,9.6,9.6,9.6,9.6,9.6,9.6,9.6,9.6,9.6,9.6,9.6,9.6,9.6,9.6,9.6,9.6,9.6,9.6,9.6,9.6,9.6,9.6,9.6,9.6,9.6,9.6,9.6,9.6,9.6,9.6,9.6,9.6,9.6,9.6,9.6,9.6,9.6,9.6,9.6,9.6,9.6,9.6,9.6,9.6,9.6,9.6,9.6,9.6,9.6,9.6,9.6,9.6,9.6,9.6,9.6,9.6,9.6,9.6,9.6,9.6,9.6,9.6,9.6,9.6,9.6,9.6,9.6,9.6,9.6,9.8,9.8,9.8,9.8,9.8,9.8,9.8,9.8,9.8,9.8,9.8,9.8,9.8,9.8,9.8,9.8,9.8,9.8,9.8,9.8,9.8,9.8,9.8,9.8,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10.2,10.2,10.2,10.2,10.2,10.2,10.2,10.2,10.2,10.2,10.2,10.2,10.2,10.2,10.2,10.2,10.2,10.2,10.2,10.4,10.4,10.4,10.4,10.4,10.4,10.4,10.4,10.4,10.4,10.6,10.6,10.6,10.6,10.6,10.6,10.6,10.6,10.6,10.6,10.6,10.6,10.6,10.6,10.6,10.6,10.6,10.6,10.6,10.6,10.6,10.6,10.6,10.6,10.6,10.6,10.6,10.6,10.6,10.6,10.6,10.6,10.6,10.6,10.6,10.6,10.6,10.6,10.6,10.6,10.6,10.6,10.6,10.6,10.6,10.6,10.6,10.6,10.6,10.6,10.6,10.6,10.6,10.6,10.6,10.6,10.6,10.6,10.6,10.6,10.6,10.6,10.6,10.6,10.6,10.6,10.6,10.6,10.6,10.6,10.6,10.6,10.6,10.6,10.6,10.6,10.6,10.6,10.6,10.6,10.6,10.6,10.6,10.6,10.6,10.6,10.6,10.8,10.8,10.8,10.8,10.8,10.8,10.8,10.8,10.8,10.8,10.8,10.8,10.8,10.8,10.8,10.8,10.8,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11.2,11.2,11.2,11.2,11.2,11.2,11.2,11.2,11.2,11.2,11.2,11.2,11.2,11.2,11.2,11.2,11.2,11.2,11.2,11.2,11.2,11.2,11.2,11.4,11.4,11.4,11.4,11.4,11.4,11.4,11.4,11.4,11.4,11.4,11.6,11.6,11.6,11.6,11.6,11.6,11.6,11.6,11.6,11.6,11.6,11.6,11.6,11.6,11.6,11.6,11.6,11.6,11.6,11.6,11.6,11.6,11.6,11.6,11.6,11.6,11.6,11.6,11.6,11.6,11.6,11.6,11.6,11.6,11.6,11.6,11.6,11.6,11.6,11.6,11.6,11.6,11.6,11.6,11.6,11.6,11.6,11.6,11.6,11.6,11.6,11.6,11.6,11.6,11.6,11.6,11.6,11.6,11.6,11.6,11.6,11.6,11.6,11.6,11.6,11.6,11.6,11.6,11.6,11.6,11.6,11.6,11.6,11.6,11.6,11.6,11.6,11.6,11.6,11.6,11.6,11.6,11.6,11.6,11.6,11.6,11.6,11.6,11.6,11.6,11.6,11.6,11.6,11.6,11.8,11.8,11.8,11.8,11.8,11.8,11.8,11.8,11.8,11.8,11.8,11.8,11.8,11.8,11.8,11.8,11.8,11.8,11.8,11.8,11.8,11.8,11.8,11.8,11.8,11.8,11.8,11.8,11.8,11.8,11.8,11.8,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12.2,12.2,12.2,12.2,12.2,12.2,12.2,12.2,12.2,12.2,12.2,12.2,12.2,12.2,12.2,12.2,12.2,12.2,12.2,12.2,12.2,12.2,12.2,12.2,12.2,12.2,12.2,12.2,12.2,12.2,12.2,12.2,12.2,12.2,12.2,12.2,12.2,12.2,12.2,12.4,12.4,12.4,12.4,12.4,12.4,12.4,12.4,12.4,12.4,12.4,12.4,12.4,12.4,12.4,12.4,12.4,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.6,12.8,12.8,12.8,12.8,12.8,12.8,12.8,12.8,12.8,12.8,12.8,12.8,12.8,12.8,12.8,12.8,12.8,12.8,12.8,12.8,12.8,12.8,12.8,12.8,12.8,12.8,12.8,12.8,12.8,12.8,12.8,12.8,12.8,12.8,12.8,12.8,12.8,12.8,12.8,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13.2,13.2,13.2,13.2,13.2,13.2,13.2,13.2,13.2,13.2,13.2,13.2,13.2,13.2,13.2,13.2,13.2,13.2,13.2,13.2,13.2,13.2,13.2,13.2,13.2,13.2,13.2,13.2,13.2,13.2,13.2,13.2,13.2,13.2,13.2,13.2,13.4,13.4,13.4,13.4,13.4,13.4,13.4,13.4,13.4,13.4,13.4,13.4,13.4,13.4,13.6,13.6,13.6,13.6,13.6,13.6,13.6,13.6,13.6,13.6,13.6,13.6,13.6,13.6,13.6,13.6,13.6,13.6,13.6,13.6,13.6,13.6,13.6,13.6,13.6,13.6,13.6,13.6,13.6,13.6,13.6,13.6,13.6,13.6,13.6,13.6,13.6,13.6,13.6,13.6,13.6,13.6,13.6,13.6,13.6,13.6,13.6,13.6,13.6,13.6,13.6,13.6,13.6,13.6,13.6,13.6,13.6,13.6,13.6,13.6,13.6,13.6,13.6,13.6,13.6,13.6,13.6,13.6,13.6,13.6,13.6,13.6,13.6,13.6,13.6,13.6,13.6,13.6,13.6,13.6,13.6,13.6,13.6,13.6,13.6,13.6,13.6,13.6,13.6,13.6,13.6,13.6,13.6,13.6,13.6,13.6,13.8,13.8,13.8,13.8,13.8,13.8,13.8,13.8,13.8,13.8,13.8,13.8,13.8,13.8,13.8,13.8,13.8,13.8,13.8,13.8,13.8,13.8,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14.2,14.2,14.2,14.2,14.2,14.2,14.2,14.2,14.2,14.2,14.2,14.2,14.2,14.2,14.2,14.2,14.2,14.2,14.2,14.2,14.2,14.2,14.2,14.2,14.2,14.2,14.2,14.2,14.2,14.2,14.2,14.2,14.2,14.2,14.2,14.2,14.2,14.2,14.2,14.2,14.2,14.2,14.2,14.2,14.2,14.2,14.2,14.2,14.2,14.2,14.2,14.2,14.2,14.4,14.4,14.4,14.4,14.4,14.4,14.4,14.4,14.4,14.4,14.6,14.6,14.6,14.6,14.6,14.6,14.6,14.6,14.6,14.6,14.6,14.6,14.6,14.6,14.6,14.6,14.6,14.6,14.6,14.6,14.6,14.6,14.6,14.6,14.6,14.6,14.6,14.6,14.6,14.6,14.6,14.6,14.6,14.6,14.6,14.6,14.6,14.6,14.6,14.6,14.6,14.6,14.6,14.6,14.6,14.6,14.6,14.6,14.6,14.6,14.6,14.6,14.6,14.6,14.6,14.6,14.6,14.6,14.6,14.6,14.6,14.6,14.6,14.6,14.6,14.6,14.6,14.6,14.6,14.6,14.6,14.6,14.6,14.6,14.6,14.6,14.6,14.6,14.6,14.6,14.6,14.6,14.6,14.6,14.6,14.6,14.6,14.6,14.6,14.6,14.6,14.6,14.6,14.6,14.6,14.8,14.8,14.8,14.8,14.8,14.8,14.8,14.8,14.8,14.8,14.8,14.8,14.8,14.8,14.8,14.8,14.8,14.8,14.8,14.8,14.8,14.8,14.8,14.8,14.8,14.8,14.8,14.8,14.8,14.8,14.8,14.8,14.8,14.8,14.8,14.8,14.8,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15.2,15.2,15.2,15.2,15.2,15.2,15.2,15.2,15.2,15.2,15.2,15.2,15.2,15.2,15.2,15.2,15.2,15.2,15.2,15.2,15.2,15.2,15.2,15.2,15.2,15.2,15.2,15.2,15.2,15.2,15.2,15.2,15.2,15.2,15.2,15.2,15.2,15.2,15.2,15.2,15.2,15.2,15.2,15.2,15.2,15.2,15.2,15.4,15.4,15.4,15.4,15.4,15.4,15.4,15.4,15.4,15.4,15.4,15.4,15.4,15.4,15.4,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.6,15.8,15.8,15.8,15.8,15.8,15.8,15.8,15.8,15.8,15.8,15.8,15.8,15.8,15.8,15.8,15.8,15.8,15.8,15.8,15.8,15.8,15.8,15.8,15.8,15.8,15.8,15.8,15.8,15.8,15.8,15.8,15.8,15.8,15.8,15.8,15.8,15.8,15.8,15.8,15.8,15.8,15.8,15.8,15.8,15.8,15.8,15.8,15.8,15.8,15.8,15.8,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16.2,16.2,16.2,16.2,16.2,16.2,16.2,16.2,16.2,16.2,16.2,16.2,16.2,16.2,16.2,16.2,16.2,16.2,16.2,16.2,16.2,16.2,16.2,16.2,16.2,16.2,16.2,16.2,16.2,16.2,16.2,16.2,16.2,16.2,16.2,16.2,16.2,16.2,16.2,16.2,16.2,16.2,16.2,16.2,16.2,16.2,16.2,16.2,16.2,16.2,16.2,16.2,16.2,16.2,16.2,16.2,16.2,16.2,16.4,16.4,16.4,16.4,16.4,16.4,16.4,16.4,16.4,16.4,16.4,16.4,16.4,16.4,16.4,16.4,16.4,16.4,16.4,16.4,16.4,16.4,16.4,16.4,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.6,16.8,16.8,16.8,16.8,16.8,16.8,16.8,16.8,16.8,16.8,16.8,16.8,16.8,16.8,16.8,16.8,16.8,16.8,16.8,16.8,16.8,16.8,16.8,16.8,16.8,16.8,16.8,16.8,16.8,16.8,16.8,16.8,16.8,16.8,16.8,16.8,16.8,16.8,16.8,16.8,16.8,16.8,16.8,16.8,16.8,16.8,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17.2,17.2,17.2,17.2,17.2,17.2,17.2,17.2,17.2,17.2,17.2,17.2,17.2,17.2,17.2,17.2,17.2,17.2,17.2,17.2,17.2,17.2,17.2,17.2,17.2,17.2,17.2,17.2,17.2,17.2,17.2,17.2,17.2,17.2,17.2,17.2,17.2,17.2,17.2,17.2,17.2,17.2,17.2,17.2,17.4,17.4,17.4,17.4,17.4,17.4,17.4,17.4,17.4,17.4,17.4,17.4,17.4,17.4,17.4,17.4,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.6,17.8,17.8,17.8,17.8,17.8,17.8,17.8,17.8,17.8,17.8,17.8,17.8,17.8,17.8,17.8,17.8,17.8,17.8,17.8,17.8,17.8,17.8,17.8,17.8,17.8,17.8,17.8,17.8,17.8,17.8,17.8,17.8,17.8,17.8,17.8,17.8,17.8,17.8,17.8,17.8,17.8,17.8,17.8,17.8,17.8,17.8,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18.2,18.2,18.2,18.2,18.2,18.2,18.2,18.2,18.2,18.2,18.2,18.2,18.2,18.2,18.2,18.2,18.2,18.2,18.2,18.2,18.2,18.2,18.2,18.2,18.2,18.2,18.2,18.2,18.2,18.2,18.2,18.2,18.2,18.2,18.2,18.2,18.2,18.2,18.2,18.2,18.2,18.2,18.2,18.2,18.2,18.2,18.2,18.2,18.2,18.4,18.4,18.4,18.4,18.4,18.4,18.4,18.4,18.4,18.4,18.4,18.4,18.4,18.4,18.4,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.6,18.8,18.8,18.8,18.8,18.8,18.8,18.8,18.8,18.8,18.8,18.8,18.8,18.8,18.8,18.8,18.8,18.8,18.8,18.8,18.8,18.8,18.8,18.8,18.8,18.8,18.8,18.8,18.8,18.8,18.8,18.8,18.8,18.8,18.8,18.8,18.8,18.8,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19.2,19.2,19.2,19.2,19.2,19.2,19.2,19.2,19.2,19.2,19.2,19.2,19.2,19.2,19.2,19.2,19.2,19.2,19.2,19.2,19.2,19.2,19.2,19.2,19.2,19.2,19.2,19.2,19.2,19.2,19.2,19.2,19.2,19.2,19.2,19.2,19.2,19.4,19.4,19.4,19.4,19.4,19.4,19.4,19.4,19.4,19.4,19.4,19.4,19.4,19.4,19.4,19.4,19.4,19.4,19.4,19.6,19.6,19.6,19.6,19.6,19.6,19.6,19.6,19.6,19.6,19.6,19.6,19.6,19.6,19.6,19.6,19.6,19.6,19.6,19.6,19.6,19.6,19.6,19.6,19.6,19.6,19.6,19.6,19.6,19.6,19.6,19.6,19.6,19.6,19.6,19.6,19.6,19.6,19.6,19.6,19.6,19.6,19.6,19.6,19.6,19.6,19.6,19.6,19.6,19.6,19.6,19.6,19.6,19.6,19.6,19.6,19.6,19.6,19.6,19.6,19.6,19.6,19.6,19.6,19.6,19.6,19.6,19.6,19.6,19.6,19.6,19.6,19.6,19.6,19.6,19.6,19.6,19.6,19.6,19.6,19.6,19.6,19.6,19.6,19.6,19.6,19.6,19.6,19.6,19.6,19.6,19.6,19.6,19.6,19.6,19.6,19.6,19.6,19.6,19.8,19.8,19.8,19.8,19.8,19.8,19.8,19.8,19.8,19.8,19.8,19.8,19.8,19.8,19.8,19.8,19.8,19.8,19.8,19.8,19.8,19.8,19.8,19.8,19.8,19.8,19.8,19.8,19.8,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.4,20.4,20.4,20.4,20.4,20.4,20.4,20.6,20.6,20.6,20.6,20.6,20.6,20.6,20.6,20.6,20.6,20.6,20.6,20.6,20.6,20.6,20.6,20.6,20.6,20.6,20.6,20.6,20.6,20.6,20.6,20.6,20.6,20.6,20.6,20.6,20.6,20.6,20.6,20.6,20.6,20.6,20.6,20.6,20.6,20.6,20.6,20.6,20.6,20.6,20.6,20.6,20.6,20.6,20.6,20.6,20.6,20.6,20.6,20.6,20.6,20.6,20.6,20.6,20.6,20.6,20.6,20.6,20.8,20.8,20.8,20.8,20.8,20.8,20.8,20.8,20.8,20.8,20.8,20.8,20.8,20.8,20.8,20.8,20.8,20.8,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21.2,21.2,21.2,21.2,21.2,21.2,21.2,21.2,21.2,21.2,21.2,21.2,21.2,21.2,21.2,21.2,21.2,21.4,21.4,21.4,21.4,21.4,21.4,21.4,21.4,21.4,21.6,21.6,21.6,21.6,21.6,21.6,21.6,21.6,21.6,21.6,21.6,21.6,21.6,21.6,21.6,21.6,21.6,21.6,21.6,21.6,21.6,21.6,21.6,21.6,21.6,21.6,21.6,21.6,21.6,21.6,21.6,21.6,21.6,21.8,21.8,21.8,21.8,21.8,21.8,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22.2,22.2,22.2,22.2,22.2,22.2,22.2,22.2,22.2,22.4,22.4,22.4,22.4,22.4,22.4,22.6,22.6,22.6,22.6,22.6,22.6,22.6,22.6,22.6,22.6,22.8,22.8,22.8,22.8,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23.2,23.2,23.2,23.4,23.4,23.6,23.6,23.6,23.6,23.6,23.6,23.6,23.6,23.6,23.6,23.6,23.6,23.6,23.6,23.6,23.6,23.6,23.8,23.8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 91,91,91,91,91,49,91,49,91,91,91,49,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,49,91,91,91,91,49,91,91,91,91,91,91,91,91,91,91,91,91,91,91,92,91,91,92,92,91,91,49,92,92,91,49,49,49,91,91,91,91,91,91,92,49,91,91,92,92,92,91,91,49,49,91,91,91,91,92,92,92,92,92,92,92,92,91,91,92,49,49,91,91,91,91,91,91,91,92,92,92,235,49,91,91,92,91,49,49,49,49,49,49,49,49,49,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,92,92,92,92,92,92,92,92,92,92,92,92,49,91,91,91,91,91,92,92,92,49,49,49,49,91,91,91,91,91,91,91,91,91,91,91,91,92,92,92,92,92,92,92,92,235,49,49,49,49,91,91,91,91,49,91,91,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,92,92,92,92,92,92,92,92,235,92,91,91,91,92,49,49,49,49,91,91,91,91,92,92,92,92,92,92,92,92,49,49,49,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,92,92,92,92,92,92,92,92,92,92,92,49,49,49,49,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,92,92,92,91,49,91,92,92,92,92,92,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,49,91,91,91,91,92,92,92,49,49,49,49,49,49,49,91,91,91,91,91,91,91,91,91,91,91,91,91,92,92,92,92,92,92,49,49,49,49,49,49,49,49,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,92,92,92,92,92,92,92,92,92,49,49,49,49,49,49,49,49,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,92,92,92,92,92,92,92,49,49,49,49,49,49,91,91,91,91,91,92,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,235,235,49,49,49,91,91,91,91,92,49,49,49,91,91,91,91,91,91,91,92,91,91,49,49,49,49,49,49,49,91,91,91,91,91,91,91,91,91,91,91,91,91,92,92,92,49,49,49,91,91,91,92,92,92,49,91,92,92,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,235,49,91,49,49,49,49,49,91,91,91,91,91,91,91,91,91,91,92,92,92,49,49,49,49,91,91,91,91,91,91,91,91,91,91,91,235,49,49,49,49,49,49,91,91,91,91,91,91,91,91,91,91,91,49,49,49,49,91,235,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,235,49,49,91,91,91,49,49,91,91,91,91,91,91,49,49,49,91,91,91,91,91,91,91,91,92,92,92,92,49,49,91,91,91,91,91,92,49,49,49,49,49,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,92,92,92,92,92,92,92,92,92,92,49,91,91,91,49,49,91,91,91,91,92,92,92,49,49,49,91,91,91,91,91,91,91,91,91,92,92,92,92,92,92,235,49,91,91,92,235,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,49,49,91,92,49,49,91,91,91,91,49,49,49,91,91,91,91,91,91,91,91,92,92,91,91,91,91,91,91,91,92,91,91,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,235,49,91,49,49,91,91,91,91,91,91,91,92,49,91,91,91,91,91,91,91,92,92,92,91,49,49,91,91,91,91,91,91,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,49,91,91,49,91,91,91,91,91,91,91,49,49,49,91,91,91,91,91,91,91,91,91,92,92,92,49,49,91,91,91,92,92,49,91,91,91,49,49,49,49,49,49,49,49,49,49,49,49,49,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,92,92,92,92,92,92,92,92,92,92,92,92,92,91,92,91,49,49,49,91,91,91,91,91,91,91,91,49,49,49,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,92,92,49,49,91,91,91,91,91,92,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,235,91,49,49,91,91,91,49,49,91,91,91,91,91,91,91,91,91,92,49,49,49,49,49,49,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,92,92,92,49,49,49,49,91,91,91,91,91,91,91,92,49,91,91,91,91,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,91,91,91,92,92,49,91,91,91,91,91,91,91,91,91,92,92,49,49,49,49,49,49,49,49,49,91,91,91,91,91,91,91,91,91,91,92,92,92,92,49,49,49,91,91,91,91,91,91,91,91,91,91,91,91,92,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,91,91,91,49,91,91,91,91,91,91,91,91,91,92,92,92,92,49,49,49,49,49,49,91,91,91,91,91,91,91,91,91,91,91,91,91,91,92,92,49,49,49,49,49,91,91,91,91,91,92,91,91,92,49,49,49,49,49,49,49,49,49,49,49,49,49,49,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,92,92,92,92,92,92,49,49,49,49,49,91,49,49,91,91,91,91,91,91,91,91,91,92,92,49,49,91,91,91,91,91,91,92,92,235,91,49,49,49,91,91,91,91,91,91,91,91,91,92,91,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,235,49,49,91,91,91,92,49,49,49,91,91,91,91,91,91,92,92,92,92,49,49,49,49,49,49,49,49,49,49,49,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,92,92,92,92,92,91,49,49,91,91,91,91,92,92,91,91,49,49,49,49,49,49,49,49,49,49,49,49,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,235,49,49,91,91,49,49,91,91,91,91,91,91,91,92,49,49,49,49,91,91,91,91,91,91,91,91,91,91,91,91,91,91,92,92,92,49,49,49,49,91,91,91,91,91,91,91,91,91,91,92,92,91,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,235,235,235,235,235,49,49,91,91,91,91,91,91,49,49,91,91,91,91,92,49,49,49,49,49,49,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,92,92,92,92,92,92,92,92,92,92,49,91,91,91,91,91,91,91,91,92,92,92,91,92,91,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,91,92,92,49,49,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,92,49,49,49,49,49,49,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,92,92,92,92,92,92,49,49,49,49,91,91,91,91,91,91,92,235,49,49,91,91,91,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,91,49,49,91,91,91,91,91,91,92,49,49,49,91,91,91,91,91,91,91,91,91,91,91,92,91,49,49,49,49,49,49,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,92,92,92,92,92,92,92,92,49,49,91,91,91,91,91,91,91,91,91,91,91,91,92,92,92,49,49,91,91,91,92,92,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,235,92,91,91,91,91,92,92,92,49,49,49,91,91,91,91,91,91,49,49,49,49,49,49,49,49,49,49,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,92,92,92,92,92,92,49,91,91,91,91,91,91,91,92,92,92,92,49,49,91,91,92,92,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,235,235,49,91,91,91,91,91,49,49,49,49,91,91,91,91,91,91,91,92,92,92,49,49,49,49,49,49,49,49,49,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,92,92,92,92,92,49,49,91,91,91,91,91,91,91,91,92,235,49,49,91,91,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,91,91,91,91,49,49,49,49,91,91,91,91,91,91,91,92,92,49,49,49,49,49,49,91,91,91,91,91,91,91,91,91,91,91,91,92,92,92,92,92,92,92,92,92,49,49,49,49,49,91,91,91,91,91,91,91,91,91,91,91,92,92,92,91,92,235,91,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,235,235,49,49,49,49,91,91,49,49,49,49,91,91,91,91,91,91,91,91,91,91,92,92,92,92,49,49,49,49,49,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,92,92,92,92,92,92,49,49,49,49,91,91,91,91,91,91,91,91,91,92,91,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,235,235,235,235,49,49,91,91,92,92,49,91,91,91,91,91,92,92,92,91,49,49,49,49,49,49,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,92,92,49,49,91,91,91,91,91,49,49,91,91,92,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,235,49,91,91,91,49,49,91,91,91,91,91,91,91,91,92,92,92,92,49,49,49,49,49,91,91,91,91,91,91,91,91,91,91,91,91,91,91,92,92,92,92,49,49,91,91,91,91,91,91,91,91,91,92,92,92,91,91,91,91,91,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,235,91,91,91,92,49,49,49,91,91,91,91,91,92,92,49,49,49,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,92,92,92,92,49,91,91,91,91,91,91,92,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,91,91,91,49,49,49,49,91,91,91,91,91,91,91,92,92,92,49,49,49,49,49,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,92,92,92,49,49,91,91,91,91,91,49,49,49,49,49,49,49,49,49,49,49,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,92,92,92,92,92,92,92,92,92,92,92,92,91,49,91,91,91,49,91,91,91,91,91,91,91,91,91,92,92,49,49,91,91,91,92,91,91,91,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,92,92,92,92,92,92,92,235,91,91,91,91,91,91,92,49,49,49,91,91,91,91,91,91,91,92,92,91,91,91,92,92,92,49,49,49,49,49,49,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,92,92,92,92,92,91,91,91,49,91,91,91,91,91,49,49,49,49,49,49,49,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,92,92,92,92,92,92,92,92,91,91,92,92,92,49,91,91,91,49,91,91,91,91,49,49,91,91,91,91,91,91,91,91,91,91,92,91,91,49,49,49,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,92,91,49,91,49,91,49,91,91,91,91,91,91,91,91,91,91,91,91,92,92,92,235,49,92,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,92, 91,91,91,49,91,49,91,49,91,91,91,49,91,91,91,91,91,91,91,49,91,91,91,91,92,91,91,91,91,91,91,49,92,92,91,91,49,49,91,91,91,91,91,49,92,91,91,91,91,91,91,92,91,91,92,91,92,92,91,92,91,91,91,49,91,91,92,91,91,91,91,92,91,91,91,91,91,91,91,92,91,91,91,91,92,91,91,91,49,92,91,91,92,92,91,91,49,91,91,91,91,91,91,92,49,91,91,49,92,91,49,91,92,49,91,49,49,49,91,91,91,91,49,49,91,91,91,91,91,91,92,91,91,91,91,91,91,91,91,91,91,91,49,92,49,91,91,91,49,92,92,92,92,91,92,92,92,92,92,91,91,92,91,91,91,91,92,92,91,49,49,49,91,91,91,91,91,91,91,91,49,91,91,91,91,92,92,92,92,91,92,92,91,49,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,49,49,49,91,49,92,92,91,91,49,49,91,91,91,91,91,49,91,92,92,91,91,91,91,91,91,91,91,91,91,49,91,91,92,91,91,91,91,91,91,91,92,49,91,91,91,91,92,92,49,92,91,91,91,92,49,91,91,91,91,91,91,91,91,49,91,91,235,92,92,92,49,49,235,91,91,91,91,49,91,91,91,91,91,91,91,91,49,91,91,92,92,92,92,91,91,91,92,91,92,92,92,91,91,49,91,91,91,91,91,91,92,91,91,91,91,91,91,91,91,91,91,91,92,91,91,91,91,91,92,92,92,92,91,91,49,91,92,91,49,91,91,91,49,49,49,91,91,91,91,91,92,91,91,49,49,91,49,49,92,49,49,49,49,49,49,91,91,91,91,91,92,49,91,91,91,91,91,91,91,49,91,49,91,91,91,91,91,92,49,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,92,49,91,91,91,91,91,49,91,92,92,92,92,92,92,92,91,92,92,92,92,92,92,92,92,49,91,91,91,91,91,92,92,91,49,49,49,49,49,49,91,91,91,49,91,49,91,91,91,92,49,91,91,49,91,92,92,92,92,49,49,49,49,92,235,49,91,91,91,91,91,91,91,91,92,91,91,91,91,91,91,91,91,91,91,92,92,91,91,91,92,92,92,92,91,49,49,91,49,49,49,49,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,92,92,92,92,92,92,49,49,49,92,91,91,91,91,49,91,91,92,49,49,49,49,92,91,91,91,49,49,49,49,91,49,49,49,91,91,49,49,49,91,91,49,49,49,49,91,49,49,49,49,49,49,49,49,49,91,91,91,91,91,91,91,91,91,49,91,91,91,49,91,91,49,91,91,91,91,91,91,91,91,91,91,91,91,91,92,91,91,91,91,91,91,49,91,91,91,91,91,92,91,91,91,91,91,91,49,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,92,91,91,91,49,49,92,92,92,92,91,91,91,91,92,92,92,92,92,92,92,92,92,92,92,92,92,91,49,91,49,91,91,91,91,91,92,91,91,49,91,49,92,92,91,91,91,91,49,91,49,49,91,91,49,91,49,91,92,91,91,91,91,91,91,91,49,91,91,91,91,49,92,91,49,49,91,91,91,92,91,91,91,91,91,91,49,49,91,49,49,49,91,49,49,92,92,49,49,49,49,49,49,49,49,49,49,91,92,91,91,91,91,91,49,91,91,91,91,91,92,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,92,92,91,91,92,92,92,92,91,92,92,92,92,92,235,49,91,49,91,49,91,49,91,91,91,92,91,91,91,91,91,91,92,92,92,49,92,49,49,91,91,91,49,91,91,91,92,91,91,91,235,49,49,49,49,49,49,91,91,91,92,91,91,91,91,91,91,91,49,49,91,49,91,235,49,49,49,49,49,49,91,91,91,49,91,235,49,49,49,91,49,49,49,49,49,91,49,91,91,91,91,91,91,91,91,91,91,92,92,92,92,91,91,91,92,91,91,91,91,91,91,91,91,49,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,92,92,91,91,91,92,92,92,91,91,92,92,92,92,92,92,92,92,92,92,49,49,49,91,91,91,91,49,91,91,91,91,91,91,49,49,49,91,92,91,91,91,91,91,91,49,92,92,92,49,49,91,91,91,91,91,92,91,91,92,49,49,91,91,92,91,91,91,91,91,91,91,49,91,91,91,91,91,91,91,91,92,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,49,49,91,92,92,92,92,92,92,92,91,91,91,91,49,49,91,91,91,91,92,92,92,49,49,91,91,92,91,91,91,91,91,91,91,92,92,91,92,92,92,235,49,91,91,92,49,49,49,49,49,49,49,49,49,49,91,92,92,91,49,49,49,49,49,49,49,49,49,49,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,49,91,91,49,91,91,92,92,92,92,49,91,91,91,91,91,91,91,49,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,92,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,92,92,91,91,92,92,92,92,92,92,92,92,92,49,92,92,92,92,92,91,92,92,92,92,92,92,92,92,92,92,49,49,91,92,49,49,91,91,91,91,49,49,91,91,91,91,91,91,91,91,91,92,92,91,91,49,91,91,91,91,92,91,91,49,49,91,49,49,49,91,91,49,49,49,49,49,49,49,91,91,91,49,91,91,49,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,92,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,92,92,91,91,91,92,92,92,92,92,92,92,92,49,49,91,49,49,91,91,92,91,91,91,91,92,49,91,91,91,91,91,91,91,92,92,92,91,91,49,91,91,91,91,91,91,49,49,92,49,49,49,49,49,49,91,49,49,92,49,91,49,49,91,49,49,49,49,49,49,49,91,91,91,92,91,91,91,91,91,91,91,91,91,91,91,91,91,49,92,91,91,91,91,91,91,91,91,91,91,91,91,91,49,91,92,91,91,91,91,49,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,92,92,92,92,91,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,49,91,91,49,91,91,91,91,91,91,91,49,91,49,91,91,91,91,91,91,91,91,91,91,92,92,49,49,91,91,91,92,92,91,91,91,91,49,49,49,49,49,91,91,49,49,49,49,49,49,91,91,91,91,91,91,91,91,91,49,91,91,91,91,92,92,91,91,91,91,91,91,49,91,91,91,49,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,49,91,91,92,92,92,92,92,49,92,92,91,91,91,49,91,49,49,91,91,91,91,91,91,91,91,49,49,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,49,92,49,49,91,92,91,91,91,92,49,49,49,49,49,49,49,49,91,49,49,49,91,49,91,91,49,235,92,91,91,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,91,91,92,92,91,91,91,91,91,49,91,91,91,91,49,91,91,91,91,92,92,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,49,91,91,49,91,91,91,92,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,49,92,92,92,92,92,92,92,92,92,92,91,91,91,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,91,92,49,49,91,91,91,49,49,91,91,91,91,91,91,91,91,91,91,49,49,49,49,49,49,91,91,91,91,92,91,91,91,91,91,91,91,91,91,91,91,91,91,92,92,92,91,49,91,49,91,91,91,91,91,91,91,92,49,91,91,91,91,49,49,49,49,49,49,91,49,49,49,49,91,49,49,49,49,49,49,91,91,91,91,91,91,91,91,91,91,91,91,91,91,49,92,92,91,91,91,91,91,92,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,91,91,91,91,92,92,49,91,49,91,91,91,91,91,91,91,92,92,49,49,91,92,49,49,49,49,49,91,91,91,91,91,91,91,91,91,91,92,92,92,92,49,49,49,91,91,91,91,91,91,91,91,91,91,91,91,92,49,49,49,49,49,49,49,49,49,49,49,49,49,235,92,92,91,49,91,49,49,49,49,49,49,49,49,49,49,49,91,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,91,91,91,91,91,91,91,91,91,91,91,91,91,91,49,91,91,91,91,91,91,91,49,49,92,91,91,91,91,49,91,91,92,91,91,91,91,91,49,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,92,92,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,92,92,92,92,91,91,91,91,49,92,92,92,92,92,92,92,92,92,92,91,92,92,92,92,92,92,92,91,91,91,49,91,91,91,91,91,91,91,91,91,92,92,92,49,49,49,91,49,91,49,92,91,91,91,91,91,91,91,91,91,91,91,91,91,92,92,49,91,49,49,49,91,91,91,91,91,49,91,91,92,49,49,92,49,49,49,49,92,49,49,49,49,49,49,91,91,91,49,91,91,91,91,91,49,91,91,91,91,91,49,91,91,91,92,92,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,49,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,92,92,92,92,92,92,49,49,49,49,49,91,49,49,91,91,91,91,92,91,91,91,91,91,92,49,49,91,91,91,91,91,91,92,92,49,91,49,49,49,49,91,91,91,91,91,91,91,91,92,91,49,91,49,92,49,49,49,49,49,91,49,49,49,92,92,91,91,49,91,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,91,91,91,91,91,91,91,91,49,92,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,235,92,91,91,91,91,91,91,91,91,91,91,91,91,49,92,235,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,49,91,91,91,91,92,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,49,49,92,92,92,92,91,91,91,92,92,92,92,92,92,92,92,92,91,92,91,92,92,92,92,92,92,92,92,92,92,92,92,92,92,91,92,91,91,92,92,92,92,92,92,92,92,92,92,92,92,235,49,49,91,91,91,92,235,49,49,91,91,91,91,91,91,92,92,92,92,49,49,49,49,91,91,49,49,49,49,49,91,91,91,91,49,91,91,92,91,91,91,92,91,91,91,91,91,91,91,91,91,91,91,91,91,92,92,92,91,49,49,91,91,91,235,92,92,91,91,91,49,49,91,49,49,49,91,49,49,49,49,91,91,91,91,91,92,49,49,91,91,91,91,91,91,91,92,92,92,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,92,91,91,91,91,91,91,91,91,91,91,91,91,91,92,92,92,91,92,91,92,92,92,92,92,92,92,92,92,91,49,49,92,91,49,49,92,91,92,91,91,91,91,92,49,49,49,49,91,91,91,91,91,91,91,91,91,91,91,91,91,91,92,92,92,49,49,49,49,91,91,91,91,91,91,91,91,91,91,92,91,91,49,49,49,91,49,91,91,49,91,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,91,91,91,91,91,92,92,91,91,91,91,91,91,49,91,91,91,49,91,91,91,91,91,91,49,91,91,91,91,92,92,92,92,235,92,49,91,91,91,91,91,91,91,91,91,91,91,91,92,92,91,91,91,91,91,91,91,91,91,91,91,49,91,91,91,91,91,91,91,91,91,91,49,91,91,91,91,92,92,91,91,91,91,91,91,91,91,91,91,92,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,49,92,92,91,91,91,49,91,92,92,92,92,92,92,92,92,92,92,92,92,91,91,91,92,49,91,91,92,92,92,92,92,92,92,92,92,92,92,91,92,92,92,92,92,92,92,92,92,92,92,92,91,49,235,49,49,49,91,91,91,92,91,91,49,92,91,91,91,91,92,92,91,91,49,49,49,91,91,49,91,91,91,92,92,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,92,92,92,49,92,92,92,92,92,92,91,92,49,91,91,91,91,91,91,92,92,91,92,91,49,49,49,49,92,235,92,92,49,49,49,49,49,91,235,49,49,49,91,49,91,91,91,49,49,91,91,91,91,91,91,91,49,91,91,91,49,91,91,91,91,91,49,91,91,235,92,91,91,91,91,91,91,91,91,91,49,91,92,91,91,91,91,91,91,91,91,91,49,91,91,91,49,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,92,92,91,91,91,91,91,91,92,92,92,92,92,92,92,92,91,91,91,92,92,92,92,92,92,92,92,92,92,91,92,92,49,49,49,91,91,49,91,91,91,49,91,91,91,91,91,91,49,92,91,91,91,92,49,49,49,49,49,49,91,91,91,49,91,91,49,92,91,91,91,92,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,92,92,92,92,92,92,49,49,92,91,91,91,91,91,91,91,92,49,49,49,92,91,91,49,49,49,49,49,91,49,49,49,49,91,49,49,49,91,49,49,91,49,49,49,49,91,49,49,49,49,49,49,49,92,92,92,235,92,92,92,91,91,49,49,49,91,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,91,91,49,91,91,92,91,91,49,91,91,91,91,49,91,49,91,91,49,91,91,91,91,91,91,91,91,49,91,49,91,91,91,49,91,49,91,92,92,92,92,92,91,91,91,91,91,91,92,91,49,91,91,91,91,91,91,91,49,91,91,91,91,91,91,91,91,91,49,91,91,49,91,91,91,91,92,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,49,92,92,92,92,92,92,92,91,91,49,49,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,91,91,91,92,92,92,92,91,92,92,92,92,92,92,92,92,92,91,92,92,92,92,92,92,92,92,92,92,92,49,91,49,91,49,91,91,91,91,92,49,49,49,91,91,91,91,92,92,91,91,91,91,91,92,91,49,49,49,91,91,49,49,91,91,91,92,92,91,91,91,91,91,91,91,91,91,91,91,91,91,92,91,91,91,91,91,91,91,91,49,92,91,92,92,92,92,92,91,49,91,92,91,92,91,91,91,91,91,91,91,91,91,92,92,49,49,91,91,91,92,92,49,49,49,49,49,49,49,91,91,49,49,49,49,49,91,49,49,91,49,49,49,91,91,49,49,49,49,91,91,49,91,91,91,49,91,91,91,49,91,49,91,91,49,91,91,91,49,49,91,91,91,91,49,91,91,91,92,92,92,91,91,91,91,91,91,91,91,91,91,91,91,49,91,91,91,91,91,91,91,49,49,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,92,49,92,92,92,92,92,92,92,92,92,92,92,92,92,235,92,49,91,91,91,92,92,92,49,49,49,91,91,49,91,91,91,91,49,49,49,49,49,49,49,49,49,91,91,91,91,92,92,91,91,49,91,91,91,91,91,91,91,91,91,91,49,92,92,92,92,49,91,91,91,91,91,49,91,92,92,92,92,49,91,92,91,92,49,49,49,49,49,49,91,49,49,49,91,91,49,49,49,91,49,49,49,91,49,49,49,92,91,91,49,91,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,91,91,91,91,91,91,49,91,92,91,49,91,49,91,91,91,91,91,49,91,91,91,49,91,91,91,91,91,91,91,49,49,91,91,49,49,91,91,91,91,92,92,91,91,91,91,91,91,91,91,91,91,91,91,91,92,91,91,91,49,91,91,91,91,91,91,91,49,91,91,91,91,92,91,49,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,92,92,92,92,92,92,92,92,91,91,49,91,91,49,92,92,92,92,92,92,92,92,92,91,91,91,91,91,92,91,91,92,91,92,92,92,92,92,92,92,92,92,92,92,49,49,49,91,91,91,92,91,49,49,49,49,91,49,91,91,91,91,91,91,92,92,49,49,49,49,91,49,91,49,49,91,91,91,91,92,91,91,49,91,91,91,91,49,91,91,91,91,49,92,92,91,49,49,91,91,91,91,91,92,91,91,91,235,49,91,92,91,91,49,49,49,49,49,49,49,49,49,91,91,49,49,49,49,92,235,91,49,91,49,91,49,49,49,49,91,91,91,49,91,91,91,91,91,92,235,91,91,91,91,91,91,91,91,49,91,92,92,91,92,91,91,91,92,91,91,91,49,91,91,91,91,91,91,49,49,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,91,92,91,91,49,91,49,49,91,91,91,91,91,91,91,92,92,49,49,49,49,235,49,91,91,91,92,91,91,91,91,91,91,91,91,91,49,91,92,91,92,92,92,92,49,49,49,91,49,91,92,91,91,91,49,92,91,91,91,91,91,92,92,91,92,49,91,49,49,91,91,49,49,91,49,49,49,49,49,49,49,49,49,49,49,49,91,49,91,91,49,49,49,49,49,49,49,49,49,49,49,49,91,91,91,49,91,91,91,91,91,91,92,92,91,91,91,91,91,91,91,91,49,91,91,91,49,91,91,91,91,49,91,91,91,91,91,91,91,92,91,91,91,91,91,91,91,91,91,91,49,91,91,91,91,91,91,49,91,91,91,91,91,91,91,91,49,92,91,91,91,91,91,92,91,91,92,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,92,92,92,92,91,91,91,91,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,49,235,49,49,49,91,91,91,49,91,91,49,91,91,91,91,91,91,92,91,91,91,92,92,92,92,49,49,49,92,49,91,49,91,91,235,91,91,91,91,91,91,92,92,91,91,91,91,91,91,92,92,92,92,92,92,49,49,49,49,49,91,92,92,91,91,91,91,91,91,91,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,91,91,91,49,91,91,91,91,91,91,49,91,91,91,49,91,91,91,91,92,91,91,91,91,92,49,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,92,92,92,92,92,91,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,49,235,235,235,49,91,91,91,91,92,49,91,91,91,91,91,92,91,92,91,49,49,49,91,49,49,91,91,91,91,91,91,49,92,92,91,91,91,91,91,91,91,91,91,91,91,91,91,91,49,49,91,91,91,91,91,49,49,91,91,92,49,49,49,91,235,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,91,91,91,91,91,91,91,91,91,91,91,92,49,91,49,91,91,91,91,91,91,91,91,91,49,91,91,91,49,91,91,91,91,91,91,91,91,91,91,91,92,92,91,91,91,91,91,91,91,91,92,49,92,91,91,91,91,49,91,91,91,49,49,91,49,49,91,91,91,91,91,92,91,91,92,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,92,92,91,49,49,49,91,91,92,92,92,92,92,92,92,92,92,91,92,92,92,92,92,92,49,235,91,92,91,49,49,91,91,91,92,91,91,91,91,92,92,92,92,49,49,91,91,49,49,91,91,91,91,91,91,91,91,91,91,91,91,91,49,92,91,92,49,49,91,91,91,91,91,91,91,91,91,92,92,92,91,91,92,91,91,49,49,91,49,49,49,49,49,92,49,49,49,49,49,91,49,49,49,235,49,49,49,49,49,49,91,49,91,91,91,91,91,91,91,91,49,91,91,91,91,91,91,92,92,91,91,91,91,91,91,91,91,92,91,91,91,91,91,91,91,91,91,91,91,91,92,92,92,92,92,91,91,92,92,92,92,92,92,91,92,92,92,92,92,91,91,91,91,92,49,49,49,49,91,91,91,91,92,92,49,49,49,49,91,91,91,91,91,92,92,91,91,91,91,91,91,91,91,92,92,92,91,49,91,91,91,91,91,91,92,49,49,91,49,49,91,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,91,91,91,91,91,91,91,91,92,91,91,91,91,91,91,91,91,49,91,91,91,91,92,92,91,91,91,91,92,91,91,91,91,91,91,91,91,91,91,91,92,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,92,92,92,92,91,91,92,92,92,91,91,92,92,92,92,91,92,92,92,92,92,92,92,92,92,91,91,91,91,49,49,49,91,91,91,49,91,91,91,91,92,92,49,49,49,49,49,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,49,92,91,49,91,91,91,91,91,49,49,49,49,49,49,49,49,235,49,49,91,91,91,91,49,91,92,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,92,92,91,91,91,92,92,92,92,92,92,91,49,91,91,91,49,91,49,91,91,91,91,91,91,91,92,92,49,49,91,49,91,92,49,91,91,91,49,91,49,49,49,91,92,49,49,49,49,49,49,49,49,49,91,91,91,49,91,91,91,91,91,92,92,91,91,91,91,91,91,91,91,91,91,49,49,91,92,92,92,91,91,92,91,91,91,91,91,91,49,91,91,91,91,91,91,91,91,92,91,49,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,92,49,92,92,92,92,92,235,91,91,91,91,49,91,92,49,49,49,91,92,91,91,91,91,91,92,92,91,91,91,92,92,92,49,49,92,49,91,49,91,91,91,91,91,91,49,91,91,49,92,91,91,91,91,91,91,91,91,91,91,91,92,91,91,92,92,91,91,91,91,91,91,92,91,91,91,49,91,91,49,49,49,91,49,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,92,91,92,91,91,91,91,92,92,92,92,92,92,92,92,91,91,92,92,49,91,49,91,49,91,91,91,92,92,91,91,91,91,91,91,91,91,91,91,92,92,91,91,49,49,49,91,49,91,92,49,49,91,91,91,91,91,92,91,91,91,91,91,92,91,49,49,91,49,49,91,91,91,91,49,91,91,91,91,91,91,91,92,92,92,91,49,92,91,91,91,91,91,91,91,91,91,91,92,92,91,91,91,92, 'henkiloauto','Muu','henkiloauto','Joukkoliikenne','Muu','Muu','Muu','Muu','Joukkoliikenne','Muu','Muu','Muu','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','Joukkoliikenne','Joukkoliikenne','henkiloauto','Muu','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Muu','Muu','henkiloauto','Joukkoliikenne','Muu','Muu','Muu','Muu','henkiloauto','Muu','Muu','Muu','Muu','henkiloauto','Joukkoliikenne','Muu','henkiloauto','Joukkoliikenne','henkiloauto','henkiloauto','Joukkoliikenne','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','henkiloauto','Joukkoliikenne','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Muu','Muu','henkiloauto','henkiloauto','Muu','henkiloauto','Muu','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','Muu','henkiloauto','henkiloauto','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','henkiloauto','Joukkoliikenne','henkiloauto','henkiloauto','Joukkoliikenne','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Muu','henkiloauto','Joukkoliikenne','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Muu','Muu','Muu','Muu','henkiloauto','Joukkoliikenne','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Muu','henkiloauto','henkiloauto','Muu','henkiloauto','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Muu','Muu','Joukkoliikenne','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','henkiloauto','Joukkoliikenne','Joukkoliikenne','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','henkiloauto','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','Joukkoliikenne','Joukkoliikenne','Muu','Muu','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','Muu','henkiloauto','henkiloauto','Joukkoliikenne','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','henkiloauto','henkiloauto','Joukkoliikenne','henkiloauto','Joukkoliikenne','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','Joukkoliikenne','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','Joukkoliikenne','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','henkiloauto','henkiloauto','Muu','Muu','Muu','henkiloauto','Joukkoliikenne','Muu','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Joukkoliikenne','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Muu','Muu','Muu','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','henkiloauto','henkiloauto','Muu','Joukkoliikenne','Muu','Muu','Joukkoliikenne','Joukkoliikenne','Muu','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','henkiloauto','Joukkoliikenne','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','Muu','Joukkoliikenne','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Joukkoliikenne','henkiloauto','Muu','Joukkoliikenne','Muu','Joukkoliikenne','Joukkoliikenne','Muu','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','Muu','Muu','Muu','Muu','Joukkoliikenne','Joukkoliikenne','Muu','Joukkoliikenne','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','Muu','Muu','henkiloauto','Muu','henkiloauto','Muu','Muu','Muu','henkiloauto','henkiloauto','Muu','henkiloauto','Muu','Muu','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','Muu','henkiloauto','Joukkoliikenne','Muu','henkiloauto','henkiloauto','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','henkiloauto','Muu','Muu','Muu','henkiloauto','henkiloauto','Joukkoliikenne','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Muu','Muu','Muu','Muu','henkiloauto','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Muu','Muu','Muu','Muu','henkiloauto','Muu','Joukkoliikenne','Muu','henkiloauto','henkiloauto','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Muu','Muu','Muu','Muu','henkiloauto','Muu','Muu','Joukkoliikenne','henkiloauto','Muu','Joukkoliikenne','Muu','Muu','henkiloauto','Joukkoliikenne','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','henkiloauto','Joukkoliikenne','Muu','Muu','henkiloauto','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','Muu','Muu','henkiloauto','Joukkoliikenne','Muu','Muu','henkiloauto','Joukkoliikenne','henkiloauto','henkiloauto','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Muu','Muu','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','Joukkoliikenne','Muu','Muu','Muu','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','Muu','henkiloauto','henkiloauto','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','henkiloauto','Muu','henkiloauto','Muu','Joukkoliikenne','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Joukkoliikenne','Muu','Muu','Joukkoliikenne','henkiloauto','Joukkoliikenne','Muu','henkiloauto','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','Joukkoliikenne','henkiloauto','henkiloauto','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','Muu','Muu','henkiloauto','Muu','Muu','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','Muu','henkiloauto','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Muu','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','Muu','henkiloauto','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','henkiloauto','Muu','Muu','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','Muu','henkiloauto','Joukkoliikenne','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Joukkoliikenne','Muu','henkiloauto','henkiloauto','Muu','Muu','Muu','henkiloauto','henkiloauto','Joukkoliikenne','Muu','Muu','henkiloauto','henkiloauto','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Muu','Muu','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Muu','Joukkoliikenne','henkiloauto','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','henkiloauto','Muu','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','Muu','Muu','henkiloauto','henkiloauto','Joukkoliikenne','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Muu','henkiloauto','henkiloauto','Muu','Muu','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','Muu','Muu','Muu','henkiloauto','henkiloauto','Joukkoliikenne','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','henkiloauto','Muu','henkiloauto','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','henkiloauto','Joukkoliikenne','Muu','henkiloauto','Joukkoliikenne','henkiloauto','Muu','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Joukkoliikenne','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Muu','Muu','Muu','henkiloauto','Joukkoliikenne','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','henkiloauto','Muu','henkiloauto','henkiloauto','Joukkoliikenne','Muu','Muu','Muu','henkiloauto','henkiloauto','Joukkoliikenne','Muu','Muu','Muu','Joukkoliikenne','henkiloauto','henkiloauto','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','henkiloauto','Muu','Muu','Muu','henkiloauto','Joukkoliikenne','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','henkiloauto','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','henkiloauto','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','Joukkoliikenne','Muu','henkiloauto','Muu','henkiloauto','Joukkoliikenne','Joukkoliikenne','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Joukkoliikenne','henkiloauto','Muu','henkiloauto','henkiloauto','Joukkoliikenne','Muu','Muu','Muu','Joukkoliikenne','henkiloauto','henkiloauto','Joukkoliikenne','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Muu','Muu','Muu','Muu','henkiloauto','Muu','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Muu','Muu','henkiloauto','Joukkoliikenne','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','Muu','Muu','henkiloauto','Muu','Muu','henkiloauto','Muu','henkiloauto','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','Muu','Muu','henkiloauto','Joukkoliikenne','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','Muu','Muu','Muu','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','henkiloauto','Joukkoliikenne','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','henkiloauto','Joukkoliikenne','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Muu','henkiloauto','henkiloauto','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Muu','Muu','Muu','henkiloauto','henkiloauto','Joukkoliikenne','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Muu','henkiloauto','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','Joukkoliikenne','Muu','henkiloauto','henkiloauto','Muu','Muu','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Muu','Muu','Muu','Joukkoliikenne','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','henkiloauto','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','Muu','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Muu','henkiloauto','henkiloauto','henkiloauto','Muu','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','henkiloauto','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','Muu','Muu','henkiloauto','Joukkoliikenne','henkiloauto','Joukkoliikenne','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Muu','henkiloauto','henkiloauto','Muu','Joukkoliikenne','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','Muu','henkiloauto','henkiloauto','Muu','Muu','Muu','henkiloauto','Muu','henkiloauto','Muu','Joukkoliikenne','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Muu','Muu','Muu','henkiloauto','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','Joukkoliikenne','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','Muu','henkiloauto','henkiloauto','henkiloauto','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Muu','Muu','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','Muu','henkiloauto','Joukkoliikenne','Muu','Muu','Joukkoliikenne','henkiloauto','henkiloauto','Muu','henkiloauto','henkiloauto','henkiloauto','Muu','Muu','henkiloauto','Muu','henkiloauto','henkiloauto','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','Muu','henkiloauto','henkiloauto','Joukkoliikenne','Muu','Muu','Muu','Joukkoliikenne','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','henkiloauto','Muu','Muu','henkiloauto','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Muu','Muu','Muu','henkiloauto','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','Muu','henkiloauto','Muu','henkiloauto','Joukkoliikenne','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Muu','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','Muu','henkiloauto','henkiloauto','Muu','Muu','Joukkoliikenne','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','henkiloauto','Muu','Muu','Muu','Muu','Muu','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','henkiloauto','henkiloauto','henkiloauto','Muu','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','Joukkoliikenne','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Muu','Joukkoliikenne','henkiloauto','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','henkiloauto','henkiloauto','Muu','Muu','Muu','Muu','Muu','Muu','Joukkoliikenne','Joukkoliikenne','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Muu','Joukkoliikenne','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','Muu','henkiloauto','Joukkoliikenne','Joukkoliikenne','Muu','henkiloauto','henkiloauto','Joukkoliikenne','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','Muu','henkiloauto','Joukkoliikenne','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Muu','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','henkiloauto','Muu','Muu','Muu','henkiloauto','Muu','Joukkoliikenne','Joukkoliikenne','henkiloauto','henkiloauto','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Joukkoliikenne','Muu','Muu','Muu','Muu','Muu','Muu','Muu','henkiloauto', 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 ) 56,32,1 48,24 2,102,90,476,224 2,280,23,618,618,0,MIDM 2,410,45,443,851,0,MIDM 65535,52427,65534 [Cols,Rows] [Cols,Rows] [0,0,1,0] cols ['Klo','Mista','Mihin','Kulkutapa','Count'] 56,64,1 48,12 rows 1..5697 56,88,1 48,12 2,40,50,416,303,0,MIDM Klo [0,0.2,0.4,0.6,0.8,1,1.2,1.4,1.6,1.8,2,2.2,2.4,2.6,2.8,3,3.2,3.4,3.6,3.8,4,4.2,4.4,4.6,4.8,5,5.2,5.4,5.6,5.8,6,6.2,6.4,6.6,6.8,7,7.2,7.4,7.6,7.8,8,8.2,8.4,8.6,8.8,9,9.2,9.4,9.6,9.8,10,10.2,10.4,10.6,10.8,11,11.2,11.4,11.6,11.8,12,12.2,12.4,12.6,12.8,13,13.2,13.4,13.6,13.8,14,14.2,14.4,14.6,14.8,15,15.2,15.4,15.6,15.8,16,16.2,16.4,16.6,16.8,17,17.2,17.4,17.6,17.8,18,18.2,18.4,18.6,18.8,19,19.2,19.4,19.6,19.8,20,20.2,20.4,20.6,20.8,21,21.2,21.4,21.6,21.8,22,22.2,22.4,22.6,22.8,23,23.2,23.4,23.6,23.8] 56,224,1 48,12 2,40,50,416,303,0,MIDM HLT trips mdtable(Hlt2004_05,rows,cols,[Klo,Mista,Mihin,Kulkutapa]) 56,144,1 48,24 2,30,460,512,354 2,11,193,1143,303,0,MIDM [Kulkutapa,Mista] Trip activity var a:= sum(sum(Hlt_trips,mista),mihin); a:= if hour = round(klo-0.5) then a else 0; a:= sum(a,klo); if a= 0 then 1 else a 168,208,1 48,24 2,142,53,872,562,0,MIDM Graphtool:0 Distresol:10 Diststeps:1 Cdfresol:5 Cdfsteps:1 Symbolsize:6 Baroverlap:0 Linestyle:10 Frame:1 Grid:1 Ticks:1 Mesh:1 Scales:1 Rotation:45 Tilt:0 Depth:70 Frameauto:3 Showkey:1 Xminimum:0 Xmaximum:24 Yminimum:0 Ymaximum:120 Zminimum:1 Zmaximum:3 Xintervals:0 Yintervals:0 Includexzero:0 Includeyzero:0 Includezzero:0 Statsselect:[1, 1, 1, 1, 1, 0, 0, 0] Probindex:[5%, 25%, 50%, 75%, 95%] Arial, 8 [Hour,Kulkutapa] HLT trips by hour var ap:= array(Place,[Inhabitants1, Workplaces1, Workplaces1, Inhabitants1, Workplaces1]); ap:= ap/sum(ap,area1);{ap on painokerroin} var a:= si_pi(sum(Hlt_trips,klo),ap,Mista,area1,Municipality_info_hl); a:= si_pi(a,ap[area1=area2],Mihin,area2,Municipality_info_hl[area1=area2]); a:= a/sum(sum(a,Place),Place1) *sum(sum(sum(a,Place),Place1),hour) *Trip_activity/sum(Trip_activity,hour); a:= sum(sum(a,Place),Place1); array(mode1,[a[kulkutapa='henkiloauto'],0,a[kulkutapa='Joukkoliikenne']]) 272,144,1 48,24 2,527,15,488,832 2,45,68,434,442,0,MIDM Graphtool:0 Distresol:10 Diststeps:1 Cdfresol:5 Cdfsteps:1 Symbolsize:6 Baroverlap:0 Linestyle:10 Frame:1 Grid:1 Ticks:1 Mesh:1 Scales:1 Rotation:45 Tilt:0 Depth:70 Frameauto:1 Showkey:1 Xminimum:0 Xmaximum:25 Yminimum:0 Ymaximum:0.0225 Zminimum:1001 Zmaximum:1012 Xintervals:0 Yintervals:0 Includexzero:0 Includeyzero:0 Includezzero:0 Statsselect:[1, 1, 1, 1, 1, 0, 0, 0] Probindex:[5%, 25%, 50%, 75%, 95%] Arial, 4 [Area2,Area1] [Index Reg] 4.7.2006 ovh Kopioitiin trips by hour solmun lŠhdekoodi tŠhŠn. Vaihdettiin tŠhŠn solmun seuraavat: sipi-funktion parametrit: trips_place_munic = tpm ap = inhabitants municapility = mista area1 = are1 municipality_info = municipality_2006 municipality1 = mihin place_weight_by_hour*time_in_traffic = va5 NeljŠ viimeistŠ riviŠ jŠtettiin koodista huomiotta! Toimii!?! Inhabitants # Number of inhabitants by district in Jan 1st, 2006. Table(Area1)( 389,10.359K,9265,863,6684,4085,10.615K,737,2312,3318,12.916K,14.361K,8483,6736,4381,0,3957,2276,22.81K,6951,11.499K,7173,3489,7768,10.665K,19.295K,9961,7043,12.886K,12.538K,10.192K,4775,8294,12.488K,5325,8550,13.62K,6535,8690,3562,8422,7262,9898,11.8K,2578,5506,8034,11.33K,8478,9898,5500,3777,16.377K,9663,8305,8200,6705,8559,9109,28.318K,5905,7937,17.298K,15.658K,0,848,9,3496,8991,6035,3291,7704,8602,18.143K,15.035K,6043,8159,15.73K,15.057K,3270,2946,12.26K,9069,3512,6902,2673,5133,9313,9204,8457,17.947K,6353,6462,1966,5161,520,5365,606,3577,8545,6294,18.406K,13.634K,2115,4456,2548,105,4014,8113,183,5,1830,10.399K,4266,11.217K,4533,2784,1342,3947,7752,2717,5626,3546,9813,13.455K,3638,4734,13.821K,9499,0) 272,72,1 48,24 2,0,0,184,753,0,MIDM 2,489,294,416,303,0,MIDM 65535,52427,65534 Helsingin kaupungin tietokeskus: Helsingin seudun aluesarjat www.aluesarjat.fi Workplaces # The number of workplaces by district Table(Area1)( 23.894K,28.844K,6227,11.46K,9798,6390,4771,3018,1284,6659,8195,8960,17.766K,4184,12.672K,4232,8797,5226,8561,11.629K,3571,17.037K,2849,3602,3469,9525,2861,2476,3305,5571,17.35K,5016,1728,4239,1053,3709,5964,1673,849,1308,1604,2162,1287,8431,2242,975,720,1853,1668,2334,538,699,1596,1333,7414,1828,1070,7452,1394,3051,893,849,1463,1481,443,1723,4068,9201,6916,2818,6321,3340,1389,2487,7270,1709,690,2794,2389,1237,3399,3463,3694,1581,7038,3254,519,832,1336,1927,2510,4198,4122,309,1681,79,2301,478,1629,3254,2826,7822,5587,2206,1529,504,3285,1814,4254,3928,9509,2633,7034,275,1063,1958,1856,2519,232,1023,346,1808,478,1358,1605,308,2012,3644,794,0) 168,72,1 48,24 1,248,258,713,303,0,MIDM 2,583,35,416,303,1,MIDM 65535,52427,65534 SeutuCD 02, a CD ROM database about the Helsinki area. Select trip matrix Choice(Self,1) 56,96,1 48,24 [Formnode Select_trip_matrix1] 52425,39321,65535 [Hlt_trips_by_hour,Trips_by_hour] Public matrix ktluser 4. elota 2006 0:03 48,24 288,96,1 48,24 1,40,0,5,544,17 Bus matrix var e:= slice(Active_routes,Active_routes.i,route_(Active_routes)); index j:= [1]; e:= if j=1 then e else ''; e:= if e=null then '' else e; e:=Mirror(e,j)&','; var a:= findintext(from&'',e); var b:= findintext(to1&'',e); b:= if a=b then b+1 else b; e:= selecttext(e,a,b+3); slice(e,e.a,1)&slice(e,e.a,2) 392,240,1 48,24 2,102,90,476,420 2,113,84,850,413,0,MIDM [To1,From] Bus links var a:= etapit(Active_routes); a:= a&','&a[.etappi=a.etappi+1]; index row:= 1..size(sum(a,time_of_day1)); index col:= ['.Etappi','.I','Link']; a:= mdarraytotable(a,row,col); a:= a[col='Link']; index b:= unique(a,a.row); a:= a[.row=b]; if a=null then 'xxxx' else a 392,304,1 48,24 2,102,90,476,275 2,445,144,767,694,0,MIDM Time of day by time if time<2 then 'Night1' else if time<6 then 'Night2' else if time<9 then 'Morning' else if time<15 then 'Day' else if time<18 then 'Afternoon' else if time<21 then 'Evening1' else if time<23 then 'Evening2' else 'Night1' 168,216,1 48,24 2,0,-23,1025,666 2,7,10,215,666,0,MIDM 52425,39321,65535 Timely routes var a:= Choose_pub_matrix{scenario_input[input_var='Public matrix']}; a:= if a=1 then routes else if a=2 then all_bus_routes[r_t='Route'] else if a=3 then (if route_coverage[route_quality=all_bus_routes[r_t='Time']]=1 then all_bus_routes[r_t='Route'] else '') else 0 280,112,1 48,24 2,12,69,429,530,0,MIDM All bus routes index i:= 1..(size(bus_route_ends)+size(bus_routes_special))/2; var a:= Bus_route_ends[r_t='Route']; a:= Route_matrix[from=evaluate(selecttext(a,1,4)), to1=evaluate(selecttext(a,6,9))]; a:= if r_t='Route' then a else bus_route_ends; a:= concat(a,Bus_routes_special{[r_t='Route']},bus_route_ends,bus_routes_special,i); a:= if a=null then '' else a; a[.i=sortindex(textlength(a[r_t='Route']),a.i)] 168,112,1 48,24 2,25,100,1039,484,0,MIDM [R_t,I] Bus route ends This is a list of bus route endstops. Table(Self,R_t)( '1005,1025','A', '1001,1036','A', '1055,1056','B', '1058,1064','B', '1002,1026','B', '1002,1033','B', '1009,1001','C', '1001,1040','C', '1009,1010','C', '1026,1037','C', '1044,1049','C', '1002,1024','C', '1010,1022','C', '1007,1029','C', '1055,1053','C', '1058,1059','C', '1058,1060','C', '1058,1062','C', '1001,1039','C', '1001,1044','D', '1063,1064','D', '1010,1025','D', '1001,1039','D', '1006,1027','D', '1001,1120','B', '1001,1090','B', '1001,1092','C', '1119,1124','C', '1002,1126','C', '1058,1083','C', '1001,1123','C', '1002,1074','C', '1002,1099','D', '1001,1125','D', '1002,1068','D', '1002,1077','D', '1002,1079','D', '1002,1073','D', '1001,1097','D', '1001,1099','D', '1001,1102','D', '1001,1103','D', '1001,1111','D', '1001,1124','D', '1001,1127','D', '1001,1106','D', '1002,1075','D', '1002,1078','D', '1002,1106','D', '1069,1079','C', '1069,1075','C', '1082,1085','C', '1069,1075','C', '1083,1088','C', '1083,1073','C', '1091,1099','C', '1069,1078','D', '1102,1106','B', '1128,1127','B', '1126,1124','B', '1003,1025','E', '1002,1035','E', '1058,1031','E', '1058,1013','E', '1001,1047','E', '1042,1070','E', '1026,1067','E', '1111,1092','E', '1091,1094','E', '1092,1094','E', '1103,1105','E' ) ['item 1','item 2','item 3','item 4','item 5','item 6','item 7','item 8','item 9','item 10','item 11','item 12','item 13','item 14','item 15','item 16','item 17','item 18','item 19','item 20','item 21','item 22','item 23','item 24','item 25','item 26','item 27','item 28','item 29','item 30','item 31','item 32','item 33','item 34','item 35','item 36','item 37','item 38','item 39','item 40','item 41','item 42','item 43','item 44','item 45','item 46','item 47','item 48','item 49','item 50','item 51','item 52','item 53','item 54','item 55','item 56','item 57','item 58','item 59','item 60','item 61','item 62','item 63','item 64','item 65','item 66','item 67','item 68','item 69','item 70','item 71'] 56,48,1 48,24 2,0,-23,1024,665 2,0,0,257,665,0,MIDM 65535,52427,65534 [R_t,Bus_route_ends] [R_t,Bus_route_ends] Bus routes special This is a list of whole bus routes, i.e. full chains of areas that are covered by the route. This includes also other forms of public transportation, such as trains and trams. Table(Self,R_t)( '1026,1010,1002,1001,1005,1018,1019,1020,1023,1017,1025,1037,1036,1038,1039','A', '1055,1052,1020,1023,1021,1017,1015','A', '1058,1054,1056,1055,1052,1020,1023,1021,1017,1015,1012,1013,1027,1028','A', '1018,1019,1021,1022,1017,1025,1036,1037,1030,1031,1032','B', '1002,1011,1012,1019,1021,1023,1024,1042,1043,1044,1047,1048','B', '1001,1005,1018,1019,1020,1023,1017,1025,1036,1037,1038,1039,1040,1048','B', '1058,1054,1056,1059,1042,1024,1025,1016,1015,1014,1029,1028','B', '1063,1064,1065','B', '1008,1003,1002,1011,1012,1013','C', '1020,1023,1019,1021,1017,1015,1029,1031','C', '1004,1003,1002,1010,1026','C', '1004,1001,1002,1011,1012,1013,1014,1029,1030,1034,1035','C', '1018,1019,1020,1023,1024,1042,1043,1044,1047,1048,1046,1049','C', '1018,1019,1020,1023,1024,1042,1043,1045,1044,1047,1046,1049,1050','C', '1048,1049,1050','C', '1001,1005,1018,1019,1020,1023,1024,1042,1051','C', '1048,1047,1044,1045,1050,1051','C', '1010,1002,1001,1018,1019,1020,1052,1055,1056,1058,1057,1063,1064','C', '1010,1002,1001,1018,1019,1020,1052,1055,1056,1058,1059,1060,1062','C', '1001,1011,1012,1015,1017,1023,1020,1018,1005','C', '1001,1015,1017,1016,1029,1030,1034,1032,1102,1103','C', '1003,1002,1011,1012,1013,1027,1028,1031','C', '1008,1003,1004,1001,1005,1018,1020,1052,1055','C', '1007,1003,1004,1002,1001,1005,1018,1019,1021,1017','C', '1020,1021,1017,1015,1016,1036','C', '1004,1001,1002,1011,1012,1013','C', '1002,1011,1012,1013,1014,1029,1030,1034','C', '1055,1056,1042,1043,1041,1044','C', '1056,1054,1055','C', '1058,1057,1061','C', '1055,1054,1057,1058','C', '1058,1060,1062','C', '1058,1061,1060','C', '1024,1025,1037,1036,1030,1029,1028,1027','C', '1063,1062,1060,1045,1044','C', '1003,1002,1001,1005,1018,1019,1021,1012,1011,1002,1001,1005,1004,1007','D', '1001,1017,1015,1016,1029,1031,1081,1083,1086,1090,1091,1092,1095','D', '1001,1017,1037,1041,1044,1046,1049,1117,1113,1116,1115,1120,1122,1121,1124','D', '1005,1001,1002,1010,1011,1012,1013,1027,1028','D', '1001,1005,1018,1019,1021,1017,1015,1014','D', '1002,1011,1012,1013,1014,1029,1031,1032,1033','D', '1001,1011,1012,1013,1014,1029,1030','D', '1001,1011,1012,1013,1014,1029,1030,1034,1035','D', '1001,1005,1018,1020,1023,1024,1042','D', '1001,1005,1018,1019,1020,1023,1024,1042,1043,1041','D', '1001,1005,1018,1019,1020,1023,1017,1025,1036,1037,1041,1047,1048,1046','D', '1001,1005,1018,1019,1020,1023,1024,1042,1043,1045,1050,1049','D', '1042,1024,1025,1017,1015,1012,1013,1027,1067,1068,1070','A', '1001,1018,1019,1020,1023,1017,1025,1036,1037,1038,1040,1109,1112,1114,1115,1122,1120','B', '1044,1041,1037,1036,1038,1035,1030,1034,1032,1082,1083','B', '1002,1010,1067,1068,1070','C', '1103,1102,1101,1100,1088,1089,1093,1092','C', '1002,1011,1012,1013,1027,1083','C', '1002,1010,1067,1073,1069,1071,1072','C', '1001,1011,1012,1013,1014,1029,1030,1031,1032,1100','C', '1103,1102,1101,1100,1082,1083,1084,1068,1069,1073','C', '1058,1059,1042,1043,1037,1036,1030,1029,1031,1081,1083,1084,1068,1067,1069,1073','C', '1058,1060,1059,1045,1043,1044,1047,1109,1110,1111','C', '1111,1110,1109,1038,1034,1032,1083,1085,1092','C', '1002,1010,1067,1069,1071,1070,1072,1085,1090,1089,1093','D', '1002,1010,1067,1073,1074,1076,1079,1091','D', '1001,1011,1012,1013,1014,1029,1031,1081,1083,1087,1089,1088','D', '1002,1010,1067,1069,1070,1084,1083','D', '1001,1011,1012,1013,1014,1029,1031,1081,1083,1087,1089,1093,1092,1091','D', '1001,1011,1012,1013,1014,1029,1031,1081,1083,1082,1100','D', '1002,1010,1026,1067,1069,1070,1072,1085,1086,1083','D', '1002,1010,1067,1073,1074,1076,1078,1080,1095,1096','D', '1001,1011,1012,1013,1014,1029,1031,1032,1082,1101,1104','D', '1001,1018,1019,1020,1023,1017,1025,1036,1037,1038,1040,1039,1109,1112,1113,1115,1122','D', '1001,1018,1019,1020,1023,1017,1025,1036,1037,1038,1040,1109,1108,1107,1105','D', '1001,1018,1019,1020,1023,1024,1042,1117,1118,1116,1120,1119','D', '1001,1011,1012,1013,1027,1068,1069,1071,1075,1079','D', '1001,1011,1012,1013,1027,1068,1069,1070','D', '1093,1089,1090,1085,1072,1075,1079,1076,1078','C', '1083,1087,1089,1093','C', '1075,1074,1079,1091,1092,1093','C', '1092,1093,1097,1098','C', '1083,1082,1087,1089,1088,1093,1097,1099','C', '1100,1082,1083','C', '1074,1075,1072,1085,1090,1089,1087,1083','C', '1076,1077,1078,1079,1091,1092,1093','C', '1068,1069,1073,1074,1075','C', '1068,1069,1070,1072,1085,1090,1089,1088','C', '1069,1070,1072,1085,1090,1091,1092,1095','C', '1069,1071,1075,1079,1091,1092','C', '1083,1087,1089,1093,1092,1091','C', '1083,1087,1089,1090,1091','C', '1083,1082,1087,1089,1088,1093,1097,1099','C', '1083,1087,1089,1093,1094','D', '1062,1129,1051,1128,1127,1117,1049,1112,1109,1110,1107,1103,1102','A', '1127,1128,1117,1118,1116,1113','A', '1113,1112,1110,1111,1107,1103,1104,1101,1100,1102','B', '1104,1101,1103,1102','C', '1113,1112,1110,1107,1106','C', '1127,1128,1117,1113,1112,1110,1109','C', '1062,1129,1128,1127,1118,1119,1120,1121,1122,1124,1125','C', '1088,1100,1101,1102,1103,1105,1106','C', '1102,1103,1107,1110,1109,1112,1049,1113,1115,1122','D', '1113,1115,1122,1124','D', '1113,1112,1109,1108,1103,1102,1100,1101','D', '1113,1115,1114,1123','D', '1113,1115,1116,1120,1121,1125','D', '1113,1115,1122,1121,1119,1126,1125,1124','D', '1100,1101,1102,1103,1108,1109,1110,1111','D', '1062,1129,1051,1128,1127,1117,1118,1116,1113,1112,1110,1109,1111','D', '1002,1011,1012,1013,1014,1029,1016,1030,1036,1034,1035','E', '1058,1054,1056,1055,1052,1020,1023,1021,1017,1015,1012,1013,1027,1028','E', '1001,1005,1018,1019,1020,1023,1024,1042,1043,1041,1047','E', '1001,1011,1012,1013,1027,1084,1085,1086','E', '1018,1019,1012,1013,1027,1067,1073,1074','E', '1017,1015,1012,1013,1027,1067,1073,1074,1076,1077,1078','E', '1020,1023,1017,1015,1012,1013,1027,1068,1069,1071,1075','E', '1020,1023,1017,1015,1014,1029,1031,1081,1083,1087,1089,1088,1093','E', '1018,1019,1020,1023,1017,1025,1037,1036,1038,1034,1035,1102,1103','E', '1027,1028,1031,1032,1102,1103','E', '1111,1110,1109,1040,1038,1034,1030,1031,1081,1083,1084,1068,1070,1069,1073','E', '1068,1069,1073,1074,1076,1077','E', '1083,1082,1087,1086,1085,1075,1074,1076,1078','E', '1068,1069,1073,1074,1076,1078','E', '1074,1075,1085,1086,1082,1083','E', '1100,1082,1083,1084,1068,1069','E', '1113,1116,1118,1127,1117','E', '1001,1005,1018,1019,1020,1022,1023,1024,1042,1043,1044,1047,1046,1049','F', '1026,1010,1003,1004,1001,1002,1011,1012,1013,1014,1029,1030,1034,1035','F', '1001,1005,1018,1019,1020,1022,1023,1017,1025,1037,1040','F', '1001,1005,1018,1019,1020,1022,1023,1024,1042,1043,1045,1044,1046,1050','F', '1001,1005,1018,1020,1052,1055,1056','F', '1001,1005,1018,1020,1052,1055,1053','F', '1001,1005,1018,1020,1052,1055,1056,1054,1058,1057,1063,1064','F', '1001,1005,1018,1020,1052,1055,1056,1054,1058,1059,1060','F', '1001,1005,1018,1020,1052,1055,1054,1057,1063,1064','F', '1001,1005,1018,1020,1052,1055,1056,1054,1058,1059,1060','F', '1001,1005,1018,1020,1052,1055,1056,1054,1058,1061,1062,1129','F', '1001,1011,1012,1013,1027,1028,1031,1032,1033,1034,103,1029,1014','G', '1001,1005,1018,1019,1021,1017,1015,1014,1029,1030,1030,1035','G', '1001,1005,1018,1020,1052,1055,1056,1054,1058,1059,1060,1062,1061,1057','G', '1001,1005,1018,1020,1052,1055,1054,1058,1057,1064,1063,1062,1061,1056','G', '1001,1005,1018,1019,1020,1023,1024,1042,1043,1041,1044,1046,1049,1050,1051,1045','G', '1001,1005,1018,1019,1020,1023,1017,1025,1037,1041,1044,1047,1048,1039,1038,1036','G', '1001,1005,1018,1020,1052,1055,1053,1056,1054,1058,1059','G', '1026,1010,1002,1003,1004,1001,1005,1018,1019,1020,1023,1024,1042','G', '1001,1005,1018,1019,1020,1023,1017,1025,1037,1036,1038,1039,1040','G', '1002,1010,1067,1068,1069,1071,1073','G', '1002,1010,1067,1069,1070,1072,1075,1074,1073','G', '1002,1010,1067,1073,1074,1076,1079,1078,1080,1077','G', '1001,1011,1012,1013,1027,1028,1084,1083,1087,1089,1093,1092,1091','G', '1001,1011,1012,1013,1027,1084,1083,1082,1086,1085,1090,1089,1088,1100,1032,1031,1029,1014','G', '1001,1011,1012,1013,1014,1029,1030,1034,1035,1102,1103,1108,1109,1039,1040,1038,1036,1037,1025,1016,1017,1015,1021','G', '1001,1011,1012,1013,1027,1028,1084,1083,1082,1100,1101,1102,1035,1034,1030,1029,1014','G', '1001,1018,1019,1020,1023,1017,1025,1036,1037,1038,1040,1109,1112,1114,1123,1115,1116,1113','G', '1001,1018,1019,1020,1023,1024,1042,1043,1125,1124,1121,1122,1115,1113,1116,1118,1117,1128','G', '1001,1018,1019,1020,1023,1024,1042,1128,1127,1120,1122,1124,1125','G' ) ['item 1','item 2','item 3','item 4','item 5','item 6','item 7','item 8','item 9','item 10','item 11','item 12','item 13','item 14','item 15','item 16','item 17','item 18','item 19','item 20','item 21','item 22','item 23','item 24','item 25','item 26','item 27','item 28','item 29','item 30','item 31','item 32','item 33','item 34','item 35','item 36','item 37','item 38','item 39','item 40','item 41','item 42','item 43','item 44','item 45','item 46','item 47','item 48','item 49','item 50','item 51','item 52','item 53','item 54','item 55','item 56','item 57','item 58','item 59','item 60','item 61','item 62','item 63','item 64','item 65','item 66','item 67','item 68','item 69','item 70','item 71','item 72','item 73','item 74','item 75','item 76','item 77','item 78','item 79','item 80','item 81','item 82','item 83','item 84','item 85','item 86','item 87','item 88','item 89','item 90','item 91','item 92','item 93','item 94','item 95','item 96','item 97','item 98','item 99','item 100','item 101','item 102','item 103','item 104','item 105','item 106','item 107','item 108','item 109','item 110','item 111','item 112','item 113','item 114','item 115','item 116','item 117','item 118','item 119','item 120','item 121','item 122','item 123','item 124','item 125','item 126','item 127','item 128','item 129','item 130','item 131','item 132','item 133','item 134','item 135','item 136','item 137','item 138','item 139','item 140','item 141','item 142','item 143','item 144','item 145','item 146','item 147','item 148','item 149','item 150','item 151','item 152'] 56,112,1 48,24 2,0,-23,1024,665 2,0,-23,1024,665,0,MIDM 2,376,52,586,514,0,MIDM 65535,52427,65534 [R_t,Bus_routes_special] [R_t,Bus_routes_special] R t ['Route','Time'] 56,144,1 48,12 Time of day ['Morning','Day','Afternoon','Evening1','Evening2','Night1','Night2'] 168,248,1 48,12 2,0,-23,1025,666 Route quality ['A','B','C','D','E','F','G'] 280,64,1 48,12 Route coverage Table(Route_quality,Time_of_day1)( 1,1,1,0,0,0,0, 1,1,1,1,0,0,0, 1,1,1,1,1,0,0, 1,1,1,1,1,1,0, 1,0,1,0,0,0,0, 0,0,0,0,0,1,0, 0,0,0,0,0,0,1 ) 280,32,1 48,24 2,0,-23,1024,665 2,310,210,416,303,0,MIDM 2,459,88,731,303,0,MIDM 52425,39321,65535 [Route_quality,Time_of_day1] [Route_quality,Time_of_day1] (routes) Etapit index etappi:= 1..max(max((textlength(routes)+1)/5)); var c:= for z[]:= routes do slice(Splittext(z,','),Etappi); c:= evaluate(c); 504,120,1 52,12 routes (trips,routes,c) Etappimatkat var a:=0; var x:=1; while x<=size(from) do ( var y:=1; while y<=size(from) do ( var b:= slice(slice(trips,from,x),to1,y); if b>0 then ( var e:= slice(slice(routes,from,x),to1,y); var d:= c[.i=e]; var s:= if d=slice(from,x) then d.etappi else 0; var f:= if d=slice(to1,y) then d.etappi else 0; s:= sum(s,s.etappi); f:= sum(f,f.etappi); s:= if d.etappi >=min([s,f]) and d.etappi<=max([s,f]) then 1 else 0; a:= if c.i= e then s*b+a else a) else 0; y:= y+1); x:= x+1); a 504,152,1 52,12 2,672,92,476,503 trips,routes,c (a) Reittilyhennys var c:= if a>= Scenario_input[Input_var='Public level'] then 1 else 0; c:= cumulate(c,c.etappi)/sum(c,c.etappi); var start:= sum((if c=0 then 1 else 0),c.etappi)*5+1; start:= if isnan(start) then 2 else start; var end:= (size(c.etappi)-sum((if c=1 then 1 else 0),c.etappi))*5+4; end:= if isnan(end) then 1 else end; selecttext(Timely_routes,start,end) 504,88,1 52,12 2,515,101,476,224 a Active routes index i:= 1..size(sum(Active_routes_pre,time_of_day1)); slice(Active_routes_pre,Active_routes_pre.Active_routes_pre,i) 280,240,1 48,24 2,102,90,476,381 2,295,17,865,581,0,MIDM [I,Time_of_day1] (routes) Route# var x:= 1; var a:=0; while x<=size(routes.i) do ( var b:= slice(routes,routes.i,x); b:= if b=null then '' else b; a:= if findintext(from&'',b)>0 and findintext(to1&'',b)>0 then x else a; x:= x+1); a 504,24,1 52,12 2,488,77,492,373 routes Bus existence var g:= Route_(Active_routes); g:= sum((if time_of_day_by_time= time_of_day1 then g else 0),time_of_day1); if g>0 then 1 else 0 280,304,1 48,24 2,152,162,568,455,0,MIDM [To1,From] (routes) Route#2 var x:= 1; var a:=0; index mp:= ['Meno','Paluu']; while x<=size(routes.i) do ( var b:= slice(routes,routes.i,x); b:= if b=null then '' else b; var m:= findintext(from&'',b); var p:= findintext(to1&'',b); a:= if m>0 and p>0 then (if m<p then array(mp,[x,0]) else array(mp,[0,x]) ) else a; x:= x+1); a 504,56,1 52,12 2,30,70,401,357 routes Active routes pre var a:= etapit(Timely_routes); var b:= Route_(Timely_routes); var g:= Adjusted_trip_rate[mode1='Public']; g:= sum((if time_of_day_by_time= time_of_day1 then g else 0),time); g:= g/sum((if time_of_day_by_time= time_of_day1 then 1 else 0),time)/time_unit; a:= Etappimatkat(g,b,a); a:= Reittilyhennys(a); b:= sum(if textlength(a)>0 then 1 else 0,time_of_day1); a:= a[.i=subset(b)]; 280,176,1 48,24 2,189,49,957,581,0,MIDM [Active_routes_pre,Time_of_day1] (textlength(Bus_route_ends)+1)/5 72,272,1 48,24 [R_t,Bus_route_ends] Choose pub matrix Choice(Self,3) 392,112,1 48,24 [Formnode Choose_pub_matrix1] 52425,39321,65535 [1,2,3] Bus trips trips/time unit Calculates the trips for public transport. This is using route#2 so that trips going along the route and coming backwards are separated. This is necessary because the number of buses needed depends on the higher number. var b:= etapit(Active_routes); var a:= Route_2(Active_routes); var g:= all_trips[mode1='Public']; g:= max((if time_of_day_by_time= time_of_day1 then g else 0),time); Etappimatkat(g,a,b) 400,96,1 48,24 2,102,90,476,391 2,242,493,835,252,0,MIDM [I,Time_of_day1] [Index I] Other parts Contains functions, indexes, and nodes that are used in several modules, and log nodes. jtue 2. Aprta 2004 14:19 48,24 512,144,1 48,24 1,0,0,1,1,1,0,,0, 1,40,0,382,163,17 Hour Hour of day. Sequence( 0, 23 ) 296,120,1 48,12 1,1,1,1,1,1,0,,0, 1,104,114,416,303,0,MIDM Vehicle type ['Bus','Minibus','Car (d)','Car (g)'] 176,272,1 48,12 [0,0,1,0] Mode The transport mode: either personal car or composite traffic. ['Car','Composite','Public'] 176,304,1 48,12 1,0,0,1,1,1,0,,0, 2,220,199,476,224 Trip length km The lengths of the trips shown as a frequency distribution. var comp:= aggr_period(All_trips); comp:= comp[Mode1='Composite']; var car:= comp[Mode1='Car']; var a:= array(Vehicle,[comp,0,0,0,0,car]); index length:= 1..50; for x[]:= length do ( var e:= if round(distances)=x then a else 0; e:= sum(sum(e,from),to1) ) 56,88,1 48,24 2,102,90,476,407 2,55,202,932,513,1,MIDM Zone The areas are classified into three categories: 1) downtown (downtown of Helsinki), 2) centre (other major centres within the Metropolitan area), and 3) suburb (all other areas). Table(Self)( 1,2,3) ['Downtown','Centre','Suburb'] 56,16,1 48,12 2,10,257,476,441 2,280,290,416,329,0,MIDM 2,414,239,416,303,0,MIDM 52425,39321,65535 [0,0,0,1] Traffic speed km/h Average speed of traffic. 40 56,312,1 48,24 2,93,231,476,322 65535,52427,65534 Vehicle Index of travel type (vehicle type including the number of changes). ['d9','d8','d7','d6','d5','d4','d3','d2','d1','c9','c8','c7','c6','c5','c4','c3','c2','c1'] 176,216,1 48,12 1,1,1,1,1,1,0,,0, 2,554,151,476,399 General functions Functions that are used in several modules of this model, or in several models. It is therefore practical to place them into one module. jtue 2. Aprta 2004 14:47 48,24 56,200,1 48,24 1,305,164,-283,340,21 (in,out:prob;classes) Variation Toistaiseksi Variation1 ei toimi, jos classes on indeksi. TŠmŠn voi koettaa ratkaista siten, ettŠ tehdŠŠn isompi indeksi, jossa concatataan kaikki eripituiset varia-indeksit, sortataan suuruusjŠrjestykseen, ja slicataan pienemmŠt indeksit siihen. TŠmŠn lisŠksi tŠytyy linearinterp-funktiolla luoda puuttuviin kohtiin lukuja, jossa funktio kulkee nŠtisti. Nyt tŠtŠ ei ruveta tekemŠŠn. for x[]:= classes do ( index varia:= sequence(1/x,1,1/x); var c:= rank(sample(in),run); c:= ceil(c*x/samplesize)/x; var a:= if c=Varia then sample(out) else 0; var b:= if c=Varia then 1 else 0; a:= sum(a,run)/sum(b,run); if isnan(a) then 0 else a ) 168,208,1 48,24 2,57,16,476,648 in,out,classes (out:prob;deci:indextype;input:prob;input_ind:indextype;luokkia) VOI Versio 1. index a:= ['Total VOI']; index variable:= concat(a,input_ind); for x[]:= luokkia do ( index varia:= sequence(1/x,1,1/x); var in:= ceil(rank(input,run)*x/samplesize)/x; var ncuu:= min(mean(sample(out)),deci); var d:= (if a='Total VOI' then mean(min(sample(out),deci))-ncuu else 0); var evpi:= if in=Varia then out else 0; evpi:= sum(min(mean(evpi),deci),varia)-ncuu; concat(d,evpi,a,input_ind,variable) ) 56,208,1 48,24 2,474,71,476,546 out,deci,input,input_ind,luokkia Time unit h Time unit in hours. (Should equal the acceptable waiting time.) 1/(size(time)/24) 56,96,1 48,24 1,1,1,1,1,1,0,,0, 52425,39321,65535 (Trips,Delay) Time shift time units shifts travels forward and backward in time. This is the way how travel times are taken into account. Trips = number of trips traveled at each time point. Delay = Travel time as number of time units. If delay is negative, the result is earlier in time than Trip. Time_order = a helper variable containing the rank number of each time point. var time_order:= time/time_unit+1; var a:= Time_order-Delay; var b:= (if a >max(Time_order,time) or a< min(Time_order,time) then 1 else a); slice(Trips,time,b) 168,96,1 48,24 1,1,1,1,1,1,0,,0, 2,367,75,476,512 Trips,Delay (data) Clean rows index in1:= 1..size(data); var b:= slice(data,in1); var c:= unique(b,in1); b:= slice(b,in1,c); b:= slice(b,in1); c:= subset(istext(b)); b:= slice(b,in1,c); index a:= 1..size(b); slice(b,a) 168,32,1 48,24 2,2,165,476,389 data (a) Aggr period var per:= if time>=6 and time<20 then ' 6.00-20.00' else if time>=20 and time<24 then '20.00-24.00' else ' 0.00- 6.00'; var x:= 1; var c:= 0; while x<= size(time) do ( var b:= slice(a,time,x); c:= if slice(per,time,x)=period then c+b else c; x:= x+1); c {for x:= period do ( var b:= if per=x then a else 0; sum(b,time))} {var b:= if time>=6 and time<20 then a else 0; b:= sum(b,time); var c:= if time>=20 and time<24 then a else 0; c:= sum(c,time); var d:= if time>=24 or time<6 then a else 0; d:= sum(d,time); array(period,[b,c,d])} 56,152,1 48,24 2,508,9,476,559 a 22.7.2006 Jouni Tuomisto Yritin tŠmmšistŠ versiota, mutta se vei paljon enemmŠn muistia ja laskenta-aikaa jostain syystŠ. index i:= 1..14/time_unit; var b:= array(period,[ array(i,sequence(6,20,time_unit)), array(i,sequence(20,34,time_unit)), array(i,sequence(-8,6,time_unit))]); b:= a[time=b]; b:= if b=null then 0 else b; b:= sum(b,b.i) (in,out:prob;classes) Variation Toistaiseksi Variation1 ei toimi, jos classes on indeksi. TŠmŠn voi koettaa ratkaista siten, ettŠ tehdŠŠn isompi indeksi, jossa concatataan kaikki eripituiset varia-indeksit, sortataan suuruusjŠrjestykseen, ja slicataan pienemmŠt indeksit siihen. TŠmŠn lisŠksi tŠytyy linearinterp-funktiolla luoda puuttuviin kohtiin lukuja, jossa funktio kulkee nŠtisti. Nyt tŠtŠ ei ruveta tekemŠŠn. for x[]:= classes do ( index varia:= sequence(1/x,1,1/x); var c:= rank(sample(in),run); c:= ceil(c*x/samplesize)/x; var a:= if c=Varia then sample(out) else 0; var b:= if c=Varia then 1 else 0; a:= sum(a,run)/sum(b,run); if isnan(a) then 0 else a ) 168,152,1 48,24 in,out,classes (param1,sigdigits) rounding var a:= floor(logten(param1)); var b:= param1/10^(a+1-sigdigits); round(b)*10^(a+1-sigdigits) 272,32,1 48,24 param1,sigdigits Profiling Use this library to see which variables and functions are taking most of the computation time when running your model. This library requires Analytica Enterprise, or ADE. It will not work for other versions of Analytica. Here's how to use the library: 1. First run your model, i.e. show (and therefore compute) results for the outputs you are interested in timing. 2. Click Timing "Result" button to show an array showing how long it took to evaluate each variable (in CPU seconds), ordered to show the largest times first. If you want to time additional calculations, added to existing timings. 3. Make those calculations by showing results for those variables. 4. Click button "Recompute Timings" 5. Click Timing "Result" button again. If you want to time additional calculations, starting from zero again. 6. Change relevant inputs to cause their dependents to need to be recomputed. 7. Click "Reset Timings" to set to zero. 8. Show results for outputs of interest. 9. Click Timing "Result" again to see new timings. Lonnie Chrisman Sun, Jul 13, 2003 12:18 PM indirect Sun, Sep 14, 2003 7:20 AM 48,24 56,144,1 48,24 1,1,1,1,1,1,0,0,0,0 1,40,151,-466,323,21 2,90,44,476,224 (m: TextType) Descendant Objects Returns a list including module m and all its descendants, i.e. objects (variables, functions, and modules) contained in m - and in any modules it contains, recursively. VAR res := [m]; VAR c := contains OF (m); IFONLY IsUndef(c) THEN res ELSE BEGIN FOR v := c Do BEGIN VAR d := Descendant_objects(Identifier OF v); res := Concat(res, d); 0 END; res END 80,176,1 52,24 2,97,125,476,394 m 1 (m: TextType) Computation Profile sec Returns an array of the computation time (in seconds) taken to evaluate each variable (or user-defined function). Results exclude time spent evaluating each variable's inputs. Times are sorted in descending order to show the variables taking the most time at the top. The result is indexed by .objects, a local index containing only those variables with a nonzero computation time. This function is useful for profiling a computationally intensive model to find where the time is being spent. The time includes all time spent in computing each variable since the model was opened, or since the last call to "Reset Timings". INDEX allobjs := Descendant_Objects(m); VAR allTimings := (FOR obj:=allobjs DO EvaluationTime OF (obj)); INDEX UnsortedNodes := Subset(allTimings > 0); VAR timings := allTimings[allobjs = UnsortedNodes]; INDEX objects := sortIndex(-timings, UnsortedNodes); timings[UnsortedNodes = objects] 200,176,1 60,24 2,88,-2,481,571 m Timing profile CPU Sec Returns an array with the evaluation Time spent in each variable and function. /* First, determine which node is the "root" node of the model */ VAR m := Identifier OF (Isin OF Self); VAR top := WHILE (NOT IsUndef(Isin OF (m))) DO m := Identifier OF (Isin OF (m)); Computation_profile(top) 328,176,1 48,24 2,578,25,247,477,0,MIDM [Formnode Timing_profile1, Formnode Whole_model_computat] 1,F,10,3,0,0 [Index Objects] Whole Model Computational Profile 1 256,40,1 124,16 1,0,0,1,0,0,0,72,0,1 Timing_profile (m: TextType) Computation Profile all sec Returns an array of the computation time (in seconds) taken to evaluate each variable (or user-defined function). Results exclude time spent evaluating each variable's inputs. Times are sorted in descending order to show the variables taking the most time at the top. The result is indexed by .objects, a local index containing only those variables with a nonzero computation time. This function is useful for profiling a computationally intensive model to find where the time is being spent. The time includes all time spent in computing each variable since the model was opened, or since the last call to "Reset Timings". INDEX allobjs := Descendant_Objects(m); VAR allTimings := (FOR obj:=allobjs DO EvaluationTimeAll OF (obj)); INDEX UnsortedNodes := Subset(allTimings > 0); VAR timings := allTimings[allobjs = UnsortedNodes]; INDEX objects := sortIndex(-timings, UnsortedNodes); timings[UnsortedNodes = objects] 200,240,1 60,24 2,102,90,529,521 m Timing profile all CPU Sec This displays the Time spent in each variable and function /* First, determine which node is the "root" node of the model */ VAR m := Identifier OF (Isin OF Self); VAR top := WHILE (NOT IsUndef(Isin OF (m))) DO m := Identifier OF (Isin OF (m)); Computation_profile_(top) 328,240,1 48,24 2,655,142,407,516,0,MIDM 1,F,10,3,0,0 From Area number of the origin. Equals the Area 129 coding (plus 1000) by Helsinki Metropolitan Area Council. 1001..1029 176,80,1 48,12 2,518,124,476,424 [Formnode From1] To Area number of the destination. Equals the Area 129 coding (plus 1000) by Helsinki Metropolitan Area Council. copyindex(From) 176,104,1 48,12 Reg An index for areal data tables. Transformed to 'From' index. 1001..1129 176,24,1 48,12 2,446,194,476,288 Reg1 An index for areal data tables. Transformed to 'To' index. 1001..1129 176,48,1 48,12 Area1 The number of area. Equals the Area 129 coding (plus 1000) by Helsinki Metropolitan Area Council. [1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1011,1012,1013,1014,1015,1016,1017,1018,1019,1020,1021,1022,1023,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1120,1121,1122,1123,1124,1125,1126,1127,1128,1129,1130] 176,136,1 48,12 2,531,226,476,224 Region The names of the larger regions used in the model. ['+LŠnsi-Espoo','+Pohjois-Espoo','+EtelŠ-Espoo','+Keski-Espoo','+LŠnsi-Vantaa','+Keski-Vantaa','+Pohjois-Vantaa','+ItŠ-Vantaa','+Kanta-Helsinki','+LŠnsi-Helsinki','+Vanha-Helsinki','+Konalanseutu','+Pakilanseutu','+Malminseutu','+ItŠ-Helsinki'] 176,184,1 48,12 2,470,236,476,365 Composite traffic dummy The placeholder for the composite traffic. This is used when an argument is linked to composite traffic in general, and there is no obvious node to which it can be linked. 0 56,256,1 48,24 Vehicle_noch Index of travel type (vehicle type including the number of changes). This index is the same as Vehicle except that there is an additional row, No-change trips. This is the number of trips that are forced not to be divided into two parts. Note that these trips are included in other rows, and therefore this index must not be summed up. ['d9','d8','d7','d6','d5','d4','d3','d2','d1','c9','c8','c7','c6','c5','c4','c3','c2','c1','Noch'] 176,240,1 48,12 1,1,1,1,1,1,0,,0, 2,10,126,476,444 2,40,50,416,452,0,MIDM [Formnode Vehicle_noch1] Subsidise groups? 0 172,348,1 156,12 1,0,0,1,0,0,0,72,0,1 Subsidise_groups_ Area2 The number of area. Equals the Area 129 coding (plus 1000) by Helsinki Metropolitan Area Council. [1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1011,1012,1013,1014,1015,1016,1017,1018,1019,1020,1021,1022,1023,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1120,1121,1122,1123,1124,1125,1126,1127,1128,1129,1130] 176,160,1 48,12 Link intensity per name vehicles/h The number of vehicles per hour driving along a link for the 30 most busy links at 8.00-9.00 in the morning. The result is indexed by the names of the areas that are connected by the particular link. TŠmŠ ei enŠŠ toimi, mutta jos harrastusta riittŠŠ, voi koettaa rakentaa tŠmŠn uudestaan. {var d:= Basic_ranking1; var mist:= floor(d/10000); var mihi:= d-floor(d/10000)*10000; var a:= Vehicles_per_link1; a:= a[From=mist,To1=mihi]; d:= area_name[area1=floor(d/10000)]&' - '&area_name[area1=d-floor(d/10000)*10000]; index link:= d; var c:=cumulate(1,link); slice(a,a.top30,c)} 0 296,32,1 48,24 2,46,12,824,709,0,MIDM (e;j:indextype) Mirror index a:= 1..size(j)*2; index etappi:= 1..max(max(max(max((textlength(e)+1)/5)))); var c:= for y[]:= e do slice(Splittext(y,','),Etappi); c:= if istext(c) then c else ''; var b:= c[Etappi=1]; var x:=2; while x<= size(Etappi) do ( b:= (if c[Etappi=x] = '' then b else c[Etappi=x] & ',' & b); x:= x+1; b); concat(e,b,j,j,a); 56,48,1 48,12 2,405,179,476,347 e,j Road data This module creates the node Route matrix, which contains the driving instructions from all areas to all other areas. Distances calculates the distances (by road) between the areas. To make the construction of Route matrix as simple as possible for a new city, the roads are defined in the following way. First, the whole metropolitan are is divided into 15 regions, and these regions are further divided into 129 areas with 7300 inhabitants on average. The 129 areas are standard areas for urban planning, but the regions were formed for this particular purpose. The criteria for forming a region were that they 1) are exclusive and mutually exhaustive 2) are as large as possible without creating very unrealistic routes between areas. Routes are defined in a way that between any two regions, there is only one specific road that is used to cross the region borders (and travel the distance between the regions if they are not neighbours). It is thus necessary to describe the routes between all areas within each region, and the routes between all regions. However, then it is possible to deduce the detailed routes between two areas that are in different regions using these hierarchical instructions. The routes are described as lists of areas that are along the road between the origin and destination. The route description needs not be in full detail if the details between two areas are defined in Roads node. A minimum number of existing roads were selected so that the routes in the model would not be very unrealistic. This work was done manually with a map. Note that the absolute numbers of 'Average vehicle flow on the 30 most busy roads' are likely biased upwards because all traffic from smaller streets is packed to the major roads in the model. jtue 8. Aprta 2004 14:15 jtue 19. elota 2004 10:43 48,24 56,160,1 48,24 1,360,201,-3,437,17 2,102,90,476,282 Arial, 13 Route matrix The complete route instruction matrix including all relevant information. var a:= Prematrix; index e:= 1..max(max((textlength(a)+1)/5,From),To1); var g:= for x[]:= a do slice(splittext(x,','),e); g:= if g=null then 'tyhjŠ' else g; var y:= 1; while y<=size(e)-1 do ( var x:= 1; while x<= size(Road_mirror) do ( var h:= Road_mirror[.a=x]; var b:= g[.e=y]; var c:= g[.e=y+1]; var d:= findintext(b,h); var f:= findintext(c,h); a:= if d>0 and f>0 and f>d then Textreplace(a,b&','&c,selecttext(h,d,f+3),true) else a; x:=x+1); y:=y+1); a 288,200,1 48,24 2,478,35,476,480 2,70,80,784,372,0,MIDM [To1,From] Area name The name of each area. Table(Area1)( 'Kluuvi','Kamppi','Punavuori','Kaartinkaupunki','Kruunuhaka','Katajanokka','Kaivopuisto','Munkkisaari','Ruoholahti','Salmisaari','Etu-Tššlš','Taka-Tššlš','Meilahti','Ruskeasuo','LŠnsi-Pasila','Pohjois-Pasila','ItŠ-Pasila','Hakaniemi','Kallio','SšrnŠinen','Alppila','Vallila','Hermanni','Arabianranta','KŠpylŠ','Lauttasaari','Munkkiniemi','Munkkivuori','EtelŠ-Haaga','Pohjois-Haaga','PitŠjŠnmŠki','Konala','Malminkartano','KannelmŠki','Hakuninmaa','Maunula','Patola','LŠnsi-Pakila','PaloheinŠ','ItŠ-Pakila','PukinmŠki','Viikki','PihlajamŠki','Malmi','Malmin lentokenttŠ','Tapanila','Tapaninvainio','SiltamŠki','Tapulikaupunki','Puistola','JakomŠki','Kulosaari','Laajasalo','Roihuvuori','Herttoniemenranta','Herttoniemi','Puotila','Puotinharju','Myllypuro','Kontula','Vartioharju','MellunmŠki','Vuosaari','Kallahti','Niinisaari','Suomenlinna','Keilaniemi','Otaniemi','Tapiola','Pohjois-Tapiola','Niittykumpu','Mankkaa','Westend','MatinkylŠ','Olari','Iivisniemi','Suvisaaristo','Espoonlahti','Nšykkiš','Saunalahti','MŠkkylŠ','Lintuvaara','EtelŠ-LeppŠvaara','Laajalahti','SepŠnkylŠ','Kuninkainen','Karakallio','Laaksolahti','Viherlaakso','Kauniainen','Tuomarila','Muurala','Bembšle','Nuuksio','Kauklahti','Espoonkartano','Vanhakartano','RšylŠ','KalajŠrvi','HŠmeenkylŠ','Varisto','MyyrmŠki','Martinlaakso','Petikko','Kivistš','Seutula','Viinikkala','YlŠstš','Pakkala','Veromies','Helsinki airport','Koivuhaka','Tikkurila','Ruskeasanta','SimonkylŠ','Jokiniemi','Kuninkaala','Hakkila','PŠivŠkumpu','Havukoski','Rekola','KoivukylŠ','Ilola','Korso','Metsola','Jokivarsi','Sotunki','Hakunila','LŠnsimŠki','Vaihtopiste') 512,32,1 48,24 2,102,90,476,452 2,510,11,258,615,0,MIDM 65535,52427,65534 Modified names from the Area 129 coding by Helsinki Metropolitan Area Council. A dummy index. [1,2,3,4,5,6,7,8,9,10,11,12,13,14] 64,64,1 48,12 A dummy index. [1,2,3,4,5,6,7,8,9,10,11,12,13,14] 64,88,1 48,12 Roads A list of frequently used roads. The purpose of this node is to simplify definitions in nodes Routes outside and routes inside. Table(Self)( '1078,1076,1074,1073,1067,1010,1002,1001','1093,1085,1084,1028','1104,1032,1029,1028,1027,1013,1011,1002','1105,1103,1102,1035,1034,1030,1014,1012,1001','1123,1112,1109,1040,1025,1022,1020,1001,1002,1010','1125,1127,1128,1045,1042,1024,1025,1016,1014,1029','1062,1061,1058,1054,1055,1052,1020,1018,1001','1095,1093,1097,1104,1103,1107,1110,1109,1117,1128,1129','1067,1068,1084,1083,1032,1034,1038,1040,1041,1043,1045,1060,1058','1080,1078,1076,1074,1073,1067,1068','1096,1095,1093,1094','1090,1085,1084,1083,1082','1088,1087,1083,1084','1042,1041,1047,1048','1042,1043,1044,1046,1049','1052,1055,1054,1058,1057,1063,1065','1059,1060,1062,1065','1026,1010,1002,1001,1005,1006','1008,1003,1004,1001','1008,1003,1004,1005,1006','1032,1029,1014,1016,1025,1024') [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21] 288,32,1 48,24 2,166,156,470,457,0,MIDM 2,104,114,802,486,0,MIDM 65535,52427,65534 Data based on a map of Helsinki Metropolitan area (YTV liikenne: PŠŠkaupunkiseudun joukkoliikennekartta 11.8.2002). Routes outside Routes are defined in a way that between any two regions, there is only one route that is used. This route is described in this node. The route description needs not be in full detail, e.g. if a route between two areas is defined in Roads node, it is enough to define the start and end areas here. Table(In3,In4)( '+LŠnsi-Espoo,1093,1097,+Pohjois-Espoo',0,0,0,0,0,0,0,0,0,0,0,0,0, '+LŠnsi-Espoo,1093,1085,1074,+EtelŠ-Espoo','+Pohjois-Espoo,1097,1093,1085,1074,+EtelŠ-Espoo',0,0,0,0,0,0,0,0,0,0,0,0, '+LŠnsi-Espoo,1093,1085,+Keski-Espoo','+Pohjois-Espoo,1097,1093,1085,+Keski-Espoo','+EtelŠ-Espoo,1068,1084,+Keski-Espoo',0,0,0,0,0,0,0,0,0,0,0, '+LŠnsi-Espoo,1093,1104,+LŠnsi-Vantaa','+Pohjois-Espoo,1097,1104,+LŠnsi-Vantaa','+EtelŠ-Espoo,1068,1032,1104,+LŠnsi-Vantaa','+Keski-Espoo,1084,1032,1104,+LŠnsi-Vantaa',0,0,0,0,0,0,0,0,0,0, '+LŠnsi-Espoo,1093,1110,+Keski-Vantaa','+Pohjois-Espoo,1097,1104,1110,+Keski-Vantaa','+EtelŠ-Espoo,1068,1040,1109,+Keski-Vantaa','+Keski-Espoo,1084,1040,1109,+Keski-Vantaa','+LŠnsi-Vantaa,1107,1110,+Keski-Vantaa',0,0,0,0,0,0,0,0,0, '+LŠnsi-Espoo,1093,1128,1127,+Pohjois-Vantaa','+Pohjois-Espoo,1097,1128,1127,+Pohjois-Vantaa','+EtelŠ-Espoo,1068,1045,1127,+Pohjois-Vantaa','+Keski-Espoo,1084,1045,1127,+Pohjois-Vantaa','+LŠnsi-Vantaa,1107,1128,1127,+Pohjois-Vantaa','+Keski-Vantaa,1109,1128,1127,+Pohjois-Vantaa',0,0,0,0,0,0,0,0, '+LŠnsi-Espoo,1093,1128,+ItŠ-Vantaa','+Pohjois-Espoo,1097,1128,+ItŠ-Vantaa','+EtelŠ-Espoo,1068,1045,1128,+ItŠ-Vantaa','+Keski-Espoo,1084,1045,1128,+ItŠ-Vantaa','+LŠnsi-Vantaa,1107,1128,+ItŠ-Vantaa','+Keski-Vantaa,1109,1117,1128,+ItŠ-Vantaa','+Pohjois-Vantaa,1127,1128,+ItŠ-Vantaa',0,0,0,0,0,0,0, '+LŠnsi-Espoo,1093,1028,1011,+Kanta-Helsinki','+Pohjois-Espoo,1097,1104,1011,+Kanta-Helsinki','+EtelŠ-Espoo,1067,1010,+Kanta-Helsinki','+Keski-Espoo,1084,1028,1011,+Kanta-Helsinki','+LŠnsi-Vantaa,1102,1001,+Kanta-Helsinki','+Keski-Vantaa,1109,1001,+Kanta-Helsinki','+Pohjois-Vantaa,1127,1025,1001,+Kanta-Helsinki','+ItŠ-Vantaa,1128,1025,1001,+Kanta-Helsinki',0,0,0,0,0,0, '+LŠnsi-Espoo,1093,1028,+LŠnsi-Helsinki','+Pohjois-Espoo,1097,1104,1029,+LŠnsi-Helsinki','+EtelŠ-Espoo,1068,1084,1028,+LŠnsi-Helsinki','+Keski-Espoo,1084,1028,+LŠnsi-Helsinki','+LŠnsi-Vantaa,1102,1014,+LŠnsi-Helsinki','+Keski-Vantaa,1109,1025,1016,+LŠnsi-Helsinki','+Pohjois-Vantaa,1127,1016,+LŠnsi-Helsinki','+ItŠ-Vantaa,1128,1016,+LŠnsi-Helsinki','+Kanta-Helsinki,1001,1012,+LŠnsi-Helsinki',0,0,0,0,0, '+LŠnsi-Espoo,1093,1028,1029,1025,+Vanha-Helsinki','+Pohjois-Espoo,1097,1104,1029,1025,+Vanha-Helsinki','+EtelŠ-Espoo,1068,1032,1025,+Vanha-Helsinki','+Keski-Espoo,1084,1028,1029,1025,+Vanha-Helsinki','+LŠnsi-Vantaa,1102,1014,1025,+Vanha-Helsinki','+Keski-Vantaa,1109,1025,+Vanha-Helsinki','+Pohjois-Vantaa,1127,1024,+Vanha-Helsinki','+ItŠ-Vantaa,1128,1024,+Vanha-Helsinki','+Kanta-Helsinki,1001,1018,+Vanha-Helsinki','+LŠnsi-Helsinki,1016,1025,+Vanha-Helsinki',0,0,0,0, '+LŠnsi-Espoo,1093,1084,1032,+Konalanseutu','+Pohjois-Espoo,1097,1104,1032,+Konalanseutu','+EtelŠ-Espoo,1068,1032,+Konalanseutu','+Keski-Espoo,1084,1032,+Konalanseutu','+LŠnsi-Vantaa,1102,1035,+Konalanseutu','+Keski-Vantaa,1109,1040,1034,+Konalanseutu','+Pohjois-Vantaa,1127,1045,1034,+Konalanseutu','+ItŠ-Vantaa,1128,1045,1034,+Konalanseutu','+Kanta-Helsinki,1001,1030,+Konalanseutu','+LŠnsi-Helsinki,1014,1030,+Konalanseutu','+Vanha-Helsinki,1025,1014,1030,+Konalanseutu',0,0,0, '+LŠnsi-Espoo,1093,1084,1032,1038,+Pakilanseutu','+Pohjois-Espoo,1097,1104,1032,1038,+Pakilanseutu','+EtelŠ-Espoo,1068,1038,+Pakilanseutu','+Keski-Espoo,1084,1038,+Pakilanseutu','+LŠnsi-Vantaa,1102,1034,1038,+Pakilanseutu','+Keski-Vantaa,1109,1040,+Pakilanseutu','+Pohjois-Vantaa,1127,1045,1040,+Pakilanseutu','+ItŠ-Vantaa,1128,1045,1040,+Pakilanseutu','+Kanta-Helsinki,1001,1020,1040,+Pakilanseutu','+LŠnsi-Helsinki,1014,1030,1034,1038,+Pakilanseutu','+Vanha-Helsinki,1025,1040,+Pakilanseutu','+Konalanseutu,1034,1038,+Pakilanseutu',0,0, '+LŠnsi-Espoo,1093,1084,1041,+Malminseutu','+Pohjois-Espoo,1097,1104,1032,1041,+Malminseutu','+EtelŠ-Espoo,1068,1041,+Malminseutu','+Keski-Espoo,1084,1041,+Malminseutu','+LŠnsi-Vantaa,1102,1034,1041,+Malminseutu','+Keski-Vantaa,1109,1040,1041,+Malminseutu','+Pohjois-Vantaa,1127,1045,+Malminseutu','+ItŠ-Vantaa,1128,1045,+Malminseutu','+Kanta-Helsinki,1001,1020,1040,1041,+Malminseutu','+LŠnsi-Helsinki,1014,1030,1034,1041,+Malminseutu','+Vanha-Helsinki,1025,1040,1041,+Malminseutu','+Konalanseutu,1034,1041,+Malminseutu','+Pakilanseutu,1040,1041,+Malminseutu',0, '+LŠnsi-Espoo,1093,1084,1045,1060,+ItŠ-Helsinki','+Pohjois-Espoo,1097,1104,1032,1045,1060,+ItŠ-Helsinki','+EtelŠ-Espoo,1068,1045,1060,+ItŠ-Helsinki','+Keski-Espoo,1084,1045,1060,+ItŠ-Helsinki','+LŠnsi-Vantaa,1102,1034,1045,1060,+ItŠ-Helsinki','+Keski-Vantaa,1109,1040,1045,1060,+ItŠ-Helsinki','+Pohjois-Vantaa,1127,1045,1060,+ItŠ-Helsinki','+ItŠ-Vantaa,1128,1045,1060,+ItŠ-Helsinki','+Kanta-Helsinki,1001,1020,1052,+ItŠ-Helsinki','+LŠnsi-Helsinki,1014,1030,1034,1045,1060,+ItŠ-Helsinki','+Vanha-Helsinki,1020,1052,+ItŠ-Helsinki','+Konalanseutu,1034,1045,1060,+ItŠ-Helsinki','+Pakilanseutu,1040,1045,1060,+ItŠ-Helsinki','+Malminseutu,1045,1060,+ItŠ-Helsinki' ) 64,32,1 48,24 2,505,193,476,508 2,70,2,872,335,0,MIDM 2,198,39,805,439,0,MIDM 65535,52427,65534 [In3,In4] [In3,In4] Data based on a map of Helsinki Metropolitan area (YTV liikenne: PŠŠkaupunkiseudun joukkoliikennekartta 11.8.2002). Route list Changes the Routes outside into a one-dimensional list. var c:= if Routes_outside=0 then 0 else 1; c:= sum(sum(c,in3),in4); Index a:= 1..c; Index b:= ['In3','In4','Data']; var d:= Mdarraytotable(Routes_outside,a,b); d:= d[.b='Data']; d 64,136,1 48,24 2,102,90,476,297 2,214,56,537,610,0,MIDM Region explode 'Explodes' the regional route lists in a way that any driving instruction that applies to a region, applies also to all areas within the region. var b:= route_list; var x:= 1; while x<= size(Region) do ( {KŠy lŠpi jokainen alue} var c:= slice(Region,x); var d:= slice(Regions,x); var h:= b; var j:= size(b); d:= splittext(d,','); var y:= 1; while y<= size(b) do ( {KŠy lŠpi jokainen ajo-ohje} var f:= slice(h,y); f:= if Istext(f) then f else ''; (if findintext(c,f)>0 then ( f:= textreplace(f,c,d,true); {Korvaa ryhmŠaluenimet aluenimillŠ} b:= concat(b,f)) else 0); y:= y+1); x:= x+1); {TŠstŠ alkaa vanha Aluerajaytys_b} index In3:= 1..size(b); b:= slice(b, In3); b:= (if findintext('+',b)>0 then null else b); { HŠvitetŠŠn aluenimet var c:= unique(b,in3); Romauta kaikki toistuvat rivit b:= slice(b,in3,c); b:= slice(b,in3);} var c:= subset(istext(b)); {Romauta kaikki tyhjŠt rivit} b:= slice(b,in3,c); index in5:= 1..size(b); b:= slice(b,in5); {Poista reitistŠ samat toistuvat pisteet x:=1; while x<=size(mista) do ( c:= slice(mista,x)&''; b:= textreplace(b,c&','&c,c,true); x:=x+1 ); b} 64,200,1 48,24 2,102,90,476,590 2,10,11,474,620,0,MIDM Regions Describes the small areas that belong into each larger region. The region names must start with '+'. All areas must be mentioned exactly once. Regions were selected in a way that they are as large as possible without creating very unrealistic routes between areas. Table(Region)( '1091,1092,1093,1094,1095,1096','1097,1098,1099','1067,1068,1069,1070,1071,1073,1074,1075,1076,1077,1078,1079,1080','1072,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090','1100,1101,1102,1103,1104,1105,1106,1107,1108','1109,1110,1111,1112,1113,1114,1115,1116,1123','1118,1119,1120,1121,1122,1124,1125,1126,1127','1117,1128,1129','1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1011,1026,1066','1012,1013,1014,1015,1016,1027,1028,1029','1017,1018,1019,1020,1021,1022,1023,1024,1025','1030,1031,1032,1033,1034,1035','1036,1037,1038,1039,1040','1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051','1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065') 64,264,1 48,24 2,88,98,771,523,0,MIDM 2,20,224,651,394,0,MIDM 52425,39321,65535 Data based on a map of Helsinki Metropolitan area (YTV liikenne: PŠŠkaupunkiseudun joukkoliikennekartta 11.8.2002). Prematrix The crude route instruction matrix without the information from Routes inside and Roads nodes. var mirror22:= Mirror(region_explode,region_explode.in5); var a:= mirror22; a:= evaluate(selecttext(a,1,4))*10000+evaluate(selecttext(a,textlength(a)-3)); index b:=a; index c:= [1]; index d:= 2..size(Mirror22.a); var e:= concat(c,d,c,d,b); e:= slice(Mirror22,Mirror22.a,e); e:= e[.b=From*10000+To1]; if e=null then From&','&To1 else e 176,200,1 48,24 2,102,90,476,586 2,408,52,759,604,0,MIDM [To1,From] 1,I,4,2,0,0 Road mirror 'Mirrors' the driving instructions in a way that if an instruction applies to 'from A to B', its reverse applies to 'from B to A'. index roa:= 1..size(route_list1)+size(roads); var a:= concat(roads,route_list1,roads,route_list1.a,roa); a:= Mirror(a,roa); a:= clean_rows(a); var c:= for y[]:= a do ( var e:= (if findintext(y,a)>0 then 1 else 0); e:= sum(e,e.a)-1 ); a:= if c>0 then 0 else a; clean_rows(a) 288,136,1 48,24 2,577,84,476,409 2,219,-3,563,627,0,MIDM Routes inside Defines the routes between every two areas within a region. The route description needs not be in full detail, e.g. if a route between two areas is defined in Roads node, it is enough to define the start and end areas here. A minimum number of existing roads were selected so that the routes in the model would not be very unrealistic. This work was done manually with a map. Table(In3,In4,region)( '1091,1092','1097,1098','1067,1068','1072,1085,1084,1083,1081','1100,1101','1109,1110','1118,1127,1119','1117,1128','1001,1002','1012,1013','1017,1019,1018','1030,1034,1031','1036,1037','1041,1042','1052,1055,1053', 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, '1091,1092,1093','1097,1099','1067,1069','1072,1085,1084,1083,1082','1100,1101,1102','1109,1110,1111','1118,1120','1117,1128,1129','1001,1004,1003','1012,1014','1017,1019','1030,1034,1032','1036,1038','1041,1043','1052,1055,1054', '1092,1093','1098,1097,1099','1068,1069','1081,1082','1101,1102','1110,1111','1119,1127,1120','1128,1129','1002,1004,1003','1013,1014','1018,1019','1031,1032','1037,1036,1038','1042,1043','1053,1055,1054', 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, '1091,1092,1093,1094',0,'1067,1073,1070','1072,1085,1084,1083','1100,1104,1103','1109,1112','1118,1120,1121','1117,1130','1001,1004','1012,1015','1017,1020','1030,1034,1032,1033','1036,1038,1039','1041,1044','1052,1055', '1092,1093,1094',0,'1068,1070','1081,1083','1101,1103','1110,1109,1112','1119,1121','1128,1130','1002,1004','1013,1015','1018,1020','1031,1032,1033','1037,1040,1039','1042,1043,1044','1053,1055', '1093,1094',0,'1069,1070','1082,1083','1102,1103','1111,1112','1120,1121','1129,1130','1003,1004','1014,1016,1015','1019,1020','1032,1033','1038,1039','1043,1044','1054,1055', 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, '1091,1092,1095',0,'1067,1073,1071','1072,1085,1084','1100,1104','1109,1113','1118,1120,1122',0,'1001,1005','1012,1015,1016','1017,1021','1030,1034','1036,1038,1040','1041,1043,1045','1052,1055,1056', '1092,1095',0,'1068,1070,1071','1081,1083,1084','1101,1104','1110,1109,1113','1119,1121,1122',0,'1002,1001,1005','1013,1015,1016','1018,1019,1021','1031,1034','1037,1040','1042,1045','1053,1055,1056', '1093,1095',0,'1069,1071','1082,1083,1084','1102,1101,1104','1111,1110,1109,1113','1120,1122',0,'1003,1004,1005','1014,1016','1019,1021','1032,1034','1038,1040','1043,1045','1054,1056', '1094,1093,1095',0,'1070,1071','1083,1084','1103,1104','1112,1113','1121,1122',0,'1004,1005','1015,1016','1020,1021','1033,1032,1034','1039,1040','1044,1043,1045','1055,1056', 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, '1091,1092,1095,1096',0,'1067,1073','1072,1085','1100,1104,1103,1105','1109,1112,1114','1118,1120,1121,1124',0,'1001,1005,1006','1012,1013,1027','1017,1022','1030,1034,1035',0,'1041,10441046','1052,1055,1054,1058,1057', '1092,1095,1096',0,'1068,1067,1073','1081,1083,1084,1085','1101,1103,1105','1110,1109,1112,1114','1119,1121,1124',0,'1002,1001,1005,1006','1013,1027','1018,1020,1022','1031,1034,1035',0,'1042,1043,10441046','1053,1055,1054,1058,1057', '1093,1095,1096',0,'1069,1073','1082,1083,1084,1085','1102,1103,1105','1111,1110,1109,1112,1114','1120,1121,1124',0,'1003,1004,1005,1006','1014,1013,1027','1019,1022','1032,1035',0,'1043,1044,1046','1054,1058,1057', '1094,1093,1095,1096',0,'1070,1073','1083,1084,1085','1103,1105','1112,1114','1121,1124',0,'1004,1006','1015,1027','1020,1022','1033,1032,1035',0,'1044,1046','1055,1054,1058,1057', '1095,1096',0,'1071,1073','1084,1085','1104,1103,1105','1113,1114','1122,1121,1124',0,'1005,1006','1016,1015,1013,1027','1021,1022','1034,1035',0,'1045,1044,1046','1056,1054,1058,1057', 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,'1067,1073,1074','1072,1085,1086','1100,1104,1103,1106','1109,1113,1115','1118,1127,1125',0,'1001,1004,1007','1012,1013,1027,1028','1017,1022,1023','1030,1014',0,'1041,1047','1052,1055,1054,1058', 0,0,'1068,1067,1073,1074','1081,1083,1086','1101,1103,1106','1110,1109,1113,1115','1119,1126,1125',0,'1002,1004,1007','1013,1027,1028','1018,1020,1023','1031,1029,1014',0,'1042,1041,1047','1053,1055,1054,1058', 0,0,'1069,1073,1074','1082,1086','1102,1103,1106','1111,1110,1109,1113,1115','1120,1121,1125',0,'1003,1007','1014,1029,1028','1019,1022,1023','1032,1029,1014',0,'1043,1041,1047','1054,1058', 0,0,'1070,1073,1074','1083,1086','1103,1106','1112,1115','1121,1125',0,'1004,1007','1015,1013,1027,1028','1020,1023','1033,1032,1029,1014',0,'1044,1047','1055,1054,1058', 0,0,'1071,1074','1084,1086','1104,1103,1106','1113,1115','1122,1121,1125',0,'1005,1007','1016,1014,1029,1028','1021,1022,1023','1034,1030,1014',0,'1045,1044,1047','1056,1054,1058', 0,0,'1073,1074','1085,1086','1105,1106','1114,1115','1124,1125',0,'1006,1005,1007','1027,1028','1022,1023','1035,1034,1030,1014',0,'1046,1047','1057,1058', 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,'1067,1073,1074,1075','1072,1085,1086,1087','1100,1104,1103,1107','1109,1113,1116','1118,1127,1125,1126',0,'1001,1004,1003,1008','1012,1014,1029','1017,1025,1024',0,0,'1041,1047,1048','1052,1055,1054,1059', 0,0,'1068,1067,1073,1074,1075','1081,1083,1087','1101,1103,1107','1110,1109,1113,1116','1119,1126',0,'1002,1004,1003,1008','1013,1027,1028,1029','1018,1020,1023,1024',0,0,'1042,1041,1047,1048','1053,1055,1054,1059', 0,0,'1069,1073,1074,1075','1082,1087','1102,1107','1111,1110,1109,1113,1116','1120,1121,1125,1126',0,'1003,1008','1014,1029','1019,1022,1023,1024',0,0,'1043,1041,1047,1048','1054,1059', 0,0,'1070,1073,1074,1075','1083,1087','1103,1107','1112,1115,1116','1121,1125,1126',0,'1004,1008','1015,1016,1014,1029','1020,1023,1024',0,0,'1044,1047,1048','1055,1054,1059', 0,0,'1071,1074,1075','1084,1086,1087','1104,1103,1107','1113,1116','1122,1121,1125,1126',0,'1005,1008','1016,1014,1029','1021,1022,1023,1024',0,0,'1045,1044,1047,1048','1056,1059', 0,0,'1073,1074,1075','1085,1086,1087','1105,1103,1107','1114,1115,1116','1124,1125,1126',0,'1006,1008','1027,1028,1029','1022,1023,1024',0,0,'1046,1048','1057,1060,1059', 0,0,'1074,1075','1086,1087','1106,1103,1107','1115,1116','1125,1126',0,'1007,1003,1008','1028,1029','1023,1024',0,0,'1047,1048','1058,1059', 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,'1067,1073,1074,1076','1072,1085,1090,1089,1088','1100,1104,1103,1108','1109,1112,1123','1118,1127',0,'1001,1002,1009',0,'1017,1025',0,0,'1041,1044,1046,1049','1052,1055,1054,1058,1060', 0,0,'1068,1067,1073,1074,1076','1081,1083,1087,1088','1101,1103,1108','1110,1109,1112,1123','1119,1127',0,'1002,1009',0,'1018,1020,1022,1025',0,0,'1042,1043,1044,1046,1049','1053,1055,1054,1058,1060', 0,0,'1069,1073,1074,1076','1082,1087,1088','1102,1108','1111,1110,1109,1112,1123','1120,1127',0,'1003,1009',0,'1019,1022,1025',0,0,'1043,1044,1046,1049','1054,1058,1060', 0,0,'1070,1073,1074,1076','1083,1087,1088','1103,1108','1112,1123','1121,1120,1127',0,'1004,1009',0,'1020,1022,1025',0,0,'1044,1046,1049','1055,1054,1058,1060', 0,0,'1071,1074,1076','1084,1083,1087,1088','1104,1103,1108','1113,1112,1123','1122,1120,1127',0,'1005,1004,1009',0,'1021,1025',0,0,'1045,1044,1046,1049','1056,1059,1060', 0,0,'1073,1074,1076','1085,1090,1089,1088','1105,1103,1108','1114,1123','1124,1125,1127',0,'1006,1005,1004,1009',0,'1022,1025',0,0,'1046,1049','1057,1060', 0,0,'1074,1076','1086,1087,1088','1106,1103,1108','1115,1114,1123','1125,1127',0,'1007,1003,1009',0,'1023,1022,1025',0,0,'1047,1046,1049','1058,1060', 0,0,'1075,1076','1087,1088','1107,1108','1116,1115,1114,1123','1126,1127',0,'1008,1003,1009',0,'1024,1025',0,0,'1048,1049','1059,1060', 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,'1067,1073,1074,1076,1077','1072,1085,1090,1089',0,0,0,0,'1001,1002,1010',0,0,0,0,'1041,1043,1050','1052,1055,1054,1058,1061', 0,0,'1068,1067,1073,1074,1076,1077','1081,1083,1087,1089',0,0,0,0,'1002,1010',0,0,0,0,'1042,1043,1050','1053,1055,1054,1058,1061', 0,0,'1069,1073,1074,1076,1077','1082,1087,1089',0,0,0,0,'1003,1010',0,0,0,0,'1043,1050','1054,1058,1061', 0,0,'1070,1073,1074,1076,1077','1083,1087,1089',0,0,0,0,'1004,1010',0,0,0,0,'1044,1046,1050','1055,1054,1058,1061', 0,0,'1071,1074,1076,1077','1084,1083,1087,1089',0,0,0,0,'1005,1001,1002,1010',0,0,0,0,'1045,1050','1056,1054,1058,1061', 0,0,'1073,1074,1076,1077','1085,1090,1089',0,0,0,0,'1006,1005,1001,1002,1010',0,0,0,0,'1046,1050','1057,1061', 0,0,'1074,1076,1077','1086,1087,1089',0,0,0,0,'1007,1003,1010',0,0,0,0,'1047,1046,1050','1058,1061', 0,0,'1075,1076,1077','1087,1089',0,0,0,0,'1008,1003,1010',0,0,0,0,'1048,1046,1050','1059,1060,1061', 0,0,'1076,1077','1088,1089',0,0,0,0,'1009,1010',0,0,0,0,'1049,1050','1060,1061', 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,'1067,1073,1074,1076,1078','1072,1085,1090',0,0,0,0,'1001,1002,1011',0,0,0,0,'1041,1043,1045,1051','1052,1055,1054,1058,1061,1062', 0,0,'1068,1067,1073,1074,1076,1078','1081,1083,1084,1085,1090',0,0,0,0,'1002,1011',0,0,0,0,'1042,1045,1051','1053,1055,1054,1058,1061,1062', 0,0,'1069,1073,1074,1076,1078','1082,1083,1084,1085,1090',0,0,0,0,'1003,1002,1011',0,0,0,0,'1043,1045,1051','1054,1058,1061,1062', 0,0,'1070,1073,1074,1076,1078','1083,1084,1085,1090',0,0,0,0,'1004,1002,1011',0,0,0,0,'1044,1043,1045,1051','1055,1054,1058,1061,1062', 0,0,'1071,1074,1076,1078','1084,1085,1090',0,0,0,0,'1005,1001,1002,1011',0,0,0,0,'1045,1051','1056,1054,1058,1061,1062', 0,0,'1073,1074,1076,1078','1085,1090',0,0,0,0,'1006,1005,1001,1002,1011',0,0,0,0,'1046,1050,1051','1057,1061,1062', 0,0,'1074,1076,1078','1086,1090',0,0,0,0,'1007,1003,1002,1011',0,0,0,0,'1047,1046,1050,1051','1058,1061,1062', 0,0,'1075,1076,1078','1087,1089,1090',0,0,0,0,'1008,1003,1002,1011',0,0,0,0,'1048,1046,1050,1051','1059,1060,1062', 0,0,'1076,1078','1088,1089,1090',0,0,0,0,'1009,1002,1011',0,0,0,0,'1049,1050,1051','1060,1062', 0,0,'1077,1078','1089,1090',0,0,0,0,'1010,1002,1011',0,0,0,0,'1050,1051','1061,1062', 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,'1067,1073,1074,1076,1079',0,0,0,0,0,'1001,1002,1010,1026',0,0,0,0,0,'1052,1055,1054,1058,1057,1063', 0,0,'1068,1067,1073,1074,1076,1079',0,0,0,0,0,'1002,1010,1026',0,0,0,0,0,'1053,1055,1054,1058,1057,1063', 0,0,'1069,1073,1074,1076,1079',0,0,0,0,0,'1003,1010,1026',0,0,0,0,0,'1054,1058,1057,1063', 0,0,'1070,1073,1074,1076,1079',0,0,0,0,0,'1004,1010,1026',0,0,0,0,0,'1055,1054,1058,1057,1063', 0,0,'1071,1074,1076,1079',0,0,0,0,0,'1005,1001,1002,1010,1026',0,0,0,0,0,'1056,1054,1058,1057,1063', 0,0,'1073,1074,1076,1079',0,0,0,0,0,'1006,1005,1001,1002,1010,1026',0,0,0,0,0,'1057,1063', 0,0,'1074,1076,1079',0,0,0,0,0,'1007,1003,1010,1026',0,0,0,0,0,'1058,1057,1063', 0,0,'1075,1076,1079',0,0,0,0,0,'1008,1003,1010,1026',0,0,0,0,0,'1059,1060,1057,1063', 0,0,'1076,1079',0,0,0,0,0,'1009,1010,1026',0,0,0,0,0,'1060,1057,1063', 0,0,'1077,1076,1079',0,0,0,0,0,'1010,1026',0,0,0,0,0,'1061,1057,1063', 0,0,'1078,1079',0,0,0,0,0,'1011,1002,1010,1026',0,0,0,0,0,'1062,1063', 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,'1067,1073,1074,1076,1078,1080',0,0,0,0,0,'1001,1005,1066',0,0,0,0,0,'1052,1055,1054,1058,1057,1063,1064', 0,0,'1068,1067,1073,1074,1076,1078,1080',0,0,0,0,0,'1002,1001,1005,1066',0,0,0,0,0,'1053,1055,1054,1058,1057,1063,1064', 0,0,'1069,1073,1074,1076,1078,1080',0,0,0,0,0,'1003,1004,1005,1066',0,0,0,0,0,'1054,1058,1057,1063,1064', 0,0,'1070,1073,1074,1076,1078,1080',0,0,0,0,0,'1004,1005,1066',0,0,0,0,0,'1055,1054,1058,1057,1063,1064', 0,0,'1071,1074,1076,1078,1080',0,0,0,0,0,'1005,1066',0,0,0,0,0,'1056,1054,1058,1057,1063,1064', 0,0,'1073,1074,1076,1078,1080',0,0,0,0,0,'1006,1005,1066',0,0,0,0,0,'1057,1063,1064', 0,0,'1074,1076,1078,1080',0,0,0,0,0,'1007,1005,1066',0,0,0,0,0,'1058,1057,1063,1064', 0,0,'1075,1076,1078,1080',0,0,0,0,0,'1008,1003,1004,1005,1066',0,0,0,0,0,'1059,1060,1057,1063,1064', 0,0,'1076,1078,1080',0,0,0,0,0,'1009,1002,1001,1005,1066',0,0,0,0,0,'1060,1057,1063,1064', 0,0,'1077,1078,1080',0,0,0,0,0,'1010,1002,1001,1005,1066',0,0,0,0,0,'1061,1057,1063,1064', 0,0,'1078,1080',0,0,0,0,0,'1011,1002,1001,1005,1066',0,0,0,0,0,'1062,1063,1064', 0,0,'1079,1080',0,0,0,0,0,'1026,1010,1002,1001,1005,1066',0,0,0,0,0,'1063,1064', 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,'1052,1055,1054,1058,1057,1063,1065', 0,0,0,0,0,0,0,0,0,0,0,0,0,0,'1053,1055,1054,1058,1057,1063,1065', 0,0,0,0,0,0,0,0,0,0,0,0,0,0,'1054,1058,1057,1063,1065', 0,0,0,0,0,0,0,0,0,0,0,0,0,0,'1055,1054,1058,1057,1063,1065', 0,0,0,0,0,0,0,0,0,0,0,0,0,0,'1056,1054,1058,1057,1063,1065', 0,0,0,0,0,0,0,0,0,0,0,0,0,0,'1057,1063,1065', 0,0,0,0,0,0,0,0,0,0,0,0,0,0,'1058,1057,1063,1065', 0,0,0,0,0,0,0,0,0,0,0,0,0,0,'1059,1060,1062,1065', 0,0,0,0,0,0,0,0,0,0,0,0,0,0,'1060,1062,1065', 0,0,0,0,0,0,0,0,0,0,0,0,0,0,'1061,1062,1065', 0,0,0,0,0,0,0,0,0,0,0,0,0,0,'1062,1065', 0,0,0,0,0,0,0,0,0,0,0,0,0,0,'1063,1065', 0,0,0,0,0,0,0,0,0,0,0,0,0,0,'1064,1065', 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ) 176,32,1 48,24 2,109,4,872,346,0,MIDM 2,184,194,805,439,0,MIDM 65535,52427,65534 [In3,In4] [Region,In3] Data based on a map of Helsinki Metropolitan area (YTV liikenne: PŠŠkaupunkiseudun joukkoliikennekartta 11.8.2002). Route list Changes the Routes inside into a one-dimensional list. var c:= if Routes_inside=0 then 0 else 1; c:= sum(sum(sum(c,in3),in4),region); Index f:= 1..c; Index b:= ['Region','In3','In4','Data']; var d:= Mdarraytotable(Routes_inside,f,b); d:= d[.b='Data']; d:= if textlength(d)=9 then 0 else d; clean_rows(d) 176,136,1 48,24 2,283,96,476,346 2,49,13,370,610,0,MIDM Routes index j:= 1..size(from)^2; var a:= if from=to1 then ',' else Route_matrix; a:= a[from=ceil(j/size(from))+1000, to1=(ceil(j/size(from))-j/size(from))*size(from)+1001]; a:= a[.j=sortindex(textlength(a))]; a:= slice(a,j); var b:=0; for x[]:= a do ( var y:= size(j); while y>=1 do ( if findintext(x,slice(a,j,y))>0 then ( b:= if j=y then b+1 else b; y:=0) else y:=y-1)); a:= a[.j=subset(b)]; index i:= 1..size(a); slice(a,i) 400,200,1 48,24 2,120,130,443,607,0,MIDM Static nodes 'Static nodes' contains previously computed simulations in a static form. The traffic optimising is rather time-consuming work (1 hour per scenario), and it cannot be done in real time. Therefore, all health effect and cost estimates are calculated from previously computed numbers that are stored in this module. ktluser 30. lokta 2004 9:45 48,24 512,32,1 48,24 1,0,0,1,1,1,0,,0, 1,40,0,415,245,17 Scenarios A table of different scenarios to be studied. Each row contains the values for the input variables used for the scenario. Table(Input_var,Scenario)( 1,0.9,0.8,0.7,0.6,0.5,0.4,0.3,0.2,0.1, 1,1,1,1,1,1,1,1,1,1, 7,7,7,7,7,7,7,7,7,7, 0,0,0,0,0,0,0,0,0,0, 2,2,2,2,2,2,2,2,2,2, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 8,8,8,8,8,8,8,8,8,8, 4,4,4,4,4,4,4,4,4,4, 2,2,2,2,2,2,2,2,2,2, 8,8,8,8,8,8,8,8,8,8 ) ['Composite fraction','Guarantee level','Lim'] 288,48,1 48,24 2,344,113,476,224 2,40,50,416,303,0,MIDM 2,45,69,1129,554,0,MIDM [Formnode Scenarios1] 52425,39321,65535 [Scenario,Input_var] [Scenario,Input_var] Scenario Index for a list of scenarios to be modelled. [1,2,3,4,5,6,7,8,9,10] 288,80,1 48,12 2,102,90,476,547 Iterator The combined result of various variables using the assumptions listed in Scenarios node. Each scenario is run one by one, and the results are stored in this node. var x:= 1; var a:= 0; var c:= 0; while x<= size(scenario) do ( a:= scenarios[scenario=x]; a:= whatif(Outputs1,Scenario_input,a); c:= if scenario=x then a else c; x:= x+1); c 176,48,1 48,12 2,463,75,476,367 2,329,56,629,389,0,MIDM [Formnode Iterator1] [Scenario,Period] [Index Travel_type] Output The output variables from the traffic optimising module: Number of passenger trips Vehicle kilometres driven Parking lots needed for the vehicles that are used Average vehicle numbers per hour for the 30 most busy links at 8.00-9.00 in the morning Number of vehicles needed Waiting time due to traffic jams and waiting for composite vehicle to arrive. ['Composite trips','All trips','Nochange trips','Vehicle km','Park rush veh','Waiting'] 64,80,1 48,12 2,511,22,476,224 2,14,684,191,203,0,MIDM [0,0,1,0] Period Morning-day, evening, and night are looked at separately. [' 6.00-20.00','20.00-24.00',' 0.00- 6.00'] 64,104,1 48,12 2,102,90,476,512 [0,0,1,0] BAU scenario output 1 64,48,1 48,24 Outputs1 Trip iterator trips/h The combined result of Trips per hour using the assumptions listed in Scenarios node. Each scenario is run one by one, and the results are stored in this node. var x:= 1; var a:= 0; var c:= 0; while x<= size(scenario) do ( a:= scenarios[scenario=x]; a:= whatif(Trips_per_hour,Scenario_input,a); c:= if scenario=x then a else c; x:= x+1); c 176,24,1 48,12 2,386,142,476,476 2,479,39,629,389,1,MIDM [Time,Vehicle] Scenario data var a:= Ajot[ajo=choose_ajo, Scen_1=Scen_ind, length1=length, vehicle_type1=vehicle_type, Zone1=zone, output11=output1, period1=period]; if isnumber(a) then a else 0 288,232,1 48,24 2,248,258,664,303,0,MIDM 2,11,81,772,303,0,MIDM [Output1,Scen_ind] [Scen_ind,Output1] [0,0,0,0] Scen ind Index for a list of scenarios to be modelled. 1..10 288,192,1 48,12 [0,0,0,1] Scenario description A table of different scenarios to be studied. Each row contains the values for the input variables used for the scenario. Desc[Scen_1=Scen_ind, input_var1=input_var, ajo=choose_ajo] ['Composite fraction','Guarantee level','Lim'] 288,160,1 48,24 2,107,145,476,224 2,27,325,605,277,0,MIDM 2,45,69,705,554,0,MIDM 52425,39321,65535 [Input_var,Scen_ind] [Scen_ind,Input_var] [0,0,0,0] Scenario selection 20.6.2006 Jouni Tuomisto Esimerkki kuinka 1.0.4-versiossa valitaan eri skenaarioajojen vŠliltŠ. var a:= 0; a:= if choose_scen = 'Article + sensitivity' then Scen1 else 0; a:= if choose_scen='Inverse guarantee' then Scen1_0_4 else a; a:= if choose_scen='Only 9 seat vehicles' then Scen_9seats else a; index scenario:= if choose_scen = 'Article + sensitivity' then copyindex(Scen1_1) else (if choose_scen='Inverse guarantee' then copyindex(Scenario1_0) else (if choose_scen='Only 9 seat vehicles' then copyindex(Scenario5) else [0])); a:= if choose_scen = 'Article + sensitivity' then a[Scen1_1=scenario] else a; a:= if choose_scen='Inverse guarantee' then a[Scenario1_0=scenario] else a; a:= if choose_scen='Only 9 seat vehicles' then a[Scenario5=scenario] else a; a 0 408,48,1 48,24 2,102,90,476,437 48,24 64,160,1 Choose_ajo Choice(Ajo,5,False) 64,232,1 48,12 [Formnode Choose_ajo1] 52425,39321,65535 ['item 1'] Cost elements 1 512,88,1 48,24 1,0,0,1,1,1,0,,0, Cost_elements Costs not included: Accidents Street infrastructure City planning 1 288,328,1 68,55 1,1,1,1,1,1,0,,1, Costs_not_included__ Composite traffic is more attractive to those with long (>= 5 km trips) 1 280,56,1 52,48 65535,65532,19661 Composite_traffic_is Total societal VOI is only 23000 e/d, which implies robust conclusions 1 416,328,1 52,48 65535,65532,19661 Total_societal__voi_ Distance data ktluser 26. heita 2006 6:53 48,24 176,160,1 48,24 1,40,147,129,357,17 Links alt var a:= etapit(Route_matrix); a:= a&','&a[.etappi=a.etappi+1]; index row:= 1..size(a); index col:= ['From','To1','.Etappi','Link']; a:= mdarraytotable(a,row,col); a:= a[col='Link']; var d:= bus_links; index row2:= 1..size(d); index col2:= ['Time_of_day1','.B','Link']; d:= mdarraytotable(d,row2,col2); d:= d[col2='Link']; index row3:= 1..size(row)+size(row2); a:= concat(a,d,row,row2,row3); a:= if a=null then 'xxxx' else a; a:= mirror(a,a.row3); a:= if evaluate(selecttext(a,1,4))>=evaluate(selecttext(a,6,9)) then 'xxxx' else a; index b:= unique(a,a.a); a:= a[.a=b]; a:= a[.b=sortindex(a,a.b)]; index row4:= (1..size(a)-1); a:= slice(a,a.b,row4) 184,160,1 48,24 2,11,29,300,615,0,MIDM Bus route length var a:= if findintext(selecttext(link1,1,4),Active_routes)>0 and findintext(selecttext(link1,6,9),Active_routes)>0 then link_length1 else 0; a:= sum(a,link1); if a=null then 0 else a {a:= sum((if time_of_day_by_time= time_of_day1 then a else 0),time_of_day1); } 184,88,1 48,24 2,248,258,756,512,0,MIDM [I,Time_of_day1] Distances km The length of each origin-destination trip. var x:= 1; var a:= 0; var b:= 0; while x<=size(link1) do ( var c:= slice(link1,x); var d:= slice(link_length1,link1,x); var e:= if findintext(c,route_matrix)>0 then d else 0; a:= a+e; e:= if findintext(c,Bus_matrix&' ')>0 then d else 0; b:= b+e; x:= x+1); a:= array(mode1, [a,a,b]) + in_area_distance[area1=From] + in_area_distance[area1=To1]; if a=null then 0 else a 184,32,1 48,24 2,32,14,476,521 2,27,18,883,552,0,MIDM [To1,From] In-area distance km The distance that is travelled within an area collecting people before the actual trip to another area starts. Distances are rough estimates measured with a string and a ruler. This approach was considered exact enough, as the road structure is the same in all scenarios considered. Note that although not quite realistic, this value is the same for both composite and car traffic. Table(Area1)( 1,1,0.6,0.6,0.6,1,1,0.1,1,1,1,1,1.5,1.5,1,1,0.6,0.6,1,1,0.6,0.6,1,1.5,1.5,2.5,1.5,1.5,1.5,2.5,1.5,1.5,1.5,1.5,2.5,1.5,1.5,1.5,1.5,1,1.5,1.5,1.5,2.5,1.5,1,2.5,1.5,1.5,2.5,1.5,1,4,1.5,1.5,2.5,1.5,1.5,1,2.5,1.5,1.5,1.5,2.5,1.5,0.6,0.6,1.5,1.5,1.5,1.5,2.5,2.5,2.5,2.5,2.5,2.5,1.5,2.5,2.5,0.6,1.5,1.5,1.5,1.5,1,1.5,2.5,2.5,2.5,4,4,4,8,2.5,4,4,4,8,2.5,1.5,2.5,2.5,2.5,4,8,4,1.5,1.5,1.5,1,2.5,1.5,1.5,1.5,1.5,1.5,2.5,2.5,1.5,1.5,2.5,1.5,4,2.5,2.5,4,4,4,0) 64,32,1 48,24 2,148,93,416,561,0,MIDM 65535,52427,65534 Data based on a map of Helsinki Metropolitan area (YTV liikenne: PŠŠkaupunkiseudun joukkoliikennekartta 11.8.2002). Link length km The distance between two areas. Distances are rough estimates measured with a string and a ruler. This approach was considered exact enough, as the road structure is the same in all scenarios considered. Table(Link1)( 0.8,1,0.6,1.7,1.7,1.1,4.3,1.1,2.2,1.2,1.5,1.7,1.2,0.8,0.8,0.8,2.1,2.9,2.2,1.1,0.8,3,2.4,1.1,1.3,1.2,3.3,1.7,2.8,3,5.4,2.8,2.8,3,3.6,3,1.2,1.9,2,2.6,1,1.6,1.6,1.2,1.4,1,1.1,1,3.7,1.7,1,3,3.3,4.2,2.3,2.2,1.1,1.6,1.8,1.8,4.4,1.1,1.4,1.2,1,1.1,1.1,1.7,0.8,0.9,2.4,1.6,2,2.3,0.4,1.8,2.4,1.9,2.5,3.2,3.2,4,3.3,0.8,5,5.6,5.8,4.7,1.3,3,3.7,11.2,3,2.8,3.8,1.8,3.4,2.7,3.8,1.9,2.5,2.2,2.4,2.1,2.8,2.9,3.4,3.9,4.3,5.6,4.7,1.4,2.7,1.7,3.2,1.8,1.8,0.8,2.7,2.6,2.5,3.9,2.7,1.2,6.8,2.2,4.2,5.1,2.8,4.6,5.3,1.9,1.3,1.4,2.3,2,2,4.9,4.1,4.3,9.5,6.9,1.4,1.2,4.6,14.5,3.2,1.7,1.8,4,2.9,2.5,2.2,5,2.4,3.6,1.4,2.4,1.6,3.8,3,3.2,6.4,2.6,1.2,2,3.2,2.7,1.5,1.5,3.6,2.1,1.2,2.3,1.1,2.6,1.7,2.1,2.6,4,1,2.2,1.3,2.6,3.6,2.7,2.6,1.9,1.1,2.5,4,2,3,3,3.8,1.3,2.7,3.2,2.6,1.7,1.1,2,0.9,2.8,1.6,2.4,1.5,2.8,2.1,1.7,3.8,3.6,2.7,1.3,3.3,4.2,1.5,3,2.8,2.7,6.1,5,2.2,3.8,5.2,3.8,4.2,3.4,5.2,5.3,4.7,1.1,5.5,3.3,3.6,1,0.9,1.2,3,2.9,3.9,5.5,1.1,4.4,2.8,2.3,3.3,3,3,2.1,6.3,6.8,1.5,4.1,3.2,2,1.7,6.3,4.4,2,5.3,4.2,1.4,3.2,4.8,3.6,5.8,6.8,2.3,5.2,8.7,4.2,1.6,4.5,3.4,3,5.4,4.1,3.6,5.9,5.4,3.6,2,6.8,1.6,3,6.2,3.5,8,2.1,4.2,6.8,5.2,1.4,4.1,2.3,4,3.6,2.8,3.5,3.4,2,3.8,1.8,3.4,1.8,2,2.6,3.2,1.5,1.2,3.2,3.2,4.8,1.7,2.5,2.5,5.4,2.5,4.8,4.1,3,4,3,2.9,2.3,2.2,1.8,2,1.6,2.4,3.5,2.8,2,0.9,4.7,3.6,2.8) 64,88,1 48,24 2,0,0,229,665,0,MIDM 2,288,18,177,576,0,MIDM 65535,52427,65534 1,D,4,2,0,0 Data based on a map of Helsinki Metropolitan area (YTV liikenne: PŠŠkaupunkiseudun joukkoliikennekartta 11.8.2002). Link ['1001,1002','1001,1004','1001,1005','1001,1011','1001,1012','1001,1015','1001,1017','1001,1018','1001,1020','1002,1003','1002,1004','1002,1009','1002,1010','1002,1011','1003,1004','1003,1007','1003,1008','1003,1009','1003,1010','1004,1005','1004,1007','1004,1009','1004,1010','1005,1006','1005,1007','1005,1018','1005,1066','1009,1010','1010,1011','1010,1026','1010,1067','1011,1012','1011,1013','1012,1013','1012,1014','1012,1015','1012,1019','1012,1021','1013,1014','1013,1015','1013,1027','1014,1015','1014,1016','1014,1029','1014,1030','1015,1016','1015,1017','1015,1021','1015,1029','1016,1017','1016,1025','1016,1029','1016,1030','1016,1036','1017,1019','1017,1020','1017,1021','1017,1022','1017,1023','1017,1025','1017,1037','1018,1019','1018,1020','1019,1020','1019,1021','1019,1022','1019,1023','1020,1021','1020,1022','1020,1023','1020,1052','1021,1022','1021,1023','1021,1025','1022,1023','1022,1025','1023,1024','1024,1025','1024,1042','1025,1036','1025,1037','1025,1040','1026,1067','1027,1028','1027,1067','1027,1068','1027,1083','1027,1084','1028,1029','1028,1031','1028,1084','1029,1030','1029,1031','1029,1032','1030,1031','1030,1034','1030,1035','1030,1036','1030,1037','1031,1032','1031,1034','1031,1081','1032,1033','1032,1034','1032,1035','1032,1082','1032,1083','1032,1100','1032,1102','1032,1104','1033,1034','1034,1035','1034,1036','1034,1038','1035,1038','1035,1102','1036,1037','1036,1038','1037,1038','1037,1040','1037,1041','1037,1043','1038,1039','1038,1040','1038,1109','1039,1040','1039,1048','1039,1109','1040,1041','1040,1048','1040,1109','1041,1042','1041,1043','1041,1044','1041,1047','1042,1043','1042,1045','1042,1051','1042,1056','1042,1059','1042,1117','1042,1128','1043,1044','1043,1045','1043,1050','1043,1125','1044,1045','1044,1046','1044,1047','1045,1050','1045,1051','1045,1059','1045,1060','1045,1128','1046,1047','1046,1048','1046,1049','1046,1050','1047,1048','1047,1109','1048,1049','1049,1050','1049,1112','1049,1113','1049,1117','1050,1051','1051,1128','1051,1129','1052,1055','1053,1055','1053,1056','1054,1055','1054,1056','1054,1057','1054,1058','1054,1059','1055,1056','1056,1058','1056,1059','1056,1061','1057,1058','1057,1060','1057,1061','1057,1063','1057,1064','1058,1059','1058,1060','1058,1061','1059,1060','1060,1061','1060,1062','1061,1062','1062,1063','1062,1065','1062,1129','1063,1064','1063,1065','1064,1065','1067,1068','1067,1069','1067,1073','1068,1069','1068,1070','1068,1084','1069,1070','1069,1071','1069,1073','1070,1071','1070,1072','1070,1073','1070,1084','1071,1072','1071,1073','1071,1074','1071,1075','1072,1075','1072,1085','1073,1074','1074,1075','1074,1076','1074,1079','1074,1085','1075,1076','1075,1079','1075,1085','1076,1077','1076,1078','1076,1079','1077,1078','1077,1080','1078,1079','1078,1080','1079,1080','1079,1091','1080,1095','1081,1082','1081,1083','1082,1083','1082,1086','1082,1087','1082,1100','1082,1101','1083,1084','1083,1085','1083,1086','1083,1087','1084,1085','1084,1086','1085,1086','1085,1090','1085,1092','1085,1093','1086,1087','1086,1090','1087,1088','1087,1089','1088,1089','1088,1093','1088,1100','1089,1090','1089,1093','1090,1091','1091,1092','1092,1093','1092,1095','1093,1094','1093,1095','1093,1097','1095,1096','1097,1098','1097,1099','1097,1104','1100,1101','1100,1102','1100,1104','1101,1102','1101,1103','1101,1104','1102,1103','1102,1107','1102,1108','1103,1104','1103,1105','1103,1106','1103,1107','1103,1108','1105,1106','1105,1107','1106,1107','1107,1108','1107,1110','1107,1111','1108,1109','1109,1110','1109,1111','1109,1112','1109,1113','1109,1117','1110,1111','1110,1112','1112,1113','1112,1114','1112,1115','1112,1123','1113,1114','1113,1115','1113,1116','1113,1117','1114,1115','1114,1123','1115,1116','1115,1120','1115,1122','1115,1123','1116,1118','1116,1120','1117,1118','1117,1127','1117,1128','1118,1119','1118,1120','1118,1127','1119,1120','1119,1121','1119,1126','1119,1127','1120,1121','1120,1122','1120,1127','1121,1122','1121,1124','1121,1125','1122,1124','1124,1125','1125,1126','1125,1127','1127,1128','1128,1129'] 64,120,1 48,12 Other actions 0 104,256,1 96,12 There are several new personal rapid transit (PRT) solutions under operation or preparation. However, all require extensive new infrastructure, either vehicles or roads Under operation: CyberCab: The CyberCab is a new people mover system which first application is a temporary installation during the Floriade 2002 Ð a horticultural exposition organized once every ten years. 25 CyberCabs will provide transportation to the summit of the 40 meter high observation point: Big SpottersÕ Hill. The CyberCab is a fully automated vehicle seating 4 passengers. The system is operated by 2getthere.<a href="http://faculty.washington.edu/jbs/itrans/cybercab.htm">Click</a> Under planning: HiLoMag: special high-speed gateways for dual-mode cars <a href="http://faculty.washington.edu/~jbs/itrans/hilo1.htm">Click</a> BiWay dual mode transport: network of elevated tracks along which vehicles are magnetically levitated, and guided under computer control. <a href="http://www.buick.co.uk/biway/intro4.html">Click</a> Other_actions 104,360,1 76,72 2,299,66,476,385 Composite traffic alone cannot cover all needs of car ownership, but it is almost as good when combined with car sharing or rental composite_traffic_dummy 504,264,1 76,56 There is an inefficiency bump at 0-20% composite fraction: with too low trip volumes, the benefits from aggregating trips are not realised, and the system is not profitable There is an inefficiency bump at 0-30% (depending on various details about organising the traffic) composite fraction: with too low trip volumes, the benefits from aggregating trips are not realised, and the system is not profitable Inefficiency bump in Finnish: tehottomuustšyssy. composite_traffic_dummy 480,408,1 80,72 2,103,257,476,343 65535,65532,19661 Composite traffic aggregates similar trips into public vehicles In composite traffic, a centralised system collects the information on all trips online, aggregates the trips with the same origin and destination into public vehicles with eight or four seats, and sends the travel instructions to the passengers' mobile phones. composite_traffic_dummy 504,64,1 48,55 1,1,1,1,1,1,0,,1, [Alias Composite_traffic_a1] The pressures from road traffic have stimulated efforts to reduce emissions, congestion, injuries, and need to travel The pressures from road traffic have stimulated efforts to reduce emissions (electric, hybrid, and hydrogen cars1, natural gas buses2, catalysts and particle traps3, and driving style4); congestion (traffic control5, street tolls, public transport subsidies); injuries (anti-locking brakes, airbags, speed limits6); and need to travel (urban planning7). Emissions 328,336,1 72,52 2,310,109,596,455 1. Ortmeyer,T.H. & Pillay,P. Trends in transportation sector technology energy use and greenhouse gas emissions. Proceedings of the Ieee 89, 1837-1847 (2001). 2. Tainio,M. et al. Health effect caused by primary fine particulate matter (PM2.5) emitted from busses in Helsinki Metropolitan Area, Finland. Risk Anal. 25, 149-158 (2005). 3. Mediavilla-Sahagun,A. & ApSimon,H.M. Urban scale integrated assessment of options to reduce PM10 in London towards attainment of air quality objectives. Atmos. Environ. 37, 4651-4665 (2003). 4. Vangi,D. & Virga,A. Evaluation of energy-saving driving styles for bus drivers. Proceedings of the Institution of Mechanical Engineers Part D-Journal of Automobile Engineering 217, 299-305 (2003). 5. Hounsell,N.B. & McDonald,M. Urban network traffic control. Proceedings of the Institution of Mechanical Engineers Part I-Journal of Systems and Control Engineering 215, 325-334 (2001). 6. Elvik,R. Optimal speed limits - Limits of optimality models. Transportation Research Record 32-38 (2002). 7. Banister,D. Reducing the need to travel. Environment and Planning B-Planning & Design 24, 437-449 (1997). New fuels and engines 0 104,64,1 96,12 Particle traps, catalysts 0 104,96,1 96,12 Driving style 0 104,128,1 96,12 Traffic control, speed limits 0 104,160,1 96,12 Subsidies to public transport 0 104,32,1 96,12 Airbags, ABS brakes 0 104,192,1 96,12 Urban planning 0 104,224,1 96,12 Emissions New_fuels_and_engine; Particle_traps__cata; Driving_style; Traffic_control__spe; Urban_planning; Composite_traffic_du 328,64,1 88,12 Congestion Driving_style; Traffic_control__spe; Subsidies_to_public_; Urban_planning; Composite_traffic_du 328,128,1 88,12 Injuries Traffic_control__spe; Airbags__abs_brakes; Composite_traffic_du; Driving_style 328,160,1 88,12 Need to travel Urban_planning 328,256,1 88,12 City infrastructure Urban_planning; Composite_traffic_du 328,192,1 88,12 Price of a trip Subsidies_to_public_; Composite_traffic_du 328,32,1 88,12 Recreational values Urban_planning; Composite_traffic_du 328,224,1 88,12 Composite traffic aggregates similar trips into public vehicles 1 656,360,1 48,55 1,1,1,1,1,1,0,,1, Composite_traffic_ag Argument 0 56,488,1 48,24 Conclusion 0 56,544,1 48,24 65535,65532,19661 Calculations 0 56,432,1 48,24 Module: more details inside 0 jtue 15. Aprta 2005 14:34 56,376,1 48,29 Legend Code legend for model items 64,312,-1 64,37 1,0,0,1,0,0,1,,0, 39321,52431,65535 Arial, 19 45-60% composite fraction is optimal 1 504,128,1 48,38 65535,65532,19661 A45_60__composite_fr Model info URN:NBN:fi-fe20051439 DC-attribute with refinement Scheme (if any) Value Title Composite traffic model 1.0.1 Creator Tuomisto, Jouni Creator Tainio, Marko Subject Trip aggregation Subject Urban traffic Subject Public transportation Description.abstract Background Traffic congestion is rapidly becoming the most important obstacle to urban development. In addition, traffic creates major health, environmental, and economical problems. Nonetheless, automobiles are crucial for the functions of the modern society. Most proposals for sustainable traffic solutions face major political opposition, economical consequences, or technical problems. Methods We performed a decision analysis in a poorly studied area, trip aggregation, and studied decisions from the perspective of two different stakeholders, the passenger and society. We modelled the impact and potential of composite traffic, a hypothetical large-scale demand-responsive public transport system for the Helsinki metropolitan area, where a centralised system would collect the information on all trip demands online, would merge the trips with the same origin and destination into public vehicles with eight or four seats, and then would transmit the trip instructions to the passengers' mobile phones. Results We show here that in an urban area with one million inhabitants, trip aggregation could reduce the health, environmental, and other detrimental impacts of car traffic typically by 50-70 %, and if implemented could attract about half of the car passengers, and within a broad operational range would require no public subsidies. Conclusions Composite traffic provides new degrees of freedom in urban decision-making in identifying novel solutions to the problems of urban traffic. Publisher Kansanterveyslaitos (KTL; National Public Health Institute) Date.issued W3C-DTF 2005-11-30 Type DCMIType Software Format IMT text/xml Format.medium computerFile Format 836 kB Identifier http://www.ktl.fi/risk Identifier URN URN:NBN:fi-fe20051439 Language ISO639-2 en Rights Copyright Kansanterveyslaitos, 2005 0 88,28,1 80,20 2,105,198,476,499 65535,54067,19661 Most proposed solutions aiming at sustainable traffic involve severe political, economical, or technical problems other_actions 504,400,1 72,56 Cost assumptions and outputs ktluser 12. heita 2005 22:51 48,24 192,584,1 48,28 1,0,0,1,1,1,0,,0, 1,274,10,-1388,359,17 Table 1 1 172,100,1 156,12 1,0,0,1,0,0,0,72,0,1 Table_1_pressures Figure 3.top 1 172,196,1 156,12 1,0,0,1,0,0,0,72,0,1 Fig_5a_societal_cost Figure 3.middle 1 172,220,1 156,12 1,0,0,1,0,0,0,72,0,1 Fig_5b_subsidies Figure 3.bottom 1 172,244,1 156,12 1,0,0,1,0,0,0,72,0,1 Fig_5c_expanding Figure 2 1 172,172,1 156,12 1,0,0,1,0,0,0,72,0,1 Fig_4_cost_variation Figure 1 1 172,124,1 156,12 1,0,0,1,0,0,0,72,0,1 Fig_2_trips Cost by type to stakeholder 1 172,148,1 156,12 1,0,0,1,0,0,0,72,0,1 Fig_3_cost_by_source Fig 6A Passenger VOI 1 172,268,1 156,12 1,0,0,1,0,0,0,72,0,1 Fig_6a_passenger_voi Fig 6B Societal VOI 1 172,292,1 156,12 1,0,0,1,0,0,0,72,0,1 Fig_6b_societal_voi Decision 0 56,600,1 48,24 Log 1.2 20.6.2006 Jouni Tuomisto Nyt kun pitŠisi tosissaan ruveta tekemŠŠn uutta yhdistelmŠliikennemallia, herŠŠ kysymys, mitŠ mallia/malleja pitŠisi kŠyttŠŠ pohjana. TŠssŠ siis ensimmŠisenŠ kuvaus nyt olemassaolevista malleista (esitelty aikajŠrjestyksessŠ). Lopputulos on, ettŠ kehitys aloitetaan yhdistŠmŠllŠ olennaiset osat versioista 1.1, 1.0.5, ja sup1_metro. Muut siirretŠŠn Old-kansioon. NŠistŠ otetaan peruskehityksen kohteeksi 1.0.5, ja muiden muutokset siirretŠŠn ja kopioidaan siihen. Versionumeroksi annetaan 1.2. Alustavasti tŠmŠ onnistuikin, ja kaikki muiden versioiden olennaiset ominaisuudet siirrettiin 1.2:een. NŠitŠ ovat * Eri skenarioajojen vŠliltŠ valitseminen (epŠaktiivinen koodi vain) * uusi liukuvasti aggregoiva Trips-solmu 1.1-versiosta ja tŠhŠn liittyen uusi Vehicle-indeksi. * Autotyyppikohtaiset autotiedot erotuksena vanhaan, jossa koka vehicle-indeksin riville annettiin oma tieto. * Passiivinen koodi metron mukaanotosta malliin, sisŠltŠen Metro_matrixin ja Va1-solmun. Seuraavaksi tehtŠviŠ hommia ovat * rakentaa joukkoliikenteen matkamatriisi * syšttŠŠ sisŠŠn joukkoliikennereitit (Virpi tekee) * Mieti, mitkŠ olisivat jŠrkevŠt skenaariot laskettavaksi. * tehdŠ solmu, joka pistŠŠ public fraction:in verran vŠkeŠ joukkoliikenteeseen jos se on tarjolla, ja yhdistelmŠliikenteeseen loput; tŠmŠn pitŠŠ olla Tripsin ylŠvirrassa. * Muuttaa vehicle balance- ja muita solmuja siten, ettŠ ne eivŠt ole ajoneuvoriippuvaisia. * TehdŠ solmu jolla valitaan, millainen auto on N henkilšn kuljetuksessa kŠytšssŠ. TŠtŠ pitŠŠ pystyŠ vaihtelemaan Scenario_inputilla. *Korjata Tripsia, koska nyt se antaa korkeintaan 1:n yhdistelmŠliikennemuodoille, ja loput menevŠt autoihin. * Tarkistaa tarvitaanko Vehicle_balance1-solmua johonkin ja poistaa se jos ei. * MiettiŠ onko tarpeen kerŠtŠ matkatiedot nyt suunnitellulla Vehicle-indeksin tarkkuudella. Jos auton kokoluokka on mŠŠritelty erikseen (ks 3 palloa ylšs), ei ole vŠliŠ montako ihmistŠ siinŠ on. SenhŠn voinee laskea jŠlkeenpŠin, tosin vain keskiarvon (?) TŠmŠ voi olla kriittinen asia muistin kannalta, koska nyt vehicle-indeksi on paljon isompi kuin ennen. 29.6.2006 Jouni Tuomisto Tehtiin seuraavat muutokset: - Luovutaan kokonaan termistŠ composite fraction, koska nyt osuus voidaan laskea joko automatkoista tai joukkoliikennematkoista, eikŠ se ole siis yksiselitteinen. NiinpŠ aletaan kŠyttŠŠ nimiŠ car fraction ja public fraction jotka ovat ne osuudet nykyisestŠ liikenteestŠ jotka S€ILYV€T alkuperŠisessŠ moodissa. Nykytila on siis car 100% public 100%. TŠmŠ muutos aiheuttanee muutoksia useampaan solmuun, mutta niitŠ ei ruveta tekemŠŠn systemaattisesti nyt. -Korjattiin All_trips uuden systeemin mukaiseksi, ja nŠyttŠŠ toimivan. LisŠttiin indeksiin Input_var rivi Public level kuvaamaan sitŠ, miten laajaa joukkoliikennettŠ on tarjolla eli paljonko supistetaan siitŠ mitŠ on nyt olemassa. TŠmŠ on vasta rivinŠ indeksissŠ, eikŠ sen operationalisointia ole rakennettu. -Korjattiin TripsiŠ, ja nyt nŠyttŠŠ toimivan. Ongelmana oli, ettŠ y&'c'=Vehicle_noch on ERI asia kuin (y&'c')=Vehicle_noch eli sulkeet tarvitaan kertomaan ettŠ kyseessŠ on yksi tekstimuuttuja. -MietittŠvŠ indeksit Vehicle, Vehicle_noch, Vehicle_type. Nyt ajattelen niin, ettŠ Outputsiin pistetŠŠn Vehicle_type ja Mode1. Se on epŠselvŠŠ, kannattaako Nochange-lukua kuljettaa mukana ollenkaan, kun ei taida olla kovin olennainen. Olisi se toisaalta kuitenkin mukava, joten pitŠŠ miettiŠ. - Joitakin Outputsiin johtavia solmuja muutettiin ja kaikkien toimivuus tarkastettiin. Kuitenkaan indeksejŠ ei alettu muuttaa, koska asia on vielŠ pŠŠttŠmŠttŠ (ks. edellinen ranskalainen viiva). - On myšs mietittŠvŠ, miten lasketaan ylimŠŠrŠinen noukkimiseen kuluva aika. TŠllšin tarvitaan tietoa a) montako autoa ajaa kyseisten paikkojen vŠliŠ (jotta voidaan vŠhentŠŠ pysŠhtymispisteiden mŠŠrŠŠ) b) montako henkeŠ on autossa (jotta voidaan laskea todennŠkšisten pysŠhdysten mŠŠrŠ). TŠmŠ on vielŠ miettimŠttŠ, mutta analyyttinen ratkaisu ongelmaan on keksitty. 30.6.2006 Jouni Tuomisto Outputs-solmun ylŠvirtaa siivottiin, ja Waitingia lukuunottamatta ne saatiin oikeaan formaattiin. Waiting pitŠŠ miettiŠ kokonaan uudestaan. 1.7.2006 Jouni Tuomisto Waiting mietittiin uusiksi. Nyt se huomioi pudotuspisteiden mŠŠrŠn alueella, yhtŠaikaisten autojen yhteistyšn, ja vaihtoajan, joka on nyt vakio 6 min koska usean auton tilanteessa hyšty otetaan pudotuspisteiden vŠhentŠmisestŠ. MikŠ mukavinta, ajat eivŠt nŠytŠ pahoilta nŠillŠ testinumeroilla, mikŠ kyllŠ johtuu siitŠ ettŠ mukana on vain ydinkeskusta ja vaihtoja ei tarvita. 2.7.2006 Jouni Tuomisto Kaikki Outputsiin tulevat solmut jŠrjestettiin, aggragointifunktiot yhdenmukaistettiin ja indeksit muutettiin jŠrjestelmŠllisiksi. Nyt Output1-indeksissŠ on vain 6 riviŠ mutta 8 muuttujaa. TŠmŠ tehtiin siten, ettŠ total_vehicle_need, link_intensity ja areal_vehicle_peak yhdistettiin yhdeksi muuttujaksi period-indeksin riveinŠ tŠssŠ jŠrjestyksessŠ. Kaikki muut muuttujat muutettiin siten, ettŠ niissŠ on indeksit Zone, Length, Period ja Vehicle_type. TeknisiŠ vikoja en enŠŠ nŠistŠ solmuista lšytŠnyt, joten periaatteessa malli on nyt ajokunnossa. 3.7.2006 Jouni Tuomisto TŠydennettiin Public level malllin toimivaksi osaksi. Tein Public_martix-solmun, jota tŠssŠ hyšdynnetŠŠn. Se on kuitenkin pelkkŠ dummy, koska oli Virpin ja Hannan homma kehittŠŠ joukkoliikennereittimatriisia, joten siihen ei puututa. Nyt voisi testata, antaako malli samoja tuloksia kuin edellinen malli. Tuo edellinen lause havahdutti huomaamaan, ettei mallilla pystykŠŠn laskemaan samoja skenaarioita. Trips kun on rakennettu siten, ettŠ matkaryhmŠn kokoa pienennetŠŠn yksi kerrallaan, ja vanhoissa skenaarioissa hypŠttiin neljŠn vŠlein. TŠmŠ ongelma vaati koko pŠivŠn taustapohdintaa sekŠ Tripsin uudelleenmiettimistŠ. Ongelma ratkaistiin siten, ettŠ nyt yhdistely tehdŠŠn Vehicle_noch-indeksillŠ rivi kerrallaan, eikŠ perŠkkŠisten rivien tarvitse sisŠltŠŠ perŠkkŠisiŠ numeroita, kunhan ovat alenevassa jŠrjestyksessŠ. Sen ei siis myšskŠŠn tarvitse olla yhtŠ suurempi kuin Vehicle-indeksi kuten aiemmin. MerkintŠtapaa indekseissŠ muutettiin siten, ettŠ ensimmŠinen merkki on d=direct tai c=change ja sitten tulee ryhmŠn koko. TŠmŠ vaati muutaman tarkistusrivin lisŠŠmisen joihinkin solmuihin, jotta vŠltetŠŠn virheilmoitukset tapauksessa joissa vehicle_noch:ssa on vŠhemmŠn rivejŠ kuin vehicle:ssŠ. Scenarios-solmu tarkistettiin ja pŠivitettiin. Nyt siinŠ on kolme skenaariota vanhasta tutkimuksesta, ja ainakin 16 alueen minimallilla ne toimivat hyvin. Nyt pistŠn tŠmŠn ajamaan yšksi 129 alueella. 9.7.2006 Jouni Tuomisto Muisti tškkŠsi 129 alueen kanssa, mutta 64 aluetta ajautui kutakuinkin siivosti. Ongelmana on Waiting-solmu, jossa on kovin monta indeksiŠ yhtŠaikaisesti pyšrimŠssŠ, ja sitten vielŠ lisŠtŠŠn Waiting_time. Yritin ideoida erilaisia ratkaisuja: - Ei summatakaan tietyn odotusajan matkojen lukumŠŠriŠ, vaan lasketaan keskiarvoja. TŠmŠ ei onnistu siksi, ettŠ pitŠisi pystyŠ laskemaan keskiarvot ennen esim. From-indeksin romauttamista Zoneksi , jolloin en keksinyt hyvŠŠ tapaa ilman ettŠ tauluun siunaantuu nollia jotka pilaavat keskiarvoistuksen. - Yritin tehdŠ while-do-luuppeja joihin yhdistetŠŠn slice-funktio, mutta tulos johti vain tosi hitaaseen laskentaan verrattuna alkuperŠiseen. En jaksanut selvittŠŠ oliko syynŠ bugi vain onko slicaaminen vain sen verran hidasta. -Yritin myšs semmoista, ettŠ Waiting timen lisŠksi tehdŠŠn for- luuppi timelle, mutta sekin nŠytti pidentŠvŠn laskenta-aikaa. TŠmŠ kyllŠ olisi mahdollinen ratkaisu, mutten nyt jaksa testailla laskenta-aikoja. Voisin ehkŠ tehdŠ sitŠ huomenna tšissŠ sivukoneella. 10.7.2006 Jouni Tuomisto En enŠŠ palannut tuohon Waitingin muistiongelmaan, vaan uskon sen olevan siedettŠvŠ kun mallia ajetaan BBU:lla. TŠnŠŠn sen sijaan yhdistin Virpin, Hannan ja Ollin muokkaaman Bussireittimatriisin ja HLT-matkamatriisin perusmalliin. LisŠsin myšs scenario_inputiin mahdollisuuden vaihtaa matkamatriisia skenaariosta toiseen. Bussireittimatriisi toimii muuten hyvin, mutta aikaulottuvuutta en saa toimimaan. SyynŠ on se, ettŠ jossain vaiheessa Mirror-funktiossa tulee m..n indeksi, jossa m tai n eivŠt olekaan skalaareja. Yritin ratkaista tŠtŠ kŠyttŠmŠllŠ for w[]:= luuppia koko kaavan ympŠrillŠ, mutten saanut sitŠ toimimaan. Huomasin, ettŠ Si_pi-funktio on iŠnikuinen Ana 2.0-koodia sisŠltŠvŠ. PŠivitin sen, jolloin poistui myšs tarve erilliselle normitus-funktiolle. Nimi vaihdettiin versioksi 1.3. 0 648,16,1 48,12 2,676,125,500,418 65535,54067,19661 Log 1.3 11.7.2006 Jouni Tuomisto Tein muutamia skenaarioita ja ajattelin testata systeemiŠ BBU:ssa. Joukkoliikennematriisi ei toimi vielŠ tyydyttŠvŠllŠ tavalla, joten kŠytŠn oletusta ettŠ joukkoliikenne on kaikkialla (missŠ on matkojakin). 13.7.2006 Jouni Tuomisto Hip hurraa! Onnistuin ratkaisemaan Waiting-ongelman siten, ettŠ laskenta vielŠkin nopeutui noin varttituntiin ja muistia vaaditaan pahimmillaan 1.2 GB. Ajoin koko mallin Output1:een asti kannettavalla, ja aikaa meni 75 min. Kuitenkin silloin huomasin, ettŠ matkojen kokonaismŠŠrŠ on 3* liian suuri, ja siitŠ pŠŠdyin huomaamaan, ettŠ matkamatriisit eivŠt ihan vielŠ ole johdonmukaisesti rakennettuja. Koska HLT2005 sisŠltŠŠ myšs kulkutapatietoa, sitŠ pitŠisi kŠyttŠŠ. Mutta jos kŠytetŠŠn, adjusted_trip_rate joka skaalataan henkilšautomatkoihin on vŠŠrin. TŠmŠ pitŠŠ siis vielŠ miettiŠ ja korjata. Se olikin aika helppo ja on nyt korjattu. Mutta vielŠ tuli isompi kysymys: miten lasketaan joukkoliikenteen lopputulemat? NythŠn kaikki TripsistŠ lŠhtevŠ on vain yhdistelmŠliikennettŠ, eikŠ joukkoliikennettŠ malliteta ollenkaan. Koska mallissa ei huomioida joukkoliikenteen ajoneuvojen kokoa, ei myšskŠŠn pystytŠ laskemaan ajoneuvokilometrejŠ, eikŠ siksikŠŠn etteivŠt vuorovŠlit ole realistisia. Ajoneuvotyypit eivŠt myšskŠŠn ole tiedossa, joten matkojen mŠŠrŠ eri aikoina, pituuksilla ja alueilla on riittŠvŠ tieto. Odotusajat olisi kyllŠ kiva tietŠŠ, mutta koska joukkoliikennettŠ ei mallinneta ajoneuvon tarkkuudella, tŠmŠ ei ole mahdollista. Vaihtojahan ei oleteta olevan ollenkaan eli jos suoraa yhteyttŠ ei ole, matka siirtyy yhdistelmŠliikenteeseen. Yhteenvetona siis voi sanoa, ettŠ joukkoliikennematkojen mŠŠrŠ on riittŠvŠ tieto vaikutusten arvioimiseen. TŠhŠn vaikuttaa joukkoliikennematriisi, joka riippuu joukkoliikennematkoista seuraavasti: - Jos matkojen mŠŠrŠ tietyllŠ vŠlillŠ on suurempi tai yhtŠ suuri kuin Public level, niin reitti kuljetaan. Jos Public level siis on 0, kuljetaan kaikki olemassaolevat reitit. Public trips per linkin avulla pitŠisi piirtŠŠ joukkoliikennekartta siitŠ, mitŠ reittejŠ on mukana missŠkin skenaariossa ja kuvata nŠmŠ sitten yhdessŠ yhdistelmŠliikenteen kustannusten kanssa. TŠmŠ ei riipu skenaarioista, joten sen voi tehdŠ milloin vain. Poistin Felxible fractionin toiminnasta, koska sitŠ en ole koskaan tarvinnut, ja toteutustapa tuntuu nyt huonolta. EhkŠ koodinkin voisi poistaa kokonaan, mutten sitŠ vielŠ tee. TeinpŠs kumminkin sen, ettŠ pooistin sen Input_var-indeksistŠ, jotta sen rakennetta ei tarvitse mennŠ muuttelemaan sitten, kun skenaarioita ehkŠ on ajettu. Nyt siitŠ oli lisŠhaitta, ettŠ kun Scenario_inputia muutti, Public trips per link:n arvot unohtuivat, ja se on hidas laskea, melkein puoli tuntia. Nyt se lasketaan vain kerran, vaikka skenaariot vaihtuisivatkin. EipŠs muuten olekaan, ylŠvirrassa valitaan matkamatriisi, joten kaikki unohtuu joka tapauksessa. TŠtŠ pitŠisi ehkŠ miettiŠ, saisiko sen laskettua muuten. Joko on tehtŠvŠ niin, ettŠ matkamatriisia ei muutella skenaarioiden vŠlillŠ, tai sitten Public_trips_per_link lasketaan vakiomatriisista. EnsimmŠinen on jŠrkevŠmpi, ja sen mukaisesti siis muutetaan. LisŠtŠŠn yksi choice vŠliin, niin muistaa paremmin ettŠ sitŠ voi muutella. Tulipa muuten mieleen, ettŠ voisi ottaa kŠytŠnnšksi sen, ettŠ ajaisi skenaarioita aina jonkun vakiomŠŠrŠn, semmoisen minkŠ yhdessŠ tai kahdessa yšssŠ ajaa. Sitten olisi helpompi vaihdella skenaariopaketteja. 14.7.2006 Jouni Tuomisto Huomasin kumman ominaisuuden vai liekš bugi: a:= if a=0 or isnan(a) then 100u else a; antaa isnan-funktion arvoksi false vaikka a=0/0, mutta kun sama erotetaan kahdelle riville, ei tule virhettŠ. 15.7.2006 Jouni Tuomisto Olen nyt pŠivittŠnyt kustannuspuolta. Keksin muuttaa kŠytettŠvŠt indeksit dynaamisiksi sten, ettŠ ainoastaan skenaarioissa kŠytetyt arvot tulevat indeksiin. NŠin sŠŠstyy palson muistia, eikŠ tarvita ollenkaan Choose_var-solmujja. Koko Cost-puolen koodaus ja indeksit on kŠytŠvŠ lŠpi. Vanhassa versiossa on ollut vehicle_noch- tai vehicle_indeksi kŠytšssŠ, ja nŠitŠ lšytyy vŠhŠn joka koodista. Toisaalta Park rush veh-rivi on pistŠnyt asioita uusiksi. Esim. Cars needed-solmu on laskettava uusiksi park rushveh-riviltŠ. Muutenkin on hankala ymmŠrtŠŠ mitŠ vanha koodi teki, mutta kai siinŠ jŠrkion. Bussimatriisin etŠisyydet pitŠŠ laskea erikseen, koska reitit eivŠt ole identtiset autojen kanssa. tŠmŠ onnistuukin mutta on tehtŠvŠ staattinen indeksi links_pub kuten links_1. TŠtŠ ei kuitenkaan kannata tehdŠ staattiseksi ennen kuin on lopullinen joukkoliikennematriisi. NiinpŠ nyt lasketaan se staattisesti. 17.7.2006 Jouni Tuomisto Linkki 1011,1012 puuttuu normaalista tiestšstŠ, mutta bussit ajavat sitŠ. NiinpŠ se on lisŠttŠvŠ Link_length-tauluun. Tein sen jo, mutta linkin pituus on tarkastettava kartasta. Sama pŠtee pareille 1014,1015; 1010,1011; 1001,1011; 1001,1015. LisŠksi nŠitŠ pareja tulee lisŠŠ, kun From mŠŠritellŠŠn isommaksi. Aggr_length sisŠltŠŠ nyt oletuksen, ettŠ Mode1 otetaan mukaan (koska ylŠvirran Distance sisŠltŠŠ tuon indeksin). Tuohan on niin kuin pitŠŠ, mutta kaikki solmut on katsottava lŠpi, ettŠ tulokset ovat oikein, tai sitten vain scisattava muut vasteen tuin yhdistelmŠliikenne pois. NythŠn pointtina on vertailla tuloksia vanhan tutkimuksen kanssa. 18.7.2006 Jouni Tuomisto Vehicle_km tehdŠŠn siten, ettŠ Vehicle_typeen tehdŠŠn yksi uusi rivi Bus, joka on 50 hengen bussi. Bussikilometrit lasketaan erikseen sen perusteella, onko linja toiminnassa vai ei perustuen joukkoliikenteen Distanceen. Oletetaan ettŠ busseja lŠhtee vakioaikavŠlein ajamaan reittiŠ vakionopeudella, jolloin tarvittavien bussien mŠŠrŠ on distance/vehicle_speed/0.5 h jos vuorovŠliksi halutaan puoli tuntia. Mutta nyt iso kysymys kuuluu, miten mŠŠrŠtŠŠn se, miten bussi ajaa tai ei aja. Jos monta bussivuoroa ajaa samaa reittiŠ, mitkŠ busseista ajetaan ja mitkŠ ei? Bussimatriisi pitŠisi pystyŠ palauttamaan jotenkin takaisin bussilijoiksi, jolloin nŠhtŠisiin, mitkŠ vuorot ovat olemassa, ja sitten voitaisiin laskea, tuo autojen tarve. TŠmŠ kuitenkin vaatii melkoista pohdintaa, eikŠ valmiita ideoita ole. 20.7.2006 Jouni Tuomisto PitŠŠ pohtia se, miten Time_cost oikeasti lasketaan. Onko siis keskimŠŠrŠinen odotusaika laskettu jokaiselle Composite_tripsille (jotka voivat oikeasti olla matkan puolikkaista) vai jokaiselle alkuperŠiselle matkalle (Trips_per_period). TŠmŠ varmaan vaikuttaa lopputulokseen aika lailla. Toinen kysymys on se, ettŠ Trips_per_period on indeksoitu Mode1:llŠ, mikŠ ei kustannuslaskentapuolella ole yleistŠ ja aiheuttaa siten harmia. 0 648,40,1 48,12 2,797,145,476,224 65535,54067,19661 Log 1.4 20.7.2006 Jouni Tuomisto Otin kŠyttššn uuden versionumeron, koska pŠŠtin kasvattaa Vehicle_type-indeksiŠ yhdellŠ rivillŠ eli Bus. TŠmŠ vaikuttaa niin moneen asiaan, ettŠ oli syytŠ vaihtaa numeroa. TŠmŠ liittyy Trips_per_period-korjaukseen, jonka avulla mode1 voidaan pŠŠtellŠ vaikka sitŠ indeksiŠ ei kŠytettŠisikŠŠn. Eli Bus=Public, Minibus ja Car (d)=Composite ja Car (g)=Car. TŠmŠn takia on korjattava ainakin Emission_factor, Fuel consumption, Vehicle_lifetime, Vehicle_price. Laskentaan tuli ongelmia: Kun yritetŠŠn laskea mean tai sample, alkaa Car_fr-indeksi herjata. Huomasin tŠmŠn vasta nyt, koska kaikki tŠhŠnastiset solmut ovat laskeneet odotusarvoisesti mid. Pistin Luminaan meilin, ja sieltŠ ehkŠ jotain kuuluu. Uusien bussilinkkien Distances on tarkastettava. Mirror2 voisi nimetŠ Mirror. Public matrix alkaa olla liian kova pala tŠlle illalle. Idea on se, ettŠ lasketaan joka linkille matkustajasuorite ja katsotaan tŠyttyykš kriteeri. Sitten katsotaan jokainen bussireitin etappi ja katsotaan, onko tuolla etapilla riittŠvŠsti matkustajia. Jos on, bussi ajaa reitin. Jos taas ei ole, reittiŠ supistetaan distaalisesti kunnes tulee ensimmŠinen etappi, jossa on kriteerin tŠyttŠvŠ matkasuorite. Ajattelin toteuttaa tŠmŠn cumulate-funktiolla, koska muuten on hankalaa ajaa semmoiset etapit, jotka ovat keskellŠ reittiŠ mutta jostain syystŠ hiljaiset. Kuitenkin homma meinasi jo tškŠtŠ siiten, etten saanut verrattua matkakriteeriŠ eri etapeilla. Nyt annan tŠmŠn olla, koska huomenna pitŠisi olla malli joka ajaa jotakin. Teen siis viisi skenaariota ja pistŠn ne yšksi ajamaan. Virpi sanoi ettŠ kymmenellŠ oli loppunut muisti, mutta se on minusta kummallista, ja itse sain ajettua yhden skenaarion 1.2 GB:llŠ, mikŠ ei ole lŠhellŠkŠŠn ylŠrajaa. Nyt kun on vielŠ Matkamatriisisolmuja siistitty, on toivottavasti sŠŠstetty laskenta-aikaa rutkasti. TŠmŠ ei kyllŠ taida muistiin auttaa. Viiden skenaarion ajo onnistui, ja muistia meni noin 1.4 GB. Jos tuo lievŠ lisŠŠntyminen johtuu skenaarioiden mŠŠrŠstŠ, on tŠssŠ ongelma, muttei se ole selvŠŠ. AjankŠyttš oli seuraavanlaista: TextTable Value Timing_profile Objects Time_shift 3532.710 Trips 2751.996 All_trips 1907.084 Vehicle_by_type 1365.712 Route_matrix 1219.333 Aggr_period 1117.199 Iterator 884.382 Links2 576.078 Vehicles_per_link1 178.697 Aggr_zone 134.897 Vehicle_balance 86.675 Public_matrix 69.347 Transfer_point 44.925 Flow 44.714 Distances 31.245 Public_trips_per_lin 26.549 Aggr_length 24.594 Trips_by_hour 23.224 Vehicle_km 22.604 Trips_per_link_bau1 21.671 Unadjusted_trip_rate 18.627 Trips_by_type 15.242 Region_explode 10.575 Hlt_trips_by_hour 7.340 Mirror2 6.369 Adjusted_trip_rate 4.877 Bus_route_list 3.716 Link_intensity 3.706 Si_pi 2.573 Outputs1 2.236 Road_mirror 1.603 Descendant_objects 1.128 All_trips2 1.071 Bus_matrix 1.021 Bus_links 0.671 Composite_trips 0.541 Hlt_trips 0.421 Link 0.421 Total_vehicle_need 0.381 Delay 0.320 Cumulative_balance 0.280 Clean_rows 0.240 Areal_vehicle_peak 0.170 Drop_points 0.151 Zones 0.110 Vehicle_type 0.080 In_area_distance 0.060 Link_length1 0.040 Hlt2004_05 0.030 Route_list1 0.020 Links_1 0.020 Drop_length 0.010 Place_weight_by_hour 0.010 Rows 0.010 Trip_activity 0.010 To1 0.010 Routes_inside 0.010 All_bus_routes 0.010 Vehicle_types 0.001 Vehicle_size 0.001 Place1 0.001 Place 0.001 Guaranteed_areas 0.001 Scenario_input 0.001 Total_trips 0.001 Trips_municipality 0.001 Trips_place 0.001 Trips_place_mode 0.001 Municipality 0.001 Municipality1 0.001 Time_of_day 0.001 Time_in_traffic 0.001 Car_trips 0.001 Time_of_day_by_hour 0.001 Inhabitants 0.001 Workplaces 0.001 Municipality_info 0.001 Trips_place_munic 0.001 Municipality_info_hl 0.001 Mista 0.001 Mihin 0.001 Klo 0.001 Inhabitants1 0.001 Workplaces1 0.001 Hour 0.001 Zone 0.001 Traffic_speed 0.001 Time_unit 0.001 From 0.001 Area1 0.001 Region 0.001 Vehicle_noch 0.001 Area2 0.001 R_t 0.001 Bus_routes_special 0.001 Bus_route_ends 0.001 In3 0.001 In4 0.001 Roads 0.001 Routes_outside 0.001 Route_list 0.001 Regions 0.001 Time_of_day_by_time 0.001 Scenarios 0.001 Scenario 0.001 Time_stat 0.001 Period 0.001 Scen_ind 0.001 Scenario1 0.001 Seuraavat hommat: - Ajaa erilaisia mŠŠriŠ skenaarioita, jotta voidaan testata muistin riittŠvyys. - korjata Public matrix niin, ettŠ se oikeasti huomioi matkamŠŠrŠt. - TehdŠ solmu, joka laskee joukkoliikennematkoille lopputulemat: vehicle_km, park rush veh, waiting. -Tarkistaa kustannuslaskentapuoli ja yrittŠŠ saada se laskemaan myšs epŠvarmuuksia. -LisŠtŠ semmoinen lopputulema, joka kertoo montako matkustajaa jŠi ilman haluttua joukkoliikennettŠ. 21.7.2006 Jouni Tuomisto Kustannuslaskentapuolelta lšytyi oikea bugi (ks Dale Ricen meili eilen), mutta se onnistuttiin korjaamaan. Sain ratkaistuksi myšs bussimatriiseja vaivaavan ongelman, ettei sitŠ voinut laskea jos mukaan otettiin aikaulottuvuus. Nyt pitŠisi miettiŠ, mitŠ oikeastaan halutaan. Bussimatriisin rŠjŠyttŠminen Timella voi teettŠŠ arvaamattomia muistiongelmia. Toisaalta koko bussivaikutusten laskeminen on vielŠ tekemŠttŠ eikŠ tŠmŠ vŠlttŠmŠttŠ ole mikŠŠn ongelma. EhkŠ kuitenkaan Distancea ei kannata indeksoida Timella. Nyt on mallissa kaksi Time_of_dayta. Tarvitaanko eri luokittelua toisaalta matkoille ja toisaalta reiteille on epŠselvŠŠ, mutta toistaiseksi sŠilytetŠŠn jaottelu koska sitŠ ehkŠ tarvitaan. 26.7.2006 Jouni Tuomisto MitkŠ ovat siis ne bussimatriisit, jotka halutaan ulos tŠstŠ mallista? 1) Sama matriisi kuin reittimatriisi eli bussit ajavat missŠ vain 2) Laajin nykyreitistššn perustuva eli pŠivŠaikayhteydet voimassa aina 3) 2) mutta vain nykyvuoroilla 4) 2) mutta rajoitettuna matkustajakriteerillŠ 5) 2) mutta rajoitettuna sekŠ 3) ettŠ 4) 0 648,64,1 48,12 2,539,68,477,224 65535,54067,19661 Iterator 1 140,188,1 132,12 1,0,0,1,0,0,0,72,0,1 Iterator Log 1.5 26.7.2006 Jouni Tuomisto Otin kŠyttššn Public matrix-rivin Scenario inputissa, jolloin rakenne meni uusiksi ja tuli perustelluksi vaihtaa versionumero 1.5:ksi. Nyt on siis 5 eri mahdollista Public matrixia: 1) Sama matriisi kuin reittimatriisi eli bussit ajavat missŠ vain 2) Laajin nykyreitistššn perustuva eli pŠivŠaikayhteydet voimassa aina 3) 2) mutta vain nykyvuoroilla 4) 2) mutta rajoitettuna matkustajakriteerillŠ 5) 2) mutta rajoitettuna sekŠ 3) ettŠ 4) Matriisi valitaan numerolla Scenario inputista, joten sitŠ voi muuttaa kesken ajon. Ohessa on tulos, joka kertoo montako reittiŠ on tarjolla eri matriiseissa (maksimi nŠillŠ oletuksilla 30.72k eli tuo ensimmŠinen): 3.072e+004 1.908e+004 1.232e+004 3330 3060 Matriisit 4 ja 5 ovat noin pieniŠ, koska volyymirajoitus on 1000 eli vahva kriteeri. siis aika kriittinen tekijŠ, ja yllŠttŠvŠn vahva. PitŠŠ miettiŠ, ettei olisi virhettŠ jossain. Pohdinnan ja parin testauksen jŠlkeen pŠŠdyin siihen, ettei laskennan perusteella ole enŠŠ virheitŠ. Yhden korjasin, kun Bus_routes_used_tod_vol kŠytti All_bus_routes:ia eik All_bus_routes_tod:ia kuten piti. Nyt tulee mieleen semmoinen ajatus, ettŠ Bus_links ehkŠ kannattaisi indeksoida Etapilla, niin silloin olisi mahdollista seurata esim. matkustajamŠŠriŠ ilman muita kaavamuutoksia. En ole varma, tulisiko tŠstŠ jotain sivuvaikutuksia. Nyt on hankala hahmottaa, mitŠ oikein olen tekemŠssŠ, ja onko minulla ollenkaan oikea solmujaottelu Public matricesissa. Olisi helpompaa, jos tod/ei-tod ja vol/ei-vol toteutettaisiin sitŠ mukaan kun asiat tulevat vastaan, niin ei tarvitsisi niin paljon haaroa tŠtŠ prosessia. Mutta toinen kysymys on se, voisiko tŠtŠ yksinkertaistaa niin, ettei tarvitsisi muuttaa from-to-lŠhestymistavan ja bus_routes-indeksin vŠlillŠ edestakaisin vaan vain yhteen suuntaan eli kŠytŠnnšssŠ matkat muutettaisiin bus_routesiin. TŠmŠn pitŠisi tapahtua seuraavasti: -Perusrunkona on bus_routes*etappi, jonka avulla voidaan mŠŠritellŠ reitit pysŠkin tarkkuudella. -From*to muutetaan reitinpituussŠŠnnšn mukaisesti oikealle bussireitille eli pisimmŠlle joka on sopiva. -TŠllšin katoaa tieto siitŠ kuka on menossa minnekin, mutta jokaisen linkin aktiviteettitieto sŠilyy. -TŠmŠ voidaan summata periodiin, zoneen ja distanceen kunhan nŠmŠ mŠŠritellŠŠn, joten raportoinnissa ei tule ongelmia. -Eli ensimmŠisenŠ mŠŠritetŠŠn reitistš. - Toiseksi tŠtŠ rajoitetaan sen mukaaan, kŠytetŠŠnkš vuorokaudenaikakriteeriŠ vai ei -Sitten muunnetaan Adjusted trip rate tŠhŠn muotoon kŠyttŠmŠllŠ tŠtŠ alustavaa reitistšŠ. -Verrataan matka-aktiviteettia Public level-kriteeriin -Jos kriteeri tŠyttyy, ko. etappi otetaan varsinaiseen reitistššn -All trips muutetaan tŠhŠn muotoon kŠyttŠmŠllŠ lopullista reitistšŠ. -Katsotaan, paljonko matkoja mihinkin tulee, ja millŠ busseilla mitŠkin ajetaan. -Kysymys: pitŠŠkš bussireitistš mirrorata heti alussa? TŠmŠ olisi sikŠli jŠrkevŠŠ, ettŠ vastakkaisiin suuntiin menevŠt matkat eivŠt mene sekaisin. Toisaalta olisi hyšdyllistŠ tarkastella nŠitŠ yhtenŠ kokonaisuutena kun reitistšstŠ pŠŠtetŠŠn. Joutuuhan bussi palaamaan jos se on jonnekin mennyt, eli reitistšn pitŠŠ olla symmetrinen vaikkeivŠt matkat olisi. TŠhŠn taitaa olla ratkaisuna varhainen mirrorointi mutta myšs alusta asti tehdŠŠn joku aputaulu, jonka avulla puoliskot voidaan yhdistŠŠ yhdeksi reitiksi. -Ongelma: clean_rows olisi hyšdyllinen, mutta pystyy siivoamaan vain yksiulotteisia tauluja. Olisikin hyšdyllistŠ muuttaa tŠmŠ moniulotteiseksi ominaisuudeksi siten, ettŠ kaikkien muiden ulottuvuuksien suhteen jos ruudut ovat tyhjŠt, rivi poistetaan kiinnostavan ulottuvuuden suhteen. TŠmŠ ei kuitenkaan ole ratkaisevaa systeemin toimivuudelle joten jŠtetŠŠn hautumaan. TŠmŠ versio ei ehkŠ pysty laskemaan, koska en ole testannut muistinkulutusta ja laskennan yhteensopivuutta loppuun asti. 30.7.2006 Jouni Tuomisto Viimeisin sana on va6. 31.7.2006 Jouni Tuomisto NykyisessŠ lŠhestymistavassa on seuraavia ideioita ja ongelmia: -EtsitŠŠn se reitti, jossa on mainittu sekŠ lŠhtšpaikka ettŠ mŠŠrŠnpŠŠ. -> Samat paikat voidaan mainita usealla eri reitillŠ, eikŠ voida tietŠŠ mikŠ niistŠ on oikea. ->Jos lŠhtšpaikka ja mŠŠrŠnpŠŠ on sama, matka monistuu myšs epŠmŠŠrŠisiŠ kertoja. --> Ratkaisu palautuu taas siihen, ettŠ etukŠteen on mŠŠrŠttŠvŠ mikŠ route kuuluu kullekin from/to:lle. -Public trips per link ei ota huomioon sitŠ, ettŠ eri bussilinjoja voi ajaa samoja linkkejŠ pitkin. Eli Linkkiaktiivisuuksia ei voi palauttaa reitistšaktiivisuudeksi. Uusi ehdotus Va8: -Selected routes kertoo reitistšn. - Bus route # kertoo mitŠ bussireittiŠ kŠytetŠŠn milloinkin. - Route activity kertoo aktiivisuuden linkeittŠin: --Otetaan yksi from/to matkamŠŠrŠ kerrallaan --Valitaan se reitti, jolle se kuuluu --EtsitŠŠn se linkkijono, jolle se kuuluu --LisŠtŠŠn matkat siihen. -TehdŠŠn joka from/to:lle ja samalla summataan tulosta. Nyt sain tŠmŠn toimimaan, sikŠli kuin pystyn ymmŠrtŠmŠŠn solmun toimintaa tŠhŠn aikaan yšstŠ. 3.8.2006 Jouni Tuomisto Tein prosessin kulun itselleni helpommaksi siten, ettŠ tein useita funktioita jotka tekevŠt bussireittimatriisille erilaisia muunnoksia. Funktioiden avulla homma saadaan modularisoitua ilman solmuvyyhtejŠ, ja asioiden hahmottaminen on helpompaa. Nyt homma nŠyttŠŠ toimivan, jjoskin lopullinen koodisto on huolellisesti tarkastettava. JŠtŠn tŠmŠn kuitenkin seuraavaan versioon 1.6, ja nyt tallennan viimeisen alaversion 1.5.4. 0 648,88,1 48,12 2,549,50,476,224 65535,54067,19661 Log 1.6 3.8.2006 Jouni Tuomisto Tein prosessin kulun itselleni helpommaksi siten, ettŠ tein useita funktioita jotka tekevŠt bussireittimatriisille erilaisia muunnoksia. Funktioiden avulla homma saadaan modularisoitua ilman solmuvyyhtejŠ, ja asioiden hahmottaminen on helpompaa. Nyt homma nŠyttŠŠ toimivan, jjoskin lopullinen koodisto on huolellisesti tarkastettava. JŠtŠn tŠmŠn kuitenkin seuraavaan versioon 1.6, ja nyt tallennan viimeisen alaversion 1.5.4. Versiomuunnoksessa tuli taas hŠsŠŠ solmujen siirtelyn takia, mutta sen sain kyllŠ korjattua aika helposti. 6.8.2006 Jouni Tuomisto Koodia on viilailtu ja saatu se aika mukavasti pyšrŠhtŠmŠŠn. Bussien osalta luovuttiin Time-resoluutiosta ja kŠytetŠŠn vain time_of_day1-resoluutiota. Syy tŠhŠn on laskenta-aika mutta myšs se, ettŠ bussien kulkuaikoja ei voi koko ajan muutella vaan ihmisten on pystyttŠvŠ muistamaan, montako kertaa ja mihin aikoihin bussin tunnin aikana kulkevat - oli matkustajia tai ei. Jotta tŠmŠ toimisi, on time_of_day1 ja period tŠsmŠttŠvŠ siten, ettŠ luokat saadaan menemŠŠn mukavasti, tai sitten on tehtŠvŠ jakoalgoritmi bussivuorojen jakamiseksi Periodiin. JŠlkimmŠinen toteutettiin. 7.8.2006 Jouni Tuomisto Malli toimii nyt muuten hyvin ja laskee bussisuoritteen myšs mutta ongelmaksi tuli se, ettŠ laskenta-ajat venyvŠt kohtuuttomiksi, koska Etappimatkojen laskenta pitenee eksponentiaalisesti kun alueiden mŠŠrŠ lisŠŠntyy. TŠmŠ johtuu siitŠ, ettŠ bussireitti-indeksi pitenee myšs tyhjillŠ reiteillŠ. NŠmŠ pitŠŠ siis saada pois. TŠmŠn takia editoidaan Etappimatkat ja Active_routes. TŠmŠ onnistuikin, mutta tulos oli laihempi kuin odotin. Nyt Šlysin, ettŠ ongelmana eivŠt ole pelkŠstŠŠn tyhjŠt rivit, koska Etappimatkat-funktiota kŠytetŠŠn myšs laskettaessa Active_routesia, jolloin tyhjiŠ matkoja ei vielŠ ole. TŠllšinhŠn erotellaan potentiaalisista bussireiteistŠ ne, joilla on oikeasti matkustajia. TŠmŠ on kiperŠ ongelma, koska jotta tŠmŠn voi tehdŠ oikein, on pystyttŠvŠ laskemaan matkustajat bussireiteittŠin ja etapeittain meno- ja paluusuunta erikseen eri vuorokaudenaikoina. Ja tŠmŠ on vielŠ laskettava kaikista from/to-pareista (joissa matkustajamŠŠrŠ>0), joten mitŠŠn oikotietŠ en ole tŠhŠn keksinyt. Kuitenkin helpotusta tuo asiaan se, ettŠ nuo hurjat laskenta-ajat tulevat Public_matrix=1:llŠ, joka on koko tiestšstŠ laskettu bussimatriisi. SiinŠ versiossa on muistaakseni 6000 bussireittiŠ, ja tŠmŠ aiheuttaa hurjan laskentatarpeen. Kun kuitenkin public_matrix=2 tai 3, niin bussireittejŠ on parisataa, mikŠ on ihan inhimillistŠ. Ainakin 50 kaupunginosaa pystytŠŠn laskemaan lŠpi 330 s/skenaario, mikŠ on nopeammin kuin versiolla 1.0. Public_matrix=1:llŠ laskin yli 40000 s yhtŠ skenaariota, ja sitten kyllŠstyin, joten en edes tiedŠ kauanko sen ajamiseen menisi. Jos ei tule ikŠviŠ yllŠtyksiŠ 129 kaupunginosalla, taidamme jŠttŠŠ tŠmŠn ongelman omaan arvoonsa, ja laskea public_matrix=1:llŠ vain pari harvaa ja valittua skenaariota jossain vaiheessa, kun muita tuloksia on jo mietittŠvŠksi. BussireitistšssŠ huomasin virheitŠ: pilkkujen paikalla on pisteitŠ, ja lšytyi ainakin yksi alue 11118. NŠmŠ pitŠŠ oikolukea ennen varsinaisia ajoja. TŠhŠn ei kannata korjata, koska Hanna on tekemŠssŠ uusia reitistšjŠ. LisŠksi pitŠŠ tarkastaa, ettŠ Link length sisŠltŠŠ myšs kaikille bus_linkseille pituustiedon. Etappimatkat-funktion siistiminen on tosi hankalaa, koska laskentaa taitaa yksinkertaisesti olla niin paljon. Ainakaan mitŠŠn turhia indeksejŠ ei laskennasta lšytynyt, niitŠ on tarkoituskin olla aika monta. Nyt laskenta-ajat ovat kuitenkin siedettŠviŠ, kun pakotin public_matrix=2, jolloin kŠytetŠŠn yksinkertaisinta bussireitistšŠ. Pakotuksen etuna on se, ettŠ reitistš lasketaan vain kertaalleen kaikille skenaarioille, koska se ei voi muuttua. NŠin voidaan jŠttŠŠ siistiminen myšhemmŠksi ja aloittaa tuotantoajot mallilla. Seuraavaksi poistelen turhia solmuja ja otan kŠyttššn version 1.7. 0 648,112,1 48,12 2,650,22,476,248 65535,54067,19661 Log 1.7 8.8.2006 Jouni Tuomisto TŠllŠ versiolla pitŠisi nyt pystyŠ ajamaan tuotantoajoja siten, ettŠ myšs bussien kustannukset ovat mukana. PistetŠŠn malli ajamaan johonkin joutilaaseen koneeseen. Yritin ymmŠrtŠŠ Car capital valuation ja Willingness to drive -moduleita, mutta pŠŠtelmŠ on, ettŠ Cab_variab_2 ja Drive_variab_2 ovat ihan turhia: ensin satunnaisluku jŠrjestetŠŠn ja sitten sekoitetaan uudestaan. Korjaan tŠmŠn mutta jŠtŠn nuo kaksi solmua selityksineen jŠljelle. Cost strength variabilityssŠ oli mŠŠritelmŠssŠ -Drive_variation. En ymmŠrrŠ, miksi oli tuo etumerkki, koska kai kustannus otetaan kustannuksena, vaikka se olisi negatiivinenkin (eli siis tuloa). Nyt Šlysin, mistŠ johtuu 30 e kustannus/matka henkilšautoilla pŠŠomakuluina: trips_per_periodia kŠytetŠŠn ikŠŠn kuin se olisi indeksoitu vehicle_typellŠ, mutta oikeastihan se on all trips, joka on indeksoitu mode1:llŠ, ja tŠmŠ on muutettava takaisin oikeaan indeksiin. TŠmŠ aiheuttaa arvaamattoman paljon korjaamista, mutta paras vain aloittaa. Lšysin bussireittien pituuden laskennasta semmoisen virheen, ettŠ bussit kŠyttŠvŠt mittaamattomia linkkejŠ. NiihinhŠn aikanaan pistin 9999 km pituudeksi, ettŠ jos niitŠ jostain syystŠ kŠytetŠŠn niin sen huomaa; ja niin huomasikin. Linkkien pituudet siis tŠytyy tarkastaa, kunhan bussireitit ovat lopullisia ja kaikki linkit tiedossa. TŠssŠ samassa yhteydessŠ pŠivitin linkinlaskentasolmun, ja vanhat tosi hitaat solmut voi poistaa kokonaan. Nyt ymmŠrsin, miksi Cab_variab_2-solmu on olemassa: se sorttaa kaikki vaihtelujakaumat pienimmŠstŠ suurimpaan eli tietty fraktiili on kaikissa samassa iteraatiossa. Sitten nŠmŠ sotketaan, ettei tulisi johdonmukaisuutta iteraatiosta toiseen. TŠllŠ tavalla vaihtelu pysyy suurena ja epŠvarmuus pienenŠ, koska vaihtelun odotusarvohan on eri vaihtelujakaumien keskiarvo; jos nŠitŠ ei jŠrjestettŠisi, vaihtelujakauman odotusarvo alkaisi kaventua sitŠ enemmŠn, mitŠ enemmŠn olisi eri vaihtelujakaumia tarjolla - riippumatta siitŠ, paljonko ne poikkeavat toisistaan. Eli alkuparŠinen oli oikein, ja nyt pitŠŠ keksiŠ, miten se lasketaan ilman indeksiherjaa. Mutta kumma juttu on, etten saa nyt toistettua eilen tullutta virhettŠ. Onnistunpas: se tulee Cap:lla mutta ei Drive:lla, ja hassua on, ettŠ Cost-Strnegth on laskettu Capin avulla ja se kuitenkin toimii. EhkŠ kyseessŠ on vŠŠrin aktivoituva virheilmoitus, eikŠ se vaikuta laskentaan.' Kustannuslaskennassa on hŠsŠŠ, koska eri kustannuslajien indeksit ovat erilaiset eikŠ niitŠ ole yhdenmukaistettu. Nyt pŠŠtetŠŠn, ettŠ heti alussa summataan zone ja length pois, koska bussikilometreissŠ ei nŠitŠ ole mielekŠstŠ erotella. NŠin vŠltytŠŠn ikŠviltŠ harmeilta myšhemmin. Jos nŠitŠ joskus halutaan erikseen tarkastella, pitŠŠ miettiŠ miten se bussien osalta toteutettaisiin. Nyt koodit ovat ojennuksessa, mutta nŠyttŠŠ siltŠ ettŠ laskenta tuottaa yllŠttŠvŠn suuria kustannuksia. PitŠŠ perehtyŠ siihen, onko kustannus oikeasti noin iso vain onko versioon 1.0.1 jotain muutosta. Luvut ovat kuitenkin moninkertaiset esim. vehicle-kustannuksen osalta. TŠmŠn tarkastuksen tulos oli odotettu: joitakin indeksejŠ summattiin kahteen kertaan, jolloin kustannukset tietysti moninkertaistuivat. Nyt olen katsonut tulokset ja solmut Cost to stakeholder-solmuun asti, ja nŠyttŠŠ jŠrkevŠltŠ. Odotusaika tulee nyt huomattavan kalliiksi, melkein 1.5 euroa yhdistelmŠliikenteessŠ. TŠmŠ ei ole sinŠnsŠ yllŠttŠvŠŠ, olennaista on katsoa miten siihen voi vaikuttaa. Bussikustannuksia ei voi vielŠ arvioida, koska data on laskettu virheellisellŠ mallilla. 10.8.2006 Jouni Tuomisto Korjasin 1.7.2-versioon Distances-solmua, mutta se nŠkšjŠŠn meni pieleen koska ajossa 61000/62000 sekuntia ajettiin Distancea ennen kuin muisti loppui. AlkuperŠinen on Distances1, yritelmŠ on Distances2 ja korjattu Distances, jonka nyt pitŠisi toimia ja testissŠ laskee nopeasti. Eilen tein myšs Links_alt-solmun, jolla voi laskea kaikki linkit, niin tavalliset kuin bussitkin. TŠmŠn avulla pitŠisi tehdŠ uusi linkkilistaus sitten, kun bussireitit on pŠivitetty. 0 648,136,1 48,12 2,806,43,476,248 65535,54067,19661 Outputs 1 140,236,1 132,12 1,0,0,1,0,0,0,72,0,1 Outputs1 Scenarios 0 140,92,1 132,12 1,0,0,1,0,0,0,72,0,1 52425,39321,65535 Scenarios Select trip matrix 0 140,116,1 132,12 1,0,0,1,0,0,0,72,0,1 52425,39321,65535 Select_trip_matrix Choose pub matrix 0 140,140,1 132,12 1,0,0,1,0,0,0,72,0,1 52425,39321,65535 Choose_pub_matrix Vehicle_noch 0 140,164,1 132,12 1,0,0,1,0,0,0,72,0,1 Vehicle_noch Log 1.8 22.8.2006 Jouni Tuomisto Pikainen kertaus versioista 1.7.2-1.7.8: Mallissa oli useita muisti- ja ajoaikaongelmia, joita viilattiin eri versioissa kun toisaalta yritettiin ajaa jŠrkeviŠ tuloksia. Ainakin tŠmmšisiŠ muutoksia tehtiin: - Waiting-solmua viilattiin taas. Kokeilin myšs sen pilkkomista kolmeen osaan, ja tŠmŠ kyllŠ onnistuikin. Mutta kuitenkaan mitŠŠn muistiongelmaa tŠmŠ ei nŠyttŠnyt ratkaisevan, joten jŠtettiin se ennalleen. NykyisellŠŠn solmu on kuitenkin siedettŠvŠ laskenta-ajaltaan, eikŠ muistitarve kaada konetta. - Aggr_period-funktio on hankala, koska sillŠ lŠhdetŠŠn isointa arrayta summaamaan, ja summaus tilapŠisesti suurentaa muistitarvetta. TŠmŠ ratkaistiin siten, ettŠ sen sijaan ettŠ olisi tehty for x[]:= period, niin tehtiinkin slice(solmu,time,x) ja x juoksutettiin yli ajan. TŠmŠ kyllŠ sŠŠsti jonkin verran muistia, mutta se kostautui laskenta-ajassa. TŠmŠ ei kuitenkaan ole kriittistŠ, koska 10 skenaariota ajautuu helposti yšn aikana, ainakin minun pšytŠkoneellani. -Vehicle_by_type nousi vŠhŠn yllŠttŠen muistisyšpšksi solmuksi, koska se ei ole erityisen vaikeaa laskentaa. TŠmŠ ratkaistiin while-do-luupilla, ja muistitarve saatiin painettua siedettŠvŠksi. Sain tŠnŠŠn valmiiksi ajon 11, ja kopioin tulokset kustannuslaskentapuolelle. SiellŠ huomasin yllŠtykseksi, ettŠ Park rush veh-outputin rush-osio tuottaa pelkkŠŠ NANia. TŠmŠn syy ei ole selvinnyt, koska nyt kun testasin asiaa, muuttuja laskee oikein. (VŠlillŠ tosin Time-indeksi mŠŠritelmŠ unohtui ohjelmalta tuntemattomasta syystŠ, mutta tŠmŠ ei voinut olla ongelmana yšllisessŠ laskennassa.) PitŠŠ laskea tŠmŠ uudestaan ensi yšnŠ ja toivoa, ettŠ ongelma on korjautunut. Kuitenkin tein myšs semmoisen muutoksen, ettŠ Outputsissa kaikki tyhjŠt ruudut muutetaan nolliksi siten, ettei yhtŠŠn NANia normaalitilanteessa pitŠisi olla lopputuloksessa. TŠmŠ siis helpottaa mahdollisten ongelmien huomaamista. Ollin juuri laskemassa Ajossa 13 Parkrushveh-tulos nŠyttŠŠ ihan oikealta, eikŠ Rush anna virheilmoituksia. Erona on se, ettŠ Ajosta 11 puuttuvat Vehicle_nochista d7, d6, d5, c7, c6, c5. VOisiko tŠmŠ olla selitys? (Toivottavasti, sillŠ silloin muita ei tarvitse ajaa uuelleen). 28.8.2006 Jouni Tuomisto Imuroin tŠhŠn mennessŠ lasketut ajot 11, 12, 13, 16, 19, 21 ulkoiseen moduliin Scenario_results_jtt.ana. Sitten tein solmun, jolla valitaan mikŠ ajo otetaan tarkasteluun, ja tŠmŠ virtaviivaisti tulosten tarkastelua. Seuraavaksi annan tulokset Virpille ja Hannalle ihmeteltŠvŠksi. Tuleeko tolkkua, missŠ on laskentavirhettŠ? 0 536,16,1 52,12 2,732,59,476,576 65535,54067,19661 Choose_ajo 0 152,260,1 144,12 1,0,0,1,0,0,0,177,0,1 52425,39321,65535 Choose_ajo TŠhŠn mennessŠ ajettu: 11 12 13 16 19 21 784,352,-1 48,78