1- function get_features_quantileTimeToRequests (env :: DVSPEnv )
1+ function get_features_quantileTimeToRequests (state :: DVSPState , instance :: Instance )
22 quantiles = [i * 0.1 for i in 1 : 9 ]
3- a = env. config. static_instance. duration[
4- env. customer_index[.! env. request_is_dispatched], 2 : end
5- ]
3+ a = instance. static_instance. duration[state. location_indices, 2 : end ]
64 quantileTimeToRequests = mapslices (x -> quantile (x, quantiles), a; dims= 2 )
75 return quantileTimeToRequests
86end
97
10- function compute_model_free_features (state:: DVSPState ; env :: DVSPEnv )
11- (; instance , is_postponable) = state
8+ function compute_model_free_features (state:: DVSPState , instance :: Instance )
9+ (; state_instance , is_postponable) = state
1210
13- startTimes = instance . start_time
14- endTimes = startTimes .+ instance . service_time
15- timeDepotRequest = instance . duration[:, 1 ]
16- timeRequestDepot = instance . duration[1 , :]
11+ startTimes = state_instance . start_time
12+ endTimes = startTimes .+ state_instance . service_time
13+ timeDepotRequest = state_instance . duration[:, 1 ]
14+ timeRequestDepot = state_instance . duration[1 , :]
1715
18- slack_next_epoch = startTimes .- env . config . epoch_duration
16+ slack_next_epoch = startTimes .- instance . epoch_duration
1917
2018 model_free_features = hcat (
2119 startTimes[is_postponable], # 1
@@ -27,49 +25,18 @@ function compute_model_free_features(state::DVSPState; env::DVSPEnv)
2725 return model_free_features
2826end
2927
30- function compute_model_aware_features (state:: DVSPState ; env :: DVSPEnv )
31- quantileTimeToRequests = get_features_quantileTimeToRequests (env )
28+ function compute_model_aware_features (state:: DVSPState , instance :: Instance )
29+ quantileTimeToRequests = get_features_quantileTimeToRequests (state, instance )
3230 model_aware_features = quantileTimeToRequests
3331 return model_aware_features[state. is_postponable, :]
3432end
3533
36- function compute_features (env:: DVSPEnv )
37- state = env. state
38- model_free_features = compute_model_free_features (state; env)
39- model_aware_features = compute_model_aware_features (state; env)
34+ function compute_features (state:: DVSPState , instance:: Instance )
35+ model_free_features = compute_model_free_features (state, instance)
36+ model_aware_features = compute_model_aware_features (state, instance)
4037 return hcat (model_free_features, model_aware_features)'
4138end
4239
43- # # ? why is this needed
44- # function model_free_features_critic(state::DVSPState; env::DVSPEnv)
45- # (; instance) = state
46- # startTimes = instance.start_time
47- # endTimes = instance.service_time .+ instance.start_time
48- # timeDepotRequest = instance.duration[:, 1]
49- # timeRequestDepot = instance.duration[1, :]
50- # slack_next_epoch = startTimes .- env.config.epoch_duration
51- # model_free_features = hcat(
52- # startTimes, endTimes, timeDepotRequest, timeRequestDepot, slack_next_epoch
53- # )
54- # return model_free_features
55- # end
56-
57- # # ?
58- # function compute_critic_features(env::DVSPEnv)
59- # state = env.state
60- # model_free_features = model_free_features_critic(state; env)
61- # model_aware_features = get_features_quantileTimeToRequests(env)
62- # postpon = state.is_postponable
63- # return hcat(model_free_features, model_aware_features, postpon)'
64- # end
65-
66- # # ?
67- # function compute_critic_2D_features(env::DVSPEnv)
68- # state = env.state
69- # timeDepotRequest = state.instance.duration[:, 1]
70- # quantileTimeToRequests = get_features_meanTimeToRequests(env)
71- # postpon = state.is_postponable
72- # # time_postpon = timeDepotRequest .* postpon
73- # # quant_postpon = quantileTimeToRequests .* postpon
74- # return hcat(timeDepotRequest, quantileTimeToRequests, postpon)'
75- # end
40+ function compute_features (env:: DVSPEnv )
41+ return compute_features (env. state, env. instance)
42+ end
0 commit comments