-
Ruben Haag authoredRuben Haag authored
initialize.jl 1.65 KiB
export data_functions, save_path, getValues
import Pkg
Pkg.activate(".")
using DataFrames
using DelimitedFiles
# Dict of the functions used for evaluation
# QUESTION Calculate Variance for all of these?
data_type_functions = Dict(
:served_percentage => RP.served_percentage,
:driven_distance => RP.driven_distance,
:requested_distance => RP.requested_distance,
:mean_relative_delay => RP.mean_relative_delay,
:mean_occupancy => RP.mean_occupancy,
)
save_path = "" #TODO What savepath?
"""
Converts a given index to a 2D Matrix Index with the given Matrix size
"""
function getValue(index, xmin, xmax, xlen, ymin, ymax, ylen)
xstep = (xmax-xmin)/xlen
ystep = (ymax-ymin)/ylen
x = (index%xlen) * xstep + xmin
y = trunc(Int64, index/ylen) * ystep + ymin
return x,y
end
"""
Function for Running a RidePooling simulation with the normalized Frequency x
"""
function simulate_rp(paths::Dict, N::Int64, x, y, t0::Float64, specs; served = 10*N, requested=10*N)
#Make Model
#TODO Make Random gens
model=RP.get_model(;N_bus=N,ν=x/t0,specs...);
RP.run!(model;requested=requested, served=served)
data = Dict()
data[:frequency] = x
data[:dt_earliest_pickup] = y
for (name, func) in data_type_functions
data[name] = func(model)
end
# Save the calculated Data
data = DataFrame(data)
#CSV.write(paths[:data]*"$(x)_$(y).csv", data)
open(paths[:data]*"$index.csv", "w") do io
writedlm(io, Iterators.flatten(([names(data)], eachrow(data))), ',')
end
#Save the model for possible later reference
RP.savemodel(paths[:model]*"$index.model",model;route_matrix=false)
end