solverforge-core
Language-agnostic core library for SolverForge constraint solving.
Overview
This crate provides the foundation for SolverForge's constraint solving capabilities:
- Value types -
Value,ObjectHandle,FunctionHandle - Score types -
SimpleScore,HardSoftScore,HardMediumSoftScore,BendableScore(+ decimal variants) - Domain modeling -
PlanningAnnotation,DomainModel,DomainClass,FieldDescriptor - Constraint streams -
Constraint,ConstraintSet,StreamComponent,Joiner,Collector - Expression DSL -
Expr,Expression,NamedExpressionfor type-safe constraint building - Solver -
SolverBuilder,TypedSolver,SolverManager,SolverFactory - WASM generation -
WasmModuleBuilder,PredicateDefinition
Usage
[]
= "0.2"
Score Types
use ;
let score = of;
assert_eq!;
assert!;
let simple = of;
let hms = of;
Constraint Streams
use ;
let constraint = new
.with_stream
.with_stream
.with_stream
.with_stream;
Expression DSL
use ;
use FieldAccessExt;
// Build type-safe expressions
let has_room = is_not_null
.named_as;
// Use in stream components
let filter = filter_expr;
SolverManager (Multi-Problem Solving)
use ;
use Arc;
let service = new;
let mut manager = new
.with_termination;
// Solve multiple problems concurrently
manager.solve?;
manager.solve?;
// Check solutions
if let Some = manager.get_best_solution?
manager.terminate_all;
Shadow Variables
use PlanningAnnotation;
// Available shadow variable types
let index = index_shadow;
let next = next_element_shadow;
let prev = previous_element_shadow;
let anchor = anchor_shadow;
let inverse = inverse_relation_shadow;
Architecture
solverforge-core
├── constraints/ # Constraint streams, joiners, collectors
├── domain/ # Domain model, annotations, shadow variables
├── solver/ # SolverBuilder, SolverManager, HTTP client
├── wasm/ # WASM module generation, expression compiler
├── score/ # Score types (Simple, HardSoft, etc.)
└── analysis/ # Score explanation, constraint matches
License
Apache-2.0