Ero sivun ”Helsingin seudun liikennemalli” versioiden välillä

Opasnet Suomista
Siirry navigaatioon Siirry hakuun
pEi muokkausyhteenvetoa
 
(11 välissä olevaa versiota 3 käyttäjän tekeminä ei näytetä)
Rivi 1: Rivi 1:
{{arviointi|moderator=Teemu R|stub=Yes}}
{{arviointi|moderator=Teemu R|stub=Yes}}
[[Luokka:Tarkastettavaa koodia]]


== Rajaus ==
== Rajaus ==
Rivi 6: Rivi 7:


== Määritelmä ==
== Määritelmä ==
=== Muuttujat ===
*[[:en:Distance matrix in the Helsinki metropolitan area]]
*[[:en:Trip rate on a workday in the Helsinki metropolitan area]]
*[[:en:Bus routes in the Helsinki metropolitan area]]


=== R malli ===
=== R malli ===
<rcode graphics = "1">
<rcode graphics = "1">
library(OpasnetBaseUtils)
library(OpasnetUtils)
trips <- op_baseGetData("opasnet_base", "Op_en2625")
 
#active.routes <- data.frame(Active = TRUE)
bus.routes <- opbase.data("Op_en5336")
gc()
 
distance <- op_baseGetData("opasnet_base", "Op_en5322", include = 14299, exclude = 53098)
buses <- data.frame()
for (i in levels(bus.routes$Route_id)) {
temp <- bus.routes[bus.routes$Route_id == i, c("Route_id", "Time_id", "Route_order", "Result")]
temp <- temp[order(temp$Route_order),]
for (j in 1:length(temp$Result)) {
temp2 <- data.frame(Route_id = temp$Route_id[1], Time_id = temp$Time_id[1], From = temp$Result[j], To = temp$Result[-j])
# delay between "stops" should be calculated, as well as the times when buses start; this is not needed when we assume that a bus can pick up
# anyone during an hour and deliver them anywhere on the route while running the route in both directions
#temp <- merge(temp, distance[,c("From", "To", "Result")])
#temp$Delay <- c(0, temp$Result[-nrow(temp)]) / 20 #speed
#temp$Time <- temp$Time + temp$Delay
buses <- rbind(buses, temp2)
}
}
 
trips <- opbase.data("Op_en2625")
 
trips.time.sum.margins <- data.frame(Time = seq(1, 24.8, 0.2), Time.hour = rep(1:24, each = 5))
 
trips <- merge(trips, trips.time.sum.margins)
trips <- tapply(trips$Result, trips[,c("Mode", "Time.hour", "From", "To")], sum)
trips <- as.data.frame(as.table(trips))
colnames(trips)[5] <- "Result"
 
trips.bus <- merge(trips[trips$Mode == "Public"], buses)
 
buses.per.stop <- tapply(trips.bus$Result, trips.bus[,c("From", "To", "Time.hour")], length)
buses.per.stop <- as.data.frame(as.table(buses.per.stop))
colnames(buses.per.stop)[4] <- "Buses.per.stop"
 
trips.bus.2 <- merge(trips[trips$Mode == "Public"], buses.per.stop)
trips.bus.2$Result <- trips.bus.2$Result / trips.bus.2$Buses.per.stop
 
trips.bus.2 <- merge(trips.bus.2, buses)
 
trips.bus.3 <- tapply(trips.bus.2$Result, trips.bus.2[,c("Route_id", "Time.hour")]) # Passengers per hour per bus route assuming one bus goes in
# both directions and given passengers are divided evenly among buses going into same destinations
trips.bus.3 <- as.data.frame(as.table(trips.bus.3))
trips.bus.3$Active <- trips.bus.3$Freq > minlevel # test whether number of passengers is higher than minumum required to run
trips.bus <- merge(trips.bus, trips.bus.3)
 
trips.possible <- tapply(trips.bus$Active, trips.bus[,c("Time.hour", "From", "To")], sum)
trips.possible <- as.data.frame(as.table(trips.possible))
trips.possible$Possible <- trips.possible$Freq > 0 # test whether at least 1 bus route that includes the considered trip is active
 
trips.bus.2 <- merge(trips[trips$Mode == "Public"], trips.possible)
 
distance <- opbase.data("Op_en5322") #include = 14299, exclude = 53098   What these should be in base2 ????!?!?
 
