use std::path::PathBuf;
use ddo::*;
use crate::{KPRelax, KPRanking, read_instance, KPDominance};
fn locate(id: &str) -> PathBuf {
PathBuf::new()
.join(env!("CARGO_MANIFEST_DIR"))
.join("../resources/knapsack/")
.join(id)
}
pub fn solve_id(id: &str) -> isize {
let fname = locate(id);
let fname = fname.to_str();
let fname = fname.unwrap();
let problem = read_instance(fname).unwrap();
let relaxation = KPRelax{pb: &problem};
let ranking = KPRanking;
let width = NbUnassignedWidth(problem.nb_variables());
let dominance = SimpleDominanceChecker::new(KPDominance, problem.nb_variables());
let cutoff = NoCutoff;
let mut fringe = NoDupFringe::new(MaxUB::new(&ranking));
let mut solver = DefaultCachingSolver::new(
&problem,
&relaxation,
&ranking,
&width,
&dominance,
&cutoff,
&mut fringe,
);
let Completion { best_value , ..} = solver.maximize();
best_value.map(|x| x).unwrap_or(-1)
}
#[test]
fn f9_l_d_kp_5_80() {
assert_eq!(solve_id("f9_l-d_kp_5_80"), 130);
}
#[test]
fn f7_l_d_kp_7_50() {
assert_eq!(solve_id("f7_l-d_kp_7_50"), 107);
}
#[test]
fn f3_l_d_kp_4_20() {
assert_eq!(solve_id("f3_l-d_kp_4_20"), 35);
}
#[test]
fn f4_l_d_kp_4_11() {
assert_eq!(solve_id("f4_l-d_kp_4_11"), 23);
}
#[test]
fn f10_l_d_kp_20_879() {
assert_eq!(solve_id("f10_l-d_kp_20_879"), 1025);
}
#[test]
fn f1_l_d_kp_10_269() {
assert_eq!(solve_id("f1_l-d_kp_10_269"), 295);
}
#[test]
fn f6_l_d_kp_10_60() {
assert_eq!(solve_id("f6_l-d_kp_10_60"), 52);
}
#[test]
fn f8_l_d_kp_23_10000() {
assert_eq!(solve_id("f8_l-d_kp_23_10000"), 9767);
}
#[test]
fn f2_l_d_kp_20_878() {
assert_eq!(solve_id("f2_l-d_kp_20_878"), 1024);
}
#[test]
fn knappi_1_100_1000_1() {
assert_eq!(solve_id("knapPI_1_100_1000_1"), 9147);
}
#[test]
fn knappi_1_200_1000_1() {
assert_eq!(solve_id("knapPI_1_200_1000_1"), 11238);
}
#[test]
fn knappi_2_100_1000_1() {
assert_eq!(solve_id("knapPI_2_100_1000_1"), 1514);
}
#[test]
fn knappi_2_200_1000_1() {
assert_eq!(solve_id("knapPI_2_200_1000_1"), 1634);
}
#[test]
fn knappi_3_100_1000_1() {
assert_eq!(solve_id("knapPI_3_100_1000_1"), 2397);
}
#[test]
fn knappi_3_200_1000_1() {
assert_eq!(solve_id("knapPI_3_200_1000_1"), 2697);
}
#[ignore] #[test]
fn knappi_1_5000_1000_1() {
assert_eq!(solve_id("knapPI_1_5000_1000_1"), 276457);
}
#[test]
fn knappi_2_2000_1000_1() {
assert_eq!(solve_id("knapPI_2_2000_1000_1"), 18051);
}
#[test]
fn knappi_1_500_1000_1() {
assert_eq!(solve_id("knapPI_1_500_1000_1"), 28857);
}
#[ignore] #[test]
fn knappi_1_10000_1000_1() {
assert_eq!(solve_id("knapPI_1_10000_1000_1"), 563647);
}
#[test]
fn knappi_1_2000_1000_1() {
assert_eq!(solve_id("knapPI_1_2000_1000_1"), 110625);
}
#[test]
fn knappi_3_1000_1000_1() {
assert_eq!(solve_id("knapPI_3_1000_1000_1"), 14390);
}
#[ignore] #[test]
fn knappi_2_5000_1000_1() {
assert_eq!(solve_id("knapPI_2_5000_1000_1"), 44356);
}
#[test]
fn knappi_3_500_1000_1() {
assert_eq!(solve_id("knapPI_3_500_1000_1"), 7117);
}
#[ignore] #[test]
fn knappi_2_10000_1000_1() {
assert_eq!(solve_id("knapPI_2_10000_1000_1"), 90204);
}
#[test]
fn knappi_3_2000_1000_1() {
assert_eq!(solve_id("knapPI_3_2000_1000_1"), 28919);
}
#[test]
fn knappi_1_1000_1000_1() {
assert_eq!(solve_id("knapPI_1_1000_1000_1"), 54503);
}
#[ignore] #[test]
fn knappi_3_10000_1000_1() {
assert_eq!(solve_id("knapPI_3_10000_1000_1"), 146919);
}
#[ignore] #[test]
fn knappi_3_5000_1000_1() {
assert_eq!(solve_id("knapPI_3_5000_1000_1"), 72505);
}
#[test]
fn knappi_2_1000_1000_1() {
assert_eq!(solve_id("knapPI_2_1000_1000_1"), 9052);
}
#[test]
fn knappi_2_500_1000_1() {
assert_eq!(solve_id("knapPI_2_500_1000_1"), 4566);
}