use std::path::PathBuf;
use ddo::*;
use crate::{dominance::LcsDominance, io_utils::read_instance, model::{LcsRelax, LcsRanking}};
fn locate(id: &str) -> PathBuf {
PathBuf::new()
.join(env!("CARGO_MANIFEST_DIR"))
.join("../resources/lcs/")
.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 = LcsRelax::new(&problem);
let ranking = LcsRanking;
let width = FixedWidth(100);
let dominance = SimpleDominanceChecker::new(LcsDominance, problem.nb_variables());
let cutoff = NoCutoff;
let mut fringe = NoDupFringe::new(MaxUB::new(&ranking));
let mut solver = ParCachingSolverPooled::new(
&problem,
&relaxation,
&ranking,
&width,
&dominance,
&cutoff,
&mut fringe,
);
let Completion { best_value , ..} = solver.maximize();
best_value.map(|x| x).unwrap_or(-1)
}
#[ignore] #[test]
fn bacteria_elusimicrobia() {
assert_eq!(solve_id("Bacteria;Elusimicrobia.bacchg"), 1141);
}
#[test]
fn neg_12_3_1() {
assert_eq!(solve_id("neg_12_3_1.txt"), 203);
}
#[test]
fn neg_12_3_3() {
assert_eq!(solve_id("neg_12_3_3.txt"), 358);
}
#[ignore] #[test]
fn neg_12_3_6() {
assert_eq!(solve_id("neg_12_3_6.txt"), 245);
}
#[ignore] #[test]
fn neg_12_3_8() {
assert_eq!(solve_id("neg_12_3_8.txt"), 268);
}
#[test]
fn poz_12_3_1() {
assert_eq!(solve_id("poz_12_3_1.txt"), 222);
}