JOpt.TourOptimizer feature atlas

This page describes the features of JOpt.TourOptimizer by the type of operational problem they solve: feasibility under complex constraints, speed and scalability, explainability and acceptance, incremental re-optimization and extensibility. It is written for readers who want an overview before they read a feature guide, and each section links the pages that explain its features. The feature list gives the same features as tables, with the example level of each.
What JOpt.TourOptimizer is built for
JOpt.TourOptimizer targets planning problems that go beyond the shortest path. Real deployments must handle:
- heterogeneous fleets and skill matrices,
- time windows, service times and multi-day operations,
- pickup and delivery, reloading and load-dependent feasibility,
- customer-specific policies that must be explainable and stable,
- incremental changes while the plan is already in motion,
- and performance constraints ranging from an interactive UI to a nightly batch.
JOpt.TourOptimizer is an optimization platform shaped by customer scenarios across logistics, field service, manufacturing, and dispatch operations.
Core modeling primitives
Nodes: the work to be scheduled
- Geo nodes (latitude and longitude) and time-window aware nodes
- Event nodes (tasks without a location that take time but need no travel)
- Optional nodes (the optimizer decides whether to visit them)
- Pillar / captured nodes (time windows as hard constraints, kept by the architecture)
Documentation:
- Basic elements: nodes, resources, connections, properties and the license of an optimization
- Optional nodes: nodes that the optimizer may visit or skip
- Pillar and captured nodes on the special features page: SLAs that the architecture guarantees
- Pillar nodes feature guide: how pillars work and how other nodes flow around them
- Event node example: tasks without a location in one plan with geo nodes
Resources: the actors that perform the work
- Working hours, multi-day and multi-shift planning
- Per-resource capabilities and constraints
- Route start and termination (open and closed routes)
Documentation:
- Basic elements: the
CapacityResourceand its parameters - Resources: the resource settings, the cost model and the builder pattern
Time modeling and schedule realism
Time windows, arrival logic and timeline control
- First and last node importance (soft steering of the node that starts or ends a route)
- Wait-on-early-arrival behavior, with a variant for the first node of a route
- Include visit duration (the arrival must fall within the time window, the visit may end after it) and joint visit duration (less service time for nodes at the same location that are visited one after the other)
- Overnight stay (multi-day continuity)
Documentation:
- Analyzing the result: how to read the timeline of a result
- Special features: the time-related sections
- Overnight stay feature guide: where and on which nights a resource stays out
Flexible start time: FlexTime and StartReductionTime
- FlexTime: the route start can be delayed to avoid idle time
- StartReductionTime: the route can start before the working hours (often for driving only) to reach early openings
Documentation:
- Flexible start time on the special features page: FlexTime and StartReductionTime
- Flexible start time feature guide: how FlexTime and StartReductionTime work and how to set them
Constraints and feasibility: hard rules by architecture
Hard constraints are fulfilled by architecture, not by a very high cost. Costs are for optimization within the feasible space; feasibility is modeled structurally.
Hard constraint patterns
- Pillar / captured nodes (time windows that must hold)
- Relations (same route, different route, same visitor, time-window relations)
- Territory constraints (zone codes, zone number constraints), hard or soft
- Resource qualification constraints (types and skills, expertise levels), hard or soft
Zone crossing penalization belongs to the costs: it adds a cost when a route crosses from one zone into another.
Documentation:
- Special features: the hard constraint concepts
- ZoneCodes on the special features page: territories via zone codes
- ZoneCodes feature guide: territories per working hours and nodes in several zones
- Zone crossing penalization: the cost per crossing and direction
- Skill with expertise and cost model: skills with expertise levels and a cost model
- Relations example: same and different route or visitor, relative time windows
Cost models and optimization objectives
The cost that JOpt minimizes is made of:
- weighted cost components (distance, time, lateness, overtime and others),
- optionally CO2 emissions, as a weighted part of the cost.
Custom cost convergence stops a run when a chosen metric stays unchanged for a set number of progress updates (stop when your KPI stabilizes). It can run final actions at that point, such as a final post-step or a snapshot export.
Documentation:
- CO2 emission feature guide: emissions per route and in total, and how to minimize them
- Optimization properties: the weights and the other property keys
- Custom cost convergence example: the cost converger and its final actions
Skills, qualifications and resource matching
Type and skill constraints (with and without expertise)
- Mandatory vs preferred assignments (binding resources)
- Banned vs unpreferred assignments (excluding resources)
- Skill types with expertise levels
- BitType: skill matching on bitsets, for many skills and frequent eligibility checks
Documentation:
- Skill with expertise and cost model: the skill with expertise and cost model condition
- BitType skills feature guide: skills as bitsets with expertise levels and a cost model
- Binding and excluding resource condition example: mandatory, preferred, banned and unpreferred resources
Pickup and delivery (PND) and stateful routing
The PND feature group covers:
- pickup and delivery pairing and precedence logic,
- capacity and load factors (including flexible loads),
- timed loads and time-dependent requirements,
- reporting and audit extraction for PND flows,
- manufacturing and logistics patterns (request and supply, a bakery chain, mixed load and unload),
- optional reload and unload nodes as part of feasibility and cost.
Documentation:
- Pickup and delivery feature guide: loads, depots, capacities and how to read the result
- Manufacturing planning: production quantities that the optimizer decides with FlexLoads
- Optional nodes: nodes that the optimizer may visit or skip, such as unload stops
Clustering construction and large-scale problem decomposition
Clustering during construction builds a feasible or near-feasible starting solution quickly, which helps the later optimization phases converge on large instances.
Capabilities include:
- city-to-city clustering,
- inner-city clustering,
- keeping the clusters during the optimization (cohesion is kept while the order improves).
Documentation:
- Clustering during construction: the clustering construction algorithm and examples of its output
- Clustering examples: city to city, inner city and kept clusters
AutoFilter: excluding nodes that cause violations
AutoFilter manages infeasibility in over-constrained problems:
- it records which nodes cause violations in the many solutions that JOpt creates in parallel,
- it removes the nodes whose violations dominate from the optimization,
- and the remaining nodes get a feasible plan, with a list of the excluded nodes and the reasons.
Documentation:
- AutoFilter on the special features page: the penalty-point concept
- AutoFilter feature guide: when and how to use AutoFilter
- Optimization properties: the AutoFilter property keys
Performance mode and compute controls
JOpt includes these controls for runtime and compute:
- Performance mode, which shortens the runtime with a smaller population in genetic evolution and fewer operators,
- CPU core controls and parallelism settings,
- algorithm selection pipelines via optimization schemes.
Documentation:
- Performance mode: what the mode changes and its trade-offs
- Optimization properties: the property catalog, among them the CPU core settings
Optimization schemes: choose algorithms, order and defaults
An optimization scheme defines how the solver runs:
- select the construction algorithm explicitly,
- select the heuristic algorithms and their order,
- override per-phase parameters,
- enable or disable AutoFilter per phase,
- provide custom default properties with safe local overrides.
Documentation:
- Algorithm selection example: the construction algorithm and the phases of a scheme
- Custom default properties example: defaults in the scheme with local overrides
- Optimization properties: the property catalog
Extensibility: Open Assessor (node level and route level)
The Open Assessor adds customer-specific rules to the optimization without forking the solver. You can inject:
- custom costs and preferences,
- custom violations and explainability payloads,
- domain-specific scoring and acceptance shaping.
Documentation:
- Open Assessor on the special features page: the concept
- Open Assessor feature guide: node-level and route-level assessors
Realistic connections: distance and time strategies
External node connections (explicit distance and time)
- provide connections from an external source, such as a routing engine or a precomputed matrix,
- give elements at the same position one location ID: connections are stored by location ID, so these elements share them.
Documentation:
- Backup connector: how distances and times are calculated: the calculation when no connection is given
- External node connection example: a partial matrix and location IDs
BackupConnector (fallback distance and time)
When a connection is missing, the backup connector calculates its distance and driving time. A custom backup connector can:
- switch the distance model, for example to the Haversine formula,
- apply a correction factor, for example for terrain or detours,
- make the travel time depend on the resource.
Documentation:
- Backup connector: the default calculation and how to change it
- Custom backup connector example: a custom distance and time calculation
Connection Store (dynamic, time-dependent travel)
For rush hours, weekend patterns or any other time-dependent travel, a connection can carry timed overrides. They change its driving time, and optionally its distance, by time of day and day of week.
Documentation:
- Connection store example: time-dependent driving times
Continuity and incremental re-optimization
JOpt supports:
- saving an optimization result to JSON (file or string),
- loading it back and continuing,
- rebuilding a custom warm-start solution from JSON snapshots,
- reassigning nodes and resources as new work arrives.
Typical uses:
- continue yesterday's plan,
- insert late jobs,
- add or remove resources,
- re-optimize after a disruption.
Documentation:
- Load and save optimization example: save, load and resume a run
- Custom solution example: a warm start from an existing plan
- Custom solution from JSON example: a warm start from a stored snapshot
Progress streaming, analytics and reporting
Capabilities include:
- optimization progress events and structured updates,
- frequency control and external time-based polling,
- full progress readout and parsing utilities,
- requesting the best result so far while the run continues,
- stable extraction for reporting (including PND report extraction patterns).
Documentation:
- Reactive events and streams: the event streams of a run and how to subscribe to them
- Optimization progress example: the progress frequency and progress on request
- Read out full progress example: all progress values of a run
- Request result example: an intermediate result while the run continues
Debugging, comparison and end-user acceptance
Comparison tool (make improvements explainable)
The comparison tool is useful for:
- debugging ("why did the route change?"),
- before-and-after acceptance reporting,
- planner trust and adoption ("here is what improved and what stayed stable").
Documentation:
- Comparison tool: how a solution is compared with a modified one
Robustness and operational safety
Uncaught exception handling
In real deployments, exceptions often happen in:
- background solver threads,
- custom injected logic,
- or reactive subscriptions.
JOpt can terminate the optimization deterministically and propagate the error through the result future of the run.
Documentation:
- Uncaught exception handling example: the handler and the error in the result future
Background reading on reactive programming:
Geographic and territory modeling
Open Location Code (Plus Codes)
- convert latitude and longitude to plus codes and back,
- run an optimization with plus code inputs.
Documentation:
- Open Location Code example: plus codes instead of latitude and longitude
Zone codes and zone crossing
- define territories via zone codes (for example postal code logic),
- apply zone number constraints,
- penalize crossings between zones, such as bridges or tunnels, with zone crossing penalization.
Documentation:
- ZoneCodes on the special features page: territories via zone codes
- Zone crossing penalization: the cost per crossing and direction
Practical export and integration utilities
- Export to KML for GIS visualization and stakeholder communication
- Build info extraction for support and debugging ("what version produced this?")
- License setup and secure deployment patterns
Documentation:
- Export to KML example: a result as a KML file
- Build info example: the build metadata of the library
- License guide: how to set a license, and the element limits
A suggested demo sequence
To present JOpt.TourOptimizer in a short demo, show these topics in this order:
- A realistic first optimization: the First optimization tutorial.
- A feature for over-constrained problems: AutoFilter.
- A stateful feature: pickup and delivery.
- Customer-specific extensibility: Open Assessor.
- Operational robustness: uncaught exception handling, progress streaming and the comparison tool.
- Continuity: saving and loading JSON and a custom warm start, so that planning does not start from zero.
Related pages
- Documentation Hub: where to start and how the hub is organized
- Feature list: the features as tables by topic, with the example level of each
- Feature guides: one guide per feature
- Special features: the concepts behind several features on one page
- Optimization properties: the property keys by category, with their defaults
- Java-TourOptimizer-Examples on GitHub: the example code of all levels
- Expert examples on GitHub: the expert example code
Added: 2026-02-27 (JOpt core 7.5.3-j17) | Last updated: 2026-10-23