https://github.com/zib-iol/optimaldesignwithboscia
Solving the Exact Optimal Experiment Design Problem using the convex mixed-integer solver Boscia.jl
https://github.com/zib-iol/optimaldesignwithboscia
Last synced: 3 months ago
JSON representation
Solving the Exact Optimal Experiment Design Problem using the convex mixed-integer solver Boscia.jl
- Host: GitHub
- URL: https://github.com/zib-iol/optimaldesignwithboscia
- Owner: ZIB-IOL
- Created: 2024-02-09T13:46:51.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2024-11-08T16:49:10.000Z (over 1 year ago)
- Last Synced: 2025-02-07T01:32:06.094Z (over 1 year ago)
- Language: Julia
- Homepage:
- Size: 99.6 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Optimal Experiment Design with Boscia
The repository for the "Solving the Optimal Experiment Design Problem with Mixed-Integer Convex Methods" [paper](https://arxiv.org/abs/2312.11200).
The experiment scripts are in the ODWB folder. The models and set-ups for the different solvers can be found in the source folder in the ODWB folder.
The models and solvers tested are [Boscia.jl](https://github.com/ZIB-IOL/Boscia.jl) with the classical problem formulation, [SCIP.jl](https://github.com/scipopt/SCIP.jl) using the epigraph formulation, [Pajarito.jl](https://github.com/jump-dev/Pajarito.jl) implementing the direct conic model and a custom solver based from this [paper](https://link.springer.com/article/10.1007/s11222-021-10043-5)
The experiments are set up to be run on the cluster of the Zuse Institute Berlin. If you want to test instances of one dimension with a specific solver, you can use Julia's environmental variables and call the ```run_optimal_design.jl``` file directly.
```
using ODWB
# This sets the solver. Option are "Boscia", "SCIP", "Pajarito" and "Custom".
ENV["MODE"] = "Boscia"
# Set the criterion. Options are "A", "D" for the A-Optimal Design and D-Optimal Design, respectively.
# "AF" and "DF" are for the A-Fusion and D-Fusion.
ENV["CRITERION"] = "D"
# This decides the data type, so independent ("IND") or correlated data ("CORR").
ENV["TYPE"] = "CORR"
# Sets the dimension of the problem.
ENV["DIMENSION"] = "100"
include("run_optimal_design.jl")
```
For individual instances, you can call the solvers directly.
```
using ODWB
seed = 1
m = 100
n = 10
criterion = "D"
time_limit = 3600 # 1 hour
corr = true # this create correlated data, if false, it will create independent data.
# Boscia
ODWB.solve_opt(seed, m, n, time_limit, criterion,corr)
# SCIP
if criterion in ["A", "D"]
error("SCIP OA does not work with the optimal problems!")
end
ODWB.solve_opt_scip(seed, m, n, time_limit, criterion, corr)
# Pajarito
ODWB.solve_opt_pajarito(seed, m, n, time_limit, criterion, corr)
# Custom
ODWB.solve_opt_custom(seed, m, n, time_limit, criterion, corr)
```