#动态规划 #模型 #搜索 #变量 #启发式 #求解器 #增量

dyPDL启发式搜索

动态规划描述语言(DyPDL)的启发式搜索求解器

17个不稳定版本 (7个破坏性版本)

0.8.0 2024年6月7日
0.7.2 2024年3月9日
0.6.1 2023年12月24日
0.5.0 2023年8月11日
0.3.3 2023年3月21日

82编程语言 中排名

Download history 10/week @ 2024-04-09 3/week @ 2024-04-23 10/week @ 2024-05-21 1/week @ 2024-05-28 135/week @ 2024-06-04 23/week @ 2024-06-11 111/week @ 2024-07-23

每月111次下载
2 crates 中使用

MIT/Apache

3.5MB
70K SLoC

Actions Status crates.io minimum rustc 1.65 License License: MIT

dyPDL启发式搜索

dyPDL启发式搜索是DyPDL的启发式搜索求解器库。

API文档

示例

use dypdl::prelude::*;
use dypdl_heuristic_search::{CabsParameters, create_dual_bound_cabs, FEvaluatorType};
use std::rc::Rc;

let mut model = Model::default();
let variable = model.add_integer_variable("variable", 0).unwrap();
model.add_base_case(
    vec![Condition::comparison_i(ComparisonOperator::Ge, variable, 1)]
).unwrap();
let mut increment = Transition::new("increment");
increment.set_cost(IntegerExpression::Cost + 1);
increment.add_effect(variable, variable + 1).unwrap();
model.add_forward_transition(increment.clone()).unwrap();
model.add_dual_bound(IntegerExpression::from(0)).unwrap();

let model = Rc::new(model);
let parameters = CabsParameters::default();
let f_evaluator_type = FEvaluatorType::Plus;

let mut solver = create_dual_bound_cabs(model, parameters, f_evaluator_type);
let solution = solver.search().unwrap();
assert_eq!(solution.cost, Some(1));
assert_eq!(solution.transitions, vec![increment]);
assert!(!solution.is_infeasible);

依赖关系

~4–9.5MB
~85K SLoC