Vehicle-routing heuristics in pure MoonBit, with CVRP and VRPTW support.
///|
test "README quick start" {
let config = SolveConfig::default().tune(iterations=8)
let result = solve(micro_cvrp_sample(), config~)
assert_true(result.best().is_feasible())
assert_true(result.completion_ratio() == 1.0)
}moon run cmd/mainVRP_SAMPLE=small-cvrp moon run cmd/mainimport "pqx123-lgtm/moonbit-vrp-solver" @vrp
fn solve_demo {
let instance = @vrp.micro_cvrp_sample()
let config = @vrp.SolveConfig::default().tune(iterations=120)
let result = @vrp.solve(instance, config~)
println(@vrp.solution_text_detailed(result))
}moon run cmd/benchmarkcore/ models, distance matrices, constraints, validation, route edits
constructive/ seeds and construction strategy comparison
instance/ samples, deterministic generators, CVRPLIB/Solomon parsers
operators/ destruction, repair, relatedness, and neighborhood moves
search/ ALNS, local search, multi-start, portfolio, simulated annealing
report/ text, Markdown, CSV, diagnostics, and ASCII output
benchmark/ traceable benchmark fixture and result model
cmd/ thin CLI consumers of the public librarymoon run cmd/benchmark > benchmark-output.txtmoon update
moon fmt --check
moon info
moon check --target all --deny-warn
moon test --target all
moon build --target all
moon run cmd/main
moon run cmd/benchmarklet a_n32_k5_text : Stringfn acceptance_probability(delta : Double, temperature : Double) -> Doublefn anneal(instance : VrpInstance, solve_config : SolveConfig, config : AnnealingConfig) -> AnnealingRunfn ascii_route_map(instance : VrpInstance, solution : Solution, width : Int, height : Int) -> Stringfn ascii_route_map_with_legend(instance : VrpInstance, solution : Solution, width : Int, height : Int) -> Stringfn assess_solution(instance : VrpInstance, solution : Solution, policy : FeasibilityPolicy) -> FeasibilityAssessmentfn build_solution(instance : VrpInstance, route_stops : Array[Array[Int]], unassigned : Array[Int], config : SolveConfig) -> Solutionfn decode_routes(instance : VrpInstance, text : String, config : SolveConfig) -> Solution raise RouteEncodingErrorfn demand_first_repair(instance : VrpInstance, partial : Solution, config : SolveConfig) -> Solutionfn destroy_fraction(instance : VrpInstance, solution : Solution, operator : DestroyOperator, numerator : Int, denominator : Int, seed : Int, config : SolveConfig) -> Solutionfn destroy_solution(instance : VrpInstance, solution : Solution, operator : DestroyOperator, remove_count : Int, seed? : Int, config : SolveConfig) -> Solutionfn feasible_insertions(instance : VrpInstance, solution : Solution, customer_index : Int, config : SolveConfig, policy : FeasibilityPolicy) -> Array[CandidateInsertion]fn local_search(instance : VrpInstance, solution : Solution, solve_config : SolveConfig, options : LocalSearchConfig) -> Solutionfn make_instance(name : String, variant : ProblemVariant, depot : Depot, vehicle : VehicleProfile, customers : Array[Customer]) -> VrpInstancefn make_instance_with_metric(name : String, variant : ProblemVariant, depot : Depot, vehicle : VehicleProfile, customers : Array[Customer], metric : DistanceMetric) -> VrpInstancefn relatedness_score(instance : VrpInstance, left : Int, right : Int, weights : RelatednessWeights) -> Doublefn repair_solution(instance : VrpInstance, solution : Solution, operator : RepairOperator, config : SolveConfig) -> Solutionfn repair_until_stable(instance : VrpInstance, partial : Solution, config : SolveConfig, max_rounds : Int) -> Solutionfn repair_with_priority(instance : VrpInstance, partial : Solution, operator : RepairOperator, config : SolveConfig) -> Solutionfn solve_with_seed(instance : VrpInstance, seed_solution : Solution, config? : SolveConfig) -> SolveResultfn solve_with_strategies(instance : VrpInstance, strategies : Array[ConstructionStrategy], config : SolveConfig) -> MultiStartRunfn variable_neighborhood_descent(instance : VrpInstance, solution : Solution, config : SolveConfig, max_rounds : Int) -> SolutionInstall
Download zipVehicle-routing heuristics in pure MoonBit, with CVRP and VRPTW support.