crates.io minimum rustc 1.64 License License: MIT

dypdl-heuristic-search

dypdl-heuristic-search is a library of heuristic search solvers for DyPDL.

API Documentation

Example

```rust use dypdl::prelude::*; use dypdlheuristicsearch::{FEvaluatorType, createdualboundcabs}; use dypdlheuristicsearch::searchalgorithm::util::Parameters; use std::rc::Rc;

let mut model = Model::default(); let variable = model.addintegervariable("variable", 0).unwrap(); model.addbasecase( vec![Condition::comparisoni(ComparisonOperator::Ge, variable, 1)] ).unwrap(); let mut increment = Transition::new("increment"); increment.setcost(IntegerExpression::Cost + 1); increment.addeffect(variable, variable + 1).unwrap(); model.addforwardtransition(increment.clone()).unwrap(); model.adddual_bound(IntegerExpression::from(0)).unwrap();

let model = Rc::new(model); let parameters = Parameters::default(); let fevaluatortype = FEvaluatorType::Plus;

let mut solver = createdualboundcabs(model, parameters, fevaluatortype, 1, false); let solution = solver.search().unwrap(); asserteq!(solution.cost, Some(1)); asserteq!(solution.transitions, vec![increment]); assert!(!solution.isinfeasible); ```