You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Set of benchmark problems to be solved with [DecisionFocusedLearning.jl](https://github.com/JuliaDecisionFocusedLearning/DecisionFocusedLearning.jl)
9
+
This repository contains a collection of benchmark problems for decision-focused learning algorithms.
10
+
It provides a common interface for creating datasets, associated statistical models and combinatorial optimization maximizers for building decision-focused learning pipelines.
11
+
They can be used for instance as benchmarks for tools in [InferOpt.jl](https://github.com/JuliaDecisionFocusedLearning/InferOpt.jl), but can be used in any other context as well.
12
+
13
+
Currently, this package provides the following benchmark problems (many more to come!):
14
+
-`SubsetSelectionBenchmark`: a minimalist subset selection problem.
15
+
-`FixedSizeShortestPathBenchmark`: shortest path problem with on a graph with fixed size.
16
+
-`WarcraftBenchmark`: shortest path problem on image maps
# `x` correspond to the input features, i.e. the input image (3D array) in the Warcraft benchmark case:
27
27
x = sample.x
28
-
# `θ` correspond to the true unknown terrain weights. We use the opposite of the true weights in order to formulate the optimization problem as a maximization problem:
29
-
θ_true = sample.θ
30
-
# `y` correspond to the optimal shortest path, encoded as a binary matrix:
31
-
y_true = sample.y
28
+
# `θ_true` correspond to the true unknown terrain weights. We use the opposite of the true weights in order to formulate the optimization problem as a maximization problem:
29
+
θ_true = sample.θ_true
30
+
# `y_true` correspond to the optimal shortest path, encoded as a binary matrix:
31
+
y_true = sample.y_true
32
32
# `instance` is not used in this benchmark, therefore set to nothing:
# In the case o fthe Warcraft benchmark, the method has an additional keyword argument to chose the algorithm to use: Dijkstra's algorithm or Bellman-Ford algorithm.
51
51
y =maximizer(θ)
52
52
# As we can see, currently the pipeline predicts random noise as cell weights, and therefore the maximizer returns a straight line path.
53
-
plot_data(b, DataSample(; x, θ, y))
53
+
plot_data(b, DataSample(; x, θ_true=θ, y_true=y))
54
54
# We can evaluate the current pipeline performance using the optimality gap metric:
0 commit comments