Skip to content

Commit 20e8a4f

Browse files
committed
fix features
1 parent 67a0fa9 commit 20e8a4f

File tree

2 files changed

+19
-54
lines changed

2 files changed

+19
-54
lines changed

src/DynamicVehicleScheduling/algorithms/anticipative_solver.jl

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -139,9 +139,6 @@ function anticipative_solver(
139139
dataset = map(1:last_epoch) do epoch
140140
routes = epoch_routes[epoch]
141141
epoch_customers = epoch_indices[epoch]
142-
# y_true = [
143-
# map(idx -> findfirst(==(idx), epoch_customers), route) for route in routes
144-
# ]
145142

146143
y_true =
147144
VSPSolution(
@@ -182,7 +179,8 @@ function anticipative_solver(
182179
current_epoch=epoch,
183180
)
184181

185-
x = compute_2D_features(state, env.instance)
182+
# x = compute_2D_features(state, env.instance)
183+
x = compute_features(state, env.instance)
186184

187185
return DataSample(; instance=state, y_true, x)
188186
end
Lines changed: 17 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,19 @@
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
86
end
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
2826
end
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, :]
3432
end
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)'
4138
end
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

Comments
 (0)