JOpt.TourOptimizer feature list

Illustration on a dark street grid: three list sheets in lime, blue and amber, topped by a leaf, a gear and a star icon, stand inside a frame of thin lines with glowing corner points

This page lists the features of JOpt.TourOptimizer in one table per topic. Each row gives the level at which the examples introduce the feature (basic, advanced, expert or REST), what the feature enables and when to use it. It is written for developers and planners who check whether a requirement is covered; the elements that the rows refer to, such as nodes and resources, are explained in Basic elements. The feature atlas describes the same features in prose.

The REST API of JOpt.TourOptimizer uses the same snapshot schema as the Java library. The features that are part of the published API schema can be used from any client: Java, TypeScript, Python, C#, or any language with an OpenAPI code generator. The API reference shows the schema.
The three example levels with sample topics: basic for onboarding, advanced for modeling and production, expert for customization

Getting started, fundamentals and interoperability

FeatureLevelWhat it enablesWhen to use it
First optimization pipelineBasicMinimal working optimization (nodes, resources, run, result)Always the first validation step in any project
Core modeling primitives (nodes, resources, time windows, durations)BasicStandard routing and scheduling building blocksAny operational scenario
Read out results (routes, timing, KPIs)BasicExtract the order, arrivals and departures, totalsIntegration, reporting, UI, audits
Result output formatting (headers, structured export)BasicConsistent downstream consumptionWhen several systems consume results
Export to KMLBasicGIS visualization for stakeholders"Show it on a map" demos and acceptance
ExtraInfo payloads (node and resource metadata)AdvancedAttach domain-specific data without breaking the modelWhen a UI or ERP needs extra data per stop or vehicle
REST API (the features of the published API schema)RESTThe features of the published API schema from any client, with the snapshot schema of the Java libraryLanguage-agnostic integrations, platform services

Time modeling and schedule realism

FeatureLevelWhat it enablesWhen to use it
Include visit durationAdvancedThe arrival must fall within the time window; the visit may end after itWhen the time window limits the arrival, not the whole visit
Joint visit durationAdvancedLess total service time for nodes at the same location that are visited one after the otherWhen tasks at one place share setup or overhead
Wait on early arrival (first node)AdvancedWaiting for the time window at the first node of a route; work starts at once on early arrival at later nodesWhen a route must not start before the shift, but later stops may start early
First and last nodeAdvancedSoft steering, by importance, of the node that starts or ends a routeStart the day with a key customer, end at a handover location
Overnight stayAdvancedMulti-day continuity across routesField service, multi-day delivery, overnight planning
FlexTime and StartReductionTimeExpertFlexible start-time shiftsWhen shifting the start improves feasibility or acceptance
Event nodesBasicTasks without a location that take time within a time window but need no travelCustomer calls, administrative tasks

Route structure and feasibility by architecture

Hard constraints are fulfilled by architecture, not by a very high cost. Costs optimize within the feasible space; feasibility is modeled structurally.
FeatureLevelWhat it enablesWhen to use it
Open vs closed routeAdvancedEnd at the last node or return homeChoose based on operational reality
Return to startAdvancedReturns to the start location between visits, with an optional dwell timeReloading at the depot between visits
Pillar / captured nodesBasicTime windows (SLAs) as hard constraints; other nodes flow around the pillarWhen an appointment must not be late
Relations (same or different route or visitor, relative time windows)AdvancedCross-node coupling constraintsWhen tasks must be together or separate, or spaced in time
Optional nodes (general)ExpertNodes may be visited or skippedWhen stopovers are optional but useful
AutoFilterAdvancedTakes nodes that are very likely infeasible out of the run, so that the other nodes get a feasible planOver-constrained instances in which a few nodes cannot be served

Locations, territories and zones

FeatureLevelWhat it enablesWhen to use it
Open Location Code (Plus Codes)AdvancedLocation identifiers without raw latitude and longitudeWhen interfaces use plus codes
Territories via zone codesAdvancedTerritory modeling via postal or zone codes, hard or soft, per working hoursSales and service territories, compliance regions
Zone number constraintsAdvancedTerritories as numbered zones instead of postal codesWhen the zones are simple numbered areas
Zone crossing penalization (bridge and tunnel crossings)AdvancedAn extra cost when a route crosses from one zone into anotherToll bridges, tunnels, river crossings
UK post codes / zone examplesAdvancedConcrete territory modeling patternsWhen zones are postal-code driven

Travel times, routing data and network integration

FeatureLevelWhat it enablesWhen to use it
External node connectionsBasicInject travel times and distances externallyWhen you have authoritative routing data
BackupConnector (fallback distance and time)BasicCalculated distance and driving time where no connection is givenWhen travel data is partial
ConnectionStore (time-dependent)ExpertRush hour, weekend and time-of-day dependent travelWhen realism depends on the time of day
Custom backup connector strategiesExpertDomain-specific fallback computationWhen the default fallback is not enough

