Skip to content
Snippets Groups Projects
evaluation.jl 2.43 KiB
Newer Older
  • Learn to ignore specific revisions
  • using RidePooling
    RP = RidePooling
    
    rhaag's avatar
    rhaag committed
    
    using RidePooling_eval
    ev = RidePooling_eval
    
    using DataFrames
    using Measurements
    
    rhaag's avatar
    rhaag committed
    
    
    import Base.Filesystem
    FS = Base.Filesystem
    
    
    
    rhaag's avatar
    rhaag committed
    path = "/scratch01.local/rhaag/comparison/drive_and_wait/combined_delays/anywt035_anydt01/"
    
    model_path = path * "/models/"
    
    # Values I want to calculate for every model
    req_quantitys_mean = [
    	
    	:relative_delay,
    
    rhaag's avatar
    rhaag committed
    	:delay,
    	:relative_waiting_time,
    	:waiting_time,
    	:served,
    	:requested_distance,
    	:requested_time,
    	:total_time,
    	:travelling_time,
        :resubmitted_served_percentage,
    	:dt_earliest_served,
        :dt_earliest,
    	:relative_dt_earliest
    
    rhaag's avatar
    rhaag committed
    	:delay
    
    ]
    
    req_quantitys_sum = [
    	:count_req,
    
    	:resubmitted_all,
    	:resubmitted_served,
    
    ]
    
    bus_quantitys = [
    	:cooldown_time,
    ]
    
    model_quantitys = [
    	:driven_distance,
    
    rhaag's avatar
    rhaag committed
    	:efficiency,
    	:quality
    
    
    ########## This is just, because the Data Frame constructor still needs unintuitive workarounds 😠
    rows = [:index => Int[],
    	:dt_earliest_pickup => Float64[],
    
    rhaag's avatar
    rhaag committed
    	:idle_weight => Float64[],
    
    	:resubmission_time_factor => Float64[],
    	:ν => Float64[],
    
    rhaag's avatar
    rhaag committed
    	:t0 => Float64[],
    
    	:request_type => Symbol[]
    	]
    
    
    for quan in req_quantitys_mean
    
    	push!(rows, quan => Measurement[])
    
    end
    
    for quan in req_quantitys_sum
    
    	push!(rows, quan => Float64[])
    
    end
    
    for quan in bus_quantitys
    
    	push!(rows, quan => Measurement[])
    
    end
    
    for quan in model_quantitys
    
    Ruben Haag's avatar
    Ruben Haag committed
    	push!(rows, quan => Measurement[])
    
    rows = NamedTuple(rows)
    results = DataFrame(rows)
    
    rhaag's avatar
    rhaag committed
    ###########################################################
    filenames = readdir(model_path, join=false) # get Filenames
    
    rhaag's avatar
    rhaag committed
    # Evalkuate Models
    
    for model_nr in filenames
    
    rhaag's avatar
    rhaag committed
    	model = loadmodel(model_path*model_nr)
    
    	row = Dict()
    	
    	row[:index] = parse(Int, FS.splitext(model_nr)[1])
    
    	print(model.request_type)
    	row[:dt_earliest_pickup] =  (model.request_type != :now) ? model.random_gens[model.request_type][2] : 0
    	println("\t\t$(row[:dt_earliest_pickup])")
    
    rhaag's avatar
    rhaag committed
    	row[:idle_weight] = model.cost_idle_weight
    
    	row[:ν] = model.ν
    
    rhaag's avatar
    rhaag committed
    	row[:t0] = model.t0
    
    	row[:request_type] = model.request_type
    
    rhaag's avatar
    rhaag committed
    	row[:resubmission_time_factor] = model.resubmission_time_factor
    
    	for quan in req_quantitys_mean
    
    rhaag's avatar
    rhaag committed
    		row[quan] = ev.quantity(quan, model)
    
    	end
    	for quan in req_quantitys_sum
    		row[quan] = ev.sum(quan, model)
    	end
    	for quan in bus_quantitys
    		row[quan] = ev.quantity(quan, model.agents, model)
    	end
    	for quan in model_quantitys
    		f = @eval (ev.$quan)
    		row[quan] = f(model)
    	end
    	using Serialization
    	push!(results, row)
    end
    
    using Serialization
    
    rhaag's avatar
    rhaag committed
    serialize(path*"results.df", results)