gc()
gc()
# Costs, need to be modified to fit the new scenario
test3 <- as.data.frame(as.table(tapply(test2$vehicle.kilometers, test2$Type, sum)))
colnames(test3) <- c("Type", "vehicle.kilometers")
fuel.cons.emis.CO2 <- data.frame(Type = c("n.full.8.cars", "n.full.4.cars", "n.4.cars.3.pas", "n.4.cars.2.pas", "n.4.cars.1.pas"),
Consumption = c(8.7, 5.7, 5.7, 5.7, 5.7) / 100, Emis.factor.CO2 = c(232, 153, 153, 153, 153))
emis.factor.PM <- 0.1 # gkm^-1
fuel.price <- 1.374 # 4.8. average cost of a liter of diesel fuel in Finland
maint.price <- 0.0582 # €km^-1
driver.salary <- 2313 / 160 * 1.35 # €h^-1
test3 <- merge(test3, fuel.cons.emis.CO2)
test3$Fuel.cost <- test3$vehicle.kilometers * test3$Consumption * fuel.price
test3$Maint.cost <- test3$vehicle.kilometers * maint.price
test3$Emis.CO2 <- test3$vehicle.kilometers * test3$Emis.factor.CO2
test3$Emis.PM <- test3$vehicle.kilometers * emis.factor.PM
test3$Driver.cost <- test3$vehicle.kilometers / speed * driver.salary
PM.lethality <- c(-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)
PM.lethality <- median(PM.lethality) # deaths / kg
value.of.life <- (2e6 + 0.98e6) / 2 # runif(n, 0.98e6, 2e6) # € / death
emis.price.PM <- PM.lethality * value.of.life # 201.879 # €kg^-1
emis.price.CO2 <- 10e-3 # runif(n, 5e-3, 40e-3) # €kg^-1, the price of CO2 allowances fluctuates quite a bit, in 8.8.2011 they
# were going for 10.74 € per ton of CO2 equivalent
test3$CO2.cost <- test3$Emis.CO2 * emis.price.CO2
test3$PM.cost <- test3$Emis.PM * emis.price.PM
# bus emis: 44 - 54 * 10^-2 lkm^-1; ref: N. Nylund, K. Erkkilä, T. Hartikka 2007 http://www.vtt.fi/inf/pdf/tiedotteet/2007/T2372.pdf p.31
</rcode>
</rcode>
{{kommentti|#:|Jostain eriskummallisesta syystä, koodi on äärettömän hidasta ajamaan serverillä. Arvaan syyksi keskusmuistin loppumisen, jonka jälkeen kiintolevy tulee käyttöön, joka luonnollisesti hidastaa operointia roimasti. gc funktion mukaan erään ajon maksimi muistin käyttö oli yli 3 Gb (<nowiki>http://fi.opasnet.org/fi/Special:R-tools?id=13136726070</nowiki>).|--[[Käyttäjä:Teemu R|Teemu R]] 19. elokuuta 2011 kello 15.44 (EEST)}}
{{kommentti|#:|Mallin pitäisi nyt laskea toteutuvat bussireitit ja sovittaa niitä mahdollisesti toteutettaviin trippeihin, mutta jossain kohti on bugi ja debuggaaminen on vaikeaa kun ei oma kone jaksa tätä pyörittää.|--[[Käyttäjä:Teemu R|Teemu R]] 22. elokuuta 2011 kello 15.52 (EEST)}}


== Katso myös ==
== Katso myös ==


*[[:en:Composite traffic]]
* [[:op_en:Composite traffic]]
*[[:en:Composite traffic model]]
* [[:op_en:Composite traffic model]]
* [[Kustannus-hyötyarviointi yhdistelmäliikenteestä Helsingissä]]
* [[Ytrips Oy]]
* [[Helsingin seudun liikennemalli]]
* [[Osallistuva kaupunkisuunnittelu Joensuussa]]
* [[Joensuun keskustan liikennemalli J1]]
 
== Viitteet ==
 
<references/>
 
==Aiheeseen liittyviä tiedostoja==
 
{{mfiles}}
 
{{eracedu}}

Nykyinen versio 22. elokuuta 2013 kello 10.39


Rajaus

Tarkastellaan julkisten kulkuvälineiden tuen suuruuden vaikutusta liikenteen (yksityisautoilun ja bussien osalta) kokonaiskustannuksia (otetaan huomioon pienhiukkas- ja kasvihuonekaasupäästöt, bussin kuljettajien palkka, polttoaineen hinta) pääkaupunkiseudulla.

Määritelmä

Muuttujat

R malli

+ Näytä koodi

--#: Jostain eriskummallisesta syystä, koodi on äärettömän hidasta ajamaan serverillä. Arvaan syyksi keskusmuistin loppumisen, jonka jälkeen kiintolevy tulee käyttöön, joka luonnollisesti hidastaa operointia roimasti. gc funktion mukaan erään ajon maksimi muistin käyttö oli yli 3 Gb (http://fi.opasnet.org/fi/Special:R-tools?id=13136726070). --Teemu R 19. elokuuta 2011 kello 15.44 (EEST)

--#: Mallin pitäisi nyt laskea toteutuvat bussireitit ja sovittaa niitä mahdollisesti toteutettaviin trippeihin, mutta jossain kohti on bugi ja debuggaaminen on vaikeaa kun ei oma kone jaksa tätä pyörittää. --Teemu R 22. elokuuta 2011 kello 15.52 (EEST)

Katso myös

Viitteet


Aiheeseen liittyviä tiedostoja

<mfanonymousfilelist></mfanonymousfilelist>