Resource capabilities, skills and assignment logic

FeatureLevelWhat it enablesWhen to use it
Binding vs excluding resource conditionsAdvancedMandatory and preferred, banned and unpreferred assignmentWhen assignment rules must be explicit
Resource types with expertiseAdvancedSkill and level matchingTechnician and skill-based dispatch
BitSet accelerated matching (BitType)AdvancedSkill eligibility checks on bitsets, for many skills and frequent checksLarge skill matrices where runtime matters
Resource constraint alias IDAdvancedOne logical ID for a team or pool of resources, used in constraintsWhen a rule names a team, not one resource
Resource connection efficiencyAdvancedTravel time depends on the resourceVehicle differences (speed, access)
Resource visit duration efficiencyAdvancedService time depends on the resourceExperience and tooling differences

Pickup and delivery, capacity and stateful logistics

FeatureLevelWhat it enablesWhen to use it
Pickup and delivery (PND) frameworkAdvancedPrecedence, capacity, flexible and timed loads, reportingLogistics, manufacturing, field supply chain
Optional nodes as reload or unload basesExpertThe optimizer inserts stopovers when they lower the cost or are neededWaste management, replenishment, intermediate hubs
unloadAll behaviorExpertFull reset of the current load at stopoversDepots, transfer stations, emptying workflows
PND report extractionAdvancedAudit-friendly flow reportingWhen traceability matters

Scalability, acceleration and algorithm control

FeatureLevelWhat it enablesWhen to use it
Clustering constructionAdvancedA starting solution built from clusters (city to city, inner city), optionally kept during the optimizationLarge instances; operationally coherent routes
Performance modeAdvancedA shorter runtime through a smaller population and fewer genetic operators, at a possible cost in qualityLarge instances with few constraints
Optimization scheme: algorithm selection pipelineExpertExplicit construction and ordered heuristic phasesWhen you need reproducible pipelines and tuning clarity
Optimization scheme: custom default propertiesExpertCentral defaults with safe per-run overridesSystem-wide defaults across many jobs and services
Read out default propertiesExpertThe full property catalog with its defaultsConfiguration audits, release comparisons, debugging
Custom cost convergenceExpertStop when your KPI stabilizesPredictable "good enough" runtime
CO2 emission optimizationAdvancedOptimize emissions as an objective componentSustainability-focused planning

Continuity, persistence and operational lifecycle

FeatureLevelWhat it enablesWhen to use it
Save optimization to JSON (file or string)BasicPersist a full snapshotReproducibility, audits, handoff
Save during runBasicIntermediate snapshotsLong runs; recovery points
Load optimization from JSON (file or string)BasicResume or replay optimizationsDebugging, continuity, rollback
Load into a fresh runBasicA new run from a saved model, without its old solutionRollover planning, what-if scenarios
Create custom solution (warm start)ExpertInject an existing plan as startRespect ongoing plans and human decisions
Create custom solution from JSONExpertBuild a warm start from a stored snapshot"Continue where we left off" workflows
Run optimization in a loopAdvancedStop a solver stage after a chosen number of loopsOwn stop criteria; checking results between loops

Observability, explainability and end-user acceptance

FeatureLevelWhat it enablesWhen to use it
Optimization progress streamingAdvancedEvents and frequency controlUI progress, monitoring, SLAs
Full progress readout and parsingAdvancedDeep telemetry and diagnosticsTuning, root-cause analysis
Request result (intermediate result)AdvancedThe best result so far while the run continuesInteractive systems, early insights
Compare results toolExpertDebug deltas and acceptance reporting"Why did the plan change?" discussions
Read out results with structured headersBasicReliable downstream analyticsWhen results flow into BI or reporting

Extensibility: customer-specific logic without forking

FeatureLevelWhat it enablesWhen to use it
Open Assessor (route level)ExpertCustom route-level rules, costs, explainabilityBusiness policies at route scope
Open Assessor (node level)ExpertCustom node-in-route rules, costs, explainabilityPriority, ordering, deadline-like policies
Custom post-steps and finalization patternsExpertFinal actions when a cost converger stops the run, such as a final post-step or a snapshot exportWhen a run needs a defined last step

Robustness and production safety

FeatureLevelWhat it enablesWhen to use it
Uncaught exception handlingExpertDeterministic failure propagation (async threads)Production safety; avoids silent failures
RxJava event integration patternsExpertReactive pipelines with error consumersStreaming UIs, event-based architectures
Build info extractionExpertProvenance ("what build produced this?")Support workflows and reproducibility
License setupBasicThe license as a JSON string or from a fileWhen a run has more elements than JOpt allows without a license: License guide: element limits

Added: 2026-02-27 (JOpt core 7.5.3-j17) | Last updated: 2026-10-23