[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"navigation":3,"\u002Fapi\u002Fcustomers:{\"populate\":\"*\",\"sort\":\"sortOrder:asc\",\"filters[isFeatured][$eq]\":true}":553,"products:j-opt-tour-optimizer":842},[4,63,507],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":6},"Getting Started",false,"\u002Fdocs\u002Fgetting-started","1.docs\u002F0.getting-started",[10,19,48],{"title":11,"icon":6,"path":12,"stem":13,"children":14,"page":6},"Introduction","\u002Fdocs\u002Fgetting-started\u002Fhome","1.docs\u002F0.getting-started\u002F0.home",[15],{"title":11,"path":16,"stem":17,"icon":18},"\u002Fdocs\u002Fgetting-started\u002Fhome\u002Fintroduction","1.docs\u002F0.getting-started\u002F0.home\u002Fintroduction","i-lucide-home",{"title":20,"icon":6,"path":21,"stem":22,"children":23,"page":6},"Quickstart","\u002Fdocs\u002Fgetting-started\u002Fquickstart","1.docs\u002F0.getting-started\u002F1.quickstart",[24,28,33,38,43],{"title":5,"path":25,"stem":26,"icon":27},"\u002Fdocs\u002Fgetting-started\u002Fquickstart\u002Fgetting_started","1.docs\u002F0.getting-started\u002F1.quickstart\u002F0.getting_started","i-lucide-rocket",{"title":29,"path":30,"stem":31,"icon":32},"Quickstart Sandboxes","\u002Fdocs\u002Fgetting-started\u002Fquickstart\u002Fjopt_sandboxes_quickstart","1.docs\u002F0.getting-started\u002F1.quickstart\u002F1.jopt_sandboxes_quickstart","i-lucide-codesandbox",{"title":34,"path":35,"stem":36,"icon":37},"Angular Demo Client","\u002Fdocs\u002Fgetting-started\u002Fquickstart\u002Fangular_demo_client_short","1.docs\u002F0.getting-started\u002F1.quickstart\u002F2.angular_demo_client_short","i-lucide-monitor",{"title":39,"path":40,"stem":41,"icon":42},"JOpt AI Assistant (GPT)","\u002Fdocs\u002Fgetting-started\u002Fquickstart\u002Fjopt-ai-assistant","1.docs\u002F0.getting-started\u002F1.quickstart\u002F3. jopt-ai-assistant","i-lucide-bot",{"title":44,"path":45,"stem":46,"icon":47},"Frequently Asked Questions (FAQ)","\u002Fdocs\u002Fgetting-started\u002Fquickstart\u002Ffaq","1.docs\u002F0.getting-started\u002F1.quickstart\u002FFAQ","i-lucide-table-of-contents",{"title":49,"icon":6,"path":50,"stem":51,"children":52,"page":6},"Basic Tutorials","\u002Fdocs\u002Fgetting-started\u002Ftutorials","1.docs\u002F0.getting-started\u002F2.tutorials",[53,58],{"title":54,"path":55,"stem":56,"icon":57},"Basic elements","\u002Fdocs\u002Fgetting-started\u002Ftutorials\u002Fbasic-elements","1.docs\u002F0.getting-started\u002F2.tutorials\u002F0.basic-elements","i-lucide-component",{"title":59,"path":60,"stem":61,"icon":62},"First Optimization","\u002Fdocs\u002Fgetting-started\u002Ftutorials\u002Ffirst-optimization","1.docs\u002F0.getting-started\u002F2.tutorials\u002F1.first-optimization","i-lucide-footprints",{"title":64,"icon":6,"path":65,"stem":66,"children":67,"page":6},"Learn & Explore","\u002Fdocs\u002Flearn-and-explore","1.docs\u002F1.learn-and-explore",[68,82,207,217,242,288,421,490],{"title":69,"icon":6,"path":70,"stem":71,"children":72,"page":6},"Features Overview","\u002Fdocs\u002Flearn-and-explore\u002Ffeatures","1.docs\u002F1.learn-and-explore\u002F0.features",[73,78],{"title":74,"path":75,"stem":76,"icon":77},"TourOptimizer Feature List (Basic \u002F Advanced \u002F Expert)","\u002Fdocs\u002Flearn-and-explore\u002Ffeatures\u002Ffeaturelist","1.docs\u002F1.learn-and-explore\u002F0.features\u002F0.featureList","i-lucide-earth",{"title":79,"path":80,"stem":81,"icon":77},"TourOptimizer Feature Atlas","\u002Fdocs\u002Flearn-and-explore\u002Ffeatures\u002Ffeatureoverview","1.docs\u002F1.learn-and-explore\u002F0.features\u002FFeatureOverview",{"title":83,"icon":6,"path":84,"stem":85,"children":86,"page":-1},"Feature Guides","\u002Fdocs\u002Flearn-and-explore\u002Ffeature-guides","1.docs\u002F1.learn-and-explore\u002F1.feature-guides\u002Findex",[87,90,95,99,104,109,114,119,124,129,134,138,143,148,153,158,163,167,172,177,182,187,192,197,202],{"title":88,"path":84,"stem":85,"icon":89},"Feature Guides - Overview","i-lucide-clipboard-list",{"title":91,"path":92,"stem":93,"icon":94},"License","\u002Fdocs\u002Flearn-and-explore\u002Ffeature-guides\u002Flicense","1.docs\u002F1.learn-and-explore\u002F1.feature-guides\u002F0.license","i-lucide-key",{"title":96,"path":97,"stem":98,"icon":37},"Simplified Angular Demo Client","\u002Fdocs\u002Flearn-and-explore\u002Ffeature-guides\u002Fangular_demo_client","1.docs\u002F1.learn-and-explore\u002F1.feature-guides\u002Fangular_demo_client",{"title":100,"path":101,"stem":102,"icon":103},"AutoFilter","\u002Fdocs\u002Flearn-and-explore\u002Ffeature-guides\u002Fautofilter","1.docs\u002F1.learn-and-explore\u002F1.feature-guides\u002Fautofilter","i-lucide-filter",{"title":105,"path":106,"stem":107,"icon":108},"Backup-Connector","\u002Fdocs\u002Flearn-and-explore\u002Ffeature-guides\u002Fbackupconnector","1.docs\u002F1.learn-and-explore\u002F1.feature-guides\u002Fbackupconnector","i-lucide-spline",{"title":110,"path":111,"stem":112,"icon":113},"BitType Skill with CostModel","\u002Fdocs\u002Flearn-and-explore\u002Ffeature-guides\u002Fbittype_condition","1.docs\u002F1.learn-and-explore\u002F1.feature-guides\u002Fbittype_condition","i-lucide-cpu",{"title":115,"path":116,"stem":117,"icon":118},"Clustering","\u002Fdocs\u002Flearn-and-explore\u002Ffeature-guides\u002Fclustering_construction","1.docs\u002F1.learn-and-explore\u002F1.feature-guides\u002Fclustering_construction","i-lucide-chart-network",{"title":120,"path":121,"stem":122,"icon":123},"CO2-Emission","\u002Fdocs\u002Flearn-and-explore\u002Ffeature-guides\u002Fco2_emission","1.docs\u002F1.learn-and-explore\u002F1.feature-guides\u002Fco2_emission","i-lucide-trees",{"title":125,"path":126,"stem":127,"icon":128},"Comparison Tool","\u002Fdocs\u002Flearn-and-explore\u002Ffeature-guides\u002Fcomparison_tool","1.docs\u002F1.learn-and-explore\u002F1.feature-guides\u002Fcomparison_tool","i-lucide-scale",{"title":130,"path":131,"stem":132,"icon":133},"Flexible Start Time","\u002Fdocs\u002Flearn-and-explore\u002Ffeature-guides\u002Fflextime","1.docs\u002F1.learn-and-explore\u002F1.feature-guides\u002Fflextime","i-lucide-clock",{"title":135,"path":136,"stem":137,"icon":32},"JOpt-Sandboxes","\u002Fdocs\u002Flearn-and-explore\u002Ffeature-guides\u002Fjopt-sandboxes","1.docs\u002F1.learn-and-explore\u002F1.feature-guides\u002Fjopt-sandboxes",{"title":139,"path":140,"stem":141,"icon":142},"MagnetoCondition (MagnetoNodeConstraint)","\u002Fdocs\u002Flearn-and-explore\u002Ffeature-guides\u002Fmagnetocondition","1.docs\u002F1.learn-and-explore\u002F1.feature-guides\u002FmagnetoCondition","i-lucide-magnet",{"title":144,"path":145,"stem":146,"icon":147},"Manufacturing Planning via PND","\u002Fdocs\u002Flearn-and-explore\u002Ffeature-guides\u002Fmanifacturing_planning","1.docs\u002F1.learn-and-explore\u002F1.feature-guides\u002Fmanifacturing_planning","i-lucide-factory",{"title":149,"path":150,"stem":151,"icon":152},"Open Assessor","\u002Fdocs\u002Flearn-and-explore\u002Ffeature-guides\u002Fopen_assessor","1.docs\u002F1.learn-and-explore\u002F1.feature-guides\u002Fopen_assessor","i-lucide-puzzle",{"title":154,"path":155,"stem":156,"icon":157},"Optimization Properties","\u002Fdocs\u002Flearn-and-explore\u002Ffeature-guides\u002Foptimization_properties","1.docs\u002F1.learn-and-explore\u002F1.feature-guides\u002Foptimization_properties","i-lucide-settings",{"title":159,"path":160,"stem":161,"icon":162},"Overnight Stay","\u002Fdocs\u002Flearn-and-explore\u002Ffeature-guides\u002Fovernight_stay","1.docs\u002F1.learn-and-explore\u002F1.feature-guides\u002Fovernight_stay","i-lucide-moon",{"title":164,"path":165,"stem":166,"icon":27},"Performance Mode","\u002Fdocs\u002Flearn-and-explore\u002Ffeature-guides\u002Fperformance_mode","1.docs\u002F1.learn-and-explore\u002F1.feature-guides\u002Fperformance_mode",{"title":168,"path":169,"stem":170,"icon":171},"Pick up and delivery","\u002Fdocs\u002Flearn-and-explore\u002Ffeature-guides\u002Fpickup_and_delivery","1.docs\u002F1.learn-and-explore\u002F1.feature-guides\u002Fpickup_and_delivery","i-lucide-truck",{"title":173,"path":174,"stem":175,"icon":176},"Pillar Nodes (CapturedNodes)","\u002Fdocs\u002Flearn-and-explore\u002Ffeature-guides\u002Fpillar_nodes","1.docs\u002F1.learn-and-explore\u002F1.feature-guides\u002Fpillar_nodes","i-lucide-lock",{"title":178,"path":179,"stem":180,"icon":181},"Quantum Construction Plugin (D-Wave)","\u002Fdocs\u002Flearn-and-explore\u002Ffeature-guides\u002Fquantum_dwave_plugin_featureguide","1.docs\u002F1.learn-and-explore\u002F1.feature-guides\u002Fquantum_dwave_plugin_featureguide","i-lucide-atom",{"title":183,"path":184,"stem":185,"icon":186},"Reactive Events & Streams","\u002Fdocs\u002Flearn-and-explore\u002Ffeature-guides\u002Freactive_events","1.docs\u002F1.learn-and-explore\u002F1.feature-guides\u002Freactive_events","i-lucide-radio",{"title":188,"path":189,"stem":190,"icon":191},"Return To Start","\u002Fdocs\u002Flearn-and-explore\u002Ffeature-guides\u002Freturn_to_start","1.docs\u002F1.learn-and-explore\u002F1.feature-guides\u002Freturn_to_start","i-lucide-undo-2",{"title":193,"path":194,"stem":195,"icon":196},"Skill with Cost Model","\u002Fdocs\u002Flearn-and-explore\u002Ffeature-guides\u002Fskill_costmodel","1.docs\u002F1.learn-and-explore\u002F1.feature-guides\u002Fskill_costmodel","i-lucide-pocket-knife",{"title":198,"path":199,"stem":200,"icon":201},"ZoneCodes & Territories","\u002Fdocs\u002Flearn-and-explore\u002Ffeature-guides\u002Fzonecodes","1.docs\u002F1.learn-and-explore\u002F1.feature-guides\u002Fzonecodes","i-lucide-map-pin",{"title":203,"path":204,"stem":205,"icon":206},"Zone Crossing Penalization","\u002Fdocs\u002Flearn-and-explore\u002Ffeature-guides\u002Fzonecrossing","1.docs\u002F1.learn-and-explore\u002F1.feature-guides\u002Fzonecrossing","i-lucide-land-plot",{"title":208,"icon":6,"path":209,"stem":210,"children":211,"page":6},"Special","\u002Fdocs\u002Flearn-and-explore\u002Fspecial","1.docs\u002F1.learn-and-explore\u002F1.special",[212],{"title":213,"path":214,"stem":215,"icon":216},"Special features","\u002Fdocs\u002Flearn-and-explore\u002Fspecial\u002Fspecial_features","1.docs\u002F1.learn-and-explore\u002F1.special\u002Fspecial_features","i-lucide-star",{"title":218,"icon":6,"path":219,"stem":220,"children":221,"page":6},"REST","\u002Fdocs\u002Flearn-and-explore\u002Frest","1.docs\u002F1.learn-and-explore\u002F2.REST",[222,227,232,237],{"title":223,"path":224,"stem":225,"icon":226},"REST-Clients for JOpt.TourOptimizer","\u002Fdocs\u002Flearn-and-explore\u002Frest\u002Frest_client_touroptimizer","1.docs\u002F1.learn-and-explore\u002F2.REST\u002F0.rest_client_touroptimizer","i-lucide-users",{"title":228,"path":229,"stem":230,"icon":231},"TourOptimizer REST Server","\u002Fdocs\u002Flearn-and-explore\u002Frest\u002Frest-server-touroptimizer","1.docs\u002F1.learn-and-explore\u002F2.REST\u002F1.rest-server-touroptimizer","i-lucide-server",{"title":233,"path":234,"stem":235,"icon":236},"Tutorial - Using Fire and Forget mode","\u002Fdocs\u002Flearn-and-explore\u002Frest\u002Ftouroptimizer-faf","1.docs\u002F1.learn-and-explore\u002F2.REST\u002F2.touroptimizer-faf","i-lucide-database",{"title":238,"path":239,"stem":240,"icon":241},"Tutorial - Job-Based Fire and Forget Mode","\u002Fdocs\u002Flearn-and-explore\u002Frest\u002Ftouroptimizer-job_faf","1.docs\u002F1.learn-and-explore\u002F2.REST\u002F3.touroptimizer-job_faf","i-lucide-briefcase",{"title":243,"icon":6,"path":244,"stem":245,"children":246,"page":6},"Base Examples","\u002Fdocs\u002Flearn-and-explore\u002Fbase-examples","1.docs\u002F1.learn-and-explore\u002F3.base-examples",[247,252,256,260,264,268,272,276,280,284],{"title":248,"path":249,"stem":250,"icon":251},"Basic Examples (Java) — JOpt TourOptimizer","\u002Fdocs\u002Flearn-and-explore\u002Fbase-examples\u002Freadme","1.docs\u002F1.learn-and-explore\u002F3.base-examples\u002F0. README","i-lucide-square-terminal",{"title":253,"path":254,"stem":255},"First Optimization — FirstOptimizationExample","\u002Fdocs\u002Flearn-and-explore\u002Fbase-examples\u002Ffirstoptimizationexample","1.docs\u002F1.learn-and-explore\u002F3.base-examples\u002F1. FirstOptimizationExample",{"title":257,"path":258,"stem":259},"Event Nodes — Non-Geographical Tasks in JOpt TourOptimizer","\u002Fdocs\u002Flearn-and-explore\u002Fbase-examples\u002Feventnode","1.docs\u002F1.learn-and-explore\u002F3.base-examples\u002FEventNode",{"title":261,"path":262,"stem":263},"Export to KML — Export2KMLExample","\u002Fdocs\u002Flearn-and-explore\u002Fbase-examples\u002Fexport2kmlexample","1.docs\u002F1.learn-and-explore\u002F3.base-examples\u002FExport2KMLExample",{"title":265,"path":266,"stem":267},"External Node Connection — Custom Distances and Driving Times","\u002Fdocs\u002Flearn-and-explore\u002Fbase-examples\u002Fexternalnodeconnection","1.docs\u002F1.learn-and-explore\u002F3.base-examples\u002FExternalNodeConnection",{"title":269,"path":270,"stem":271},"Load and Save Optimization Snapshots (JSON \u002F JSON.BZ2) — JOpt TourOptimizer (Java)","\u002Fdocs\u002Flearn-and-explore\u002Fbase-examples\u002Floadandsaveoptimization","1.docs\u002F1.learn-and-explore\u002F3.base-examples\u002FLoadAndSaveOptimization",{"title":273,"path":274,"stem":275},"Pillar Nodes (Captured Nodes) — Hard Constraints Fulfilled by Architecture","\u002Fdocs\u002Flearn-and-explore\u002Fbase-examples\u002Fpillar","1.docs\u002F1.learn-and-explore\u002F3.base-examples\u002FPillar",{"title":277,"path":278,"stem":279},"Read Out an Optimization Result — IOptimizationResult in Practice","\u002Fdocs\u002Flearn-and-explore\u002Fbase-examples\u002Freadoutresult","1.docs\u002F1.learn-and-explore\u002F3.base-examples\u002FReadOutResult",{"title":281,"path":282,"stem":283},"Recommended Implementation Patterns (Java) — JOpt TourOptimizer Examples","\u002Fdocs\u002Flearn-and-explore\u002Fbase-examples\u002Frecommendedimplementation","1.docs\u002F1.learn-and-explore\u002F3.base-examples\u002FRecommendedImplementation",{"title":285,"path":286,"stem":287},"Setting the JOpt License — setLicenseJSON(...) in Java","\u002Fdocs\u002Flearn-and-explore\u002Fbase-examples\u002Fsetlicense","1.docs\u002F1.learn-and-explore\u002F3.base-examples\u002FSetLicense",{"title":289,"path":290,"stem":291,"children":292,"page":6},"Advanced Examples","\u002Fdocs\u002Flearn-and-explore\u002Fadvanced-examples","1.docs\u002F1.learn-and-explore\u002F4.advanced-examples",[293,297,301,305,309,313,317,321,325,329,333,337,341,345,349,353,357,361,365,369,373,377,381,385,389,393,397,401,405,409,413,417],{"title":294,"path":295,"stem":296,"icon":251},"Advanced Examples (Java) — JOpt TourOptimizer","\u002Fdocs\u002Flearn-and-explore\u002Fadvanced-examples\u002Freadme","1.docs\u002F1.learn-and-explore\u002F4.advanced-examples\u002F2. README",{"title":298,"path":299,"stem":300},"Alternate Destination — AlternateDestinationExample","\u002Fdocs\u002Flearn-and-explore\u002Fadvanced-examples\u002Falternatedestinationexample","1.docs\u002F1.learn-and-explore\u002F4.advanced-examples\u002FAlternateDestinationExample",{"title":302,"path":303,"stem":304},"AutoFilter — Infeasibility Management by Excluding Violation-Prone Nodes","\u002Fdocs\u002Flearn-and-explore\u002Fadvanced-examples\u002Fautofilter","1.docs\u002F1.learn-and-explore\u002F4.advanced-examples\u002FAutoFilter",{"title":306,"path":307,"stem":308},"Binding and Excluding Resource Conditions (Mandatory\u002FPreferred vs. Banned\u002FUnPreferred)","\u002Fdocs\u002Flearn-and-explore\u002Fadvanced-examples\u002Fbindingexcludingresourcecondition","1.docs\u002F1.learn-and-explore\u002F4.advanced-examples\u002FBindingExcludingResourceCondition",{"title":310,"path":311,"stem":312},"BitTypeWithExpertiseCondition","\u002Fdocs\u002Flearn-and-explore\u002Fadvanced-examples\u002Fbittypewithexpertiseconditionandcostmodelexample","1.docs\u002F1.learn-and-explore\u002F4.advanced-examples\u002FBitTypeWithExpertiseConditionAndCostModelExample",{"title":314,"path":315,"stem":316},"Bridge & Tunnel Crossing Penalization with ZoneNumbers","\u002Fdocs\u002Flearn-and-explore\u002Fadvanced-examples\u002Fbridgetunnelcrossingzonenumberconstraint","1.docs\u002F1.learn-and-explore\u002F4.advanced-examples\u002FBridgeTunnelCrossingZoneNumberConstraint",{"title":318,"path":319,"stem":320},"Build an OptimizationConfig fluently and run it via the JSONOptimization engine","\u002Fdocs\u002Flearn-and-explore\u002Fadvanced-examples\u002Fbuilderpatternexample","1.docs\u002F1.learn-and-explore\u002F4.advanced-examples\u002FBuilderPatternExample",{"title":322,"path":323,"stem":324},"CO2-Emission Optimization — From Reporting to an Explicit Optimization Goal","\u002Fdocs\u002Flearn-and-explore\u002Fadvanced-examples\u002Fco2emissionoptimization","1.docs\u002F1.learn-and-explore\u002F4.advanced-examples\u002FCO2EmissionOptimization",{"title":326,"path":327,"stem":328},"CapacityCheck - Input plausibility: capacity check for working time vs required workload","\u002Fdocs\u002Flearn-and-explore\u002Fadvanced-examples\u002Fcapacitycheckexample","1.docs\u002F1.learn-and-explore\u002F4.advanced-examples\u002FCapacityCheckExample",{"title":330,"path":331,"stem":332},"Clustering During Construction — High-Quality Starting Solutions at Scale","\u002Fdocs\u002Flearn-and-explore\u002Fadvanced-examples\u002Fclustering","1.docs\u002F1.learn-and-explore\u002F4.advanced-examples\u002FClustering",{"title":334,"path":335,"stem":336},"ExtraInfo — Attaching Domain Metadata to Nodes and Resources","\u002Fdocs\u002Flearn-and-explore\u002Fadvanced-examples\u002Fextrainfo","1.docs\u002F1.learn-and-explore\u002F4.advanced-examples\u002FExtraInfo",{"title":338,"path":339,"stem":340},"First\u002FLast Node in Route — Softly Steering Route Anchors via Importance","\u002Fdocs\u002Flearn-and-explore\u002Fadvanced-examples\u002Ffirstlastnode","1.docs\u002F1.learn-and-explore\u002F4.advanced-examples\u002FFirstLastNode",{"title":342,"path":343,"stem":344},"IncludeVisitDuration — “Arrive Within OpeningHours” vs. “Finish Within OpeningHours”","\u002Fdocs\u002Flearn-and-explore\u002Fadvanced-examples\u002Fincludevisitduration","1.docs\u002F1.learn-and-explore\u002F4.advanced-examples\u002FIncludeVisitDuration",{"title":346,"path":347,"stem":348},"JointVisitDuration — Modeling “Co-located” Stops with Reduced Service Time","\u002Fdocs\u002Flearn-and-explore\u002Fadvanced-examples\u002Fjointvisitduration","1.docs\u002F1.learn-and-explore\u002F4.advanced-examples\u002FJointVisitDuration",{"title":350,"path":351,"stem":352},"Magnetic Condition - Node-Node Soft Condition","\u002Fdocs\u002Flearn-and-explore\u002Fadvanced-examples\u002Fmagneticsoftcondition","1.docs\u002F1.learn-and-explore\u002F4.advanced-examples\u002FMagneticSoftCondition",{"title":354,"path":355,"stem":356},"Open vs. Closed Route — Returning to Depot or Ending “Where It Makes Sense”","\u002Fdocs\u002Flearn-and-explore\u002Fadvanced-examples\u002Fopenclosedroute","1.docs\u002F1.learn-and-explore\u002F4.advanced-examples\u002FOpenClosedRoute",{"title":358,"path":359,"stem":360},"OpenLocationCode — Using Plus Codes Instead of Latitude\u002FLongitude","\u002Fdocs\u002Flearn-and-explore\u002Fadvanced-examples\u002Fopenlocationcode","1.docs\u002F1.learn-and-explore\u002F4.advanced-examples\u002FOpenLocationCode",{"title":362,"path":363,"stem":364},"OptimizationProgress — Controlling Progress Callbacks and Forcing Progress Snapshots","\u002Fdocs\u002Flearn-and-explore\u002Fadvanced-examples\u002Foptimizationprogress","1.docs\u002F1.learn-and-explore\u002F4.advanced-examples\u002FOptimizationProgress",{"title":366,"path":367,"stem":368},"OvernightStay — Allowing Multi-Day Routes With “Stay Out” Policies","\u002Fdocs\u002Flearn-and-explore\u002Fadvanced-examples\u002Fovernightstay","1.docs\u002F1.learn-and-explore\u002F4.advanced-examples\u002FOvernightStay",{"title":370,"path":371,"stem":372},"Pickup & Delivery (PND) in JOpt.TourOptimizer","\u002Fdocs\u002Flearn-and-explore\u002Fadvanced-examples\u002Fpnd","1.docs\u002F1.learn-and-explore\u002F4.advanced-examples\u002FPND",{"title":374,"path":375,"stem":376},"PerformanceMode — Faster Genetic Optimization With Reduced Operators","\u002Fdocs\u002Flearn-and-explore\u002Fadvanced-examples\u002Fperformancemode","1.docs\u002F1.learn-and-explore\u002F4.advanced-examples\u002FPerformanceMode",{"title":378,"path":379,"stem":380},"Read Out Full Progress — Structured KPIs During Optimization","\u002Fdocs\u002Flearn-and-explore\u002Fadvanced-examples\u002Freadoutfullprogress","1.docs\u002F1.learn-and-explore\u002F4.advanced-examples\u002FReadOutFullProgress",{"title":382,"path":383,"stem":384},"Relations — Coupling Nodes Across Routes, Resources, and Time","\u002Fdocs\u002Flearn-and-explore\u002Fadvanced-examples\u002Frelations","1.docs\u002F1.learn-and-explore\u002F4.advanced-examples\u002FRelations",{"title":386,"path":387,"stem":388},"RequestResult — Pulling an Intermediate Solution While Optimization Is Still Running","\u002Fdocs\u002Flearn-and-explore\u002Fadvanced-examples\u002Frequestresult","1.docs\u002F1.learn-and-explore\u002F4.advanced-examples\u002FRequestResult",{"title":390,"path":391,"stem":392},"Resource Connection Efficiency — Modeling “Fast” and “Slow” Vehicles via Travel-Time Scaling","\u002Fdocs\u002Flearn-and-explore\u002Fadvanced-examples\u002Fresourceconnectionefficiency","1.docs\u002F1.learn-and-explore\u002F4.advanced-examples\u002FResourceConnectionEfficiency",{"title":394,"path":395,"stem":396},"ResourceConstraintAliasId — Treating Multiple Resources as One Logical Unit in Constraints","\u002Fdocs\u002Flearn-and-explore\u002Fadvanced-examples\u002Fresourceconstraintaliasid","1.docs\u002F1.learn-and-explore\u002F4.advanced-examples\u002FResourceConstraintAliasId",{"title":398,"path":399,"stem":400},"ResourceType (Skills) — Hard\u002FSoft Matching, Expertise Levels, Cost Models, and High-Performance Bitsets","\u002Fdocs\u002Flearn-and-explore\u002Fadvanced-examples\u002Fresourcetype","1.docs\u002F1.learn-and-explore\u002F4.advanced-examples\u002FResourceType",{"title":402,"path":403,"stem":404},"Resource Visit Duration Efficiency — Modeling Faster (or Slower) Resources","\u002Fdocs\u002Flearn-and-explore\u002Fadvanced-examples\u002Fresourcevisitdurationefficiency","1.docs\u002F1.learn-and-explore\u002F4.advanced-examples\u002FResourceVisitDurationEfficiency",{"title":406,"path":407,"stem":408},"Return To Start (Return2Start) — Insert Mandatory Depot Returns Between Visits","\u002Fdocs\u002Flearn-and-explore\u002Fadvanced-examples\u002Freturnstart","1.docs\u002F1.learn-and-explore\u002F4.advanced-examples\u002FReturnStart",{"title":410,"path":411,"stem":412},"RunOptimizationInLoop — Stopping a Solver Stage After N Loops","\u002Fdocs\u002Flearn-and-explore\u002Fadvanced-examples\u002Frunoptimizationinloop","1.docs\u002F1.learn-and-explore\u002F4.advanced-examples\u002FRunOptimizationInLoop",{"title":414,"path":415,"stem":416},"Wait On Early Arrival (First Node) — Prevent “Working Before Shift Start” Only at Route Start","\u002Fdocs\u002Flearn-and-explore\u002Fadvanced-examples\u002Fwaitonearlyarrivalfirstnode","1.docs\u002F1.learn-and-explore\u002F4.advanced-examples\u002FWaitOnEarlyArrivalFirstNode",{"title":418,"path":419,"stem":420},"ZoneCodes — Defining Territories for Resources (and Why It Scales)","\u002Fdocs\u002Flearn-and-explore\u002Fadvanced-examples\u002Fzoneconde","1.docs\u002F1.learn-and-explore\u002F4.advanced-examples\u002FZoneConde",{"title":422,"path":423,"stem":424,"children":425,"page":6},"Expert Examples","\u002Fdocs\u002Flearn-and-explore\u002Fexpert-examples","1.docs\u002F1.learn-and-explore\u002F5.expert-examples",[426,430,434,438,442,446,450,454,458,462,466,470,474,478,482,486],{"title":427,"path":428,"stem":429,"icon":251},"Expert Examples (Java) — JOpt TourOptimizer","\u002Fdocs\u002Flearn-and-explore\u002Fexpert-examples\u002Freadme","1.docs\u002F1.learn-and-explore\u002F5.expert-examples\u002F3. README",{"title":431,"path":432,"stem":433},"Compare Result — The Optimization Solution Comparison Tool","\u002Fdocs\u002Flearn-and-explore\u002Fexpert-examples\u002Fcompareresult","1.docs\u002F1.learn-and-explore\u002F5.expert-examples\u002FCompareResult",{"title":435,"path":436,"stem":437},"Connection Store — Time-Dependent Driving Times (Traffic Profiles)","\u002Fdocs\u002Flearn-and-explore\u002Fexpert-examples\u002Fconenctionstore","1.docs\u002F1.learn-and-explore\u002F5.expert-examples\u002FConenctionStore",{"title":439,"path":440,"stem":441},"Create Custom Solution From JSON — Reconstructing a Warm Start from a Serialized Optimization","\u002Fdocs\u002Flearn-and-explore\u002Fexpert-examples\u002Fcreatecustomsolutionfromjson","1.docs\u002F1.learn-and-explore\u002F5.expert-examples\u002FCreateCustomSolutionFromJSON",{"title":443,"path":444,"stem":445},"Custom Cost Convergence — Stop Optimization When Your Metric Has Stabilized","\u002Fdocs\u002Flearn-and-explore\u002Fexpert-examples\u002Fcustomcostconvergence","1.docs\u002F1.learn-and-explore\u002F5.expert-examples\u002FCustomCostConvergence",{"title":447,"path":448,"stem":449},"Custom Node Backup Connector — Custom Distance\u002FTime Calculation for Missing Connections","\u002Fdocs\u002Flearn-and-explore\u002Fexpert-examples\u002Fcustomnodebackupconnector","1.docs\u002F1.learn-and-explore\u002F5.expert-examples\u002FCustomNodeBackUpConnector",{"title":451,"path":452,"stem":453},"Custom Solution — Architecture, Warm-Start Patterns, and Practical Integration","\u002Fdocs\u002Flearn-and-explore\u002Fexpert-examples\u002Fcustomsolution","1.docs\u002F1.learn-and-explore\u002F5.expert-examples\u002FCustomSolution",{"title":455,"path":456,"stem":457},"Extract Build Info — Diagnostics, Reproducibility, and Support-Ready Bug Reports","\u002Fdocs\u002Flearn-and-explore\u002Fexpert-examples\u002Fextractbuildinfo","1.docs\u002F1.learn-and-explore\u002F5.expert-examples\u002FExtractBuildInfo",{"title":459,"path":460,"stem":461},"FlexTime — Flexible Start Time (Positive and Negative)","\u002Fdocs\u002Flearn-and-explore\u002Fexpert-examples\u002Fflextime","1.docs\u002F1.learn-and-explore\u002F5.expert-examples\u002FFlextime",{"title":463,"path":464,"stem":465},"Open Assessor — Node-Level Customization (Custom Node-Level Restrictions)","\u002Fdocs\u002Flearn-and-explore\u002Fexpert-examples\u002Fopenassessornodelevel","1.docs\u002F1.learn-and-explore\u002F5.expert-examples\u002FOpenAssessorNodeLevel",{"title":467,"path":468,"stem":469},"Open Assessor — Route-Level Customization (Custom Route-Level Restrictions)","\u002Fdocs\u002Flearn-and-explore\u002Fexpert-examples\u002Fopenassessorroutelevel","1.docs\u002F1.learn-and-explore\u002F5.expert-examples\u002FOpenAssessorRouteLevel",{"title":471,"path":472,"stem":473},"Optimization Scheme — Algorithm Selection and Execution Pipeline","\u002Fdocs\u002Flearn-and-explore\u002Fexpert-examples\u002Foptimizationschemealgorithmselection","1.docs\u002F1.learn-and-explore\u002F5.expert-examples\u002FOptimizationSchemeAlgorithmSelection",{"title":475,"path":476,"stem":477},"Optimization Scheme — Custom Default Properties (Pipeline Defaults With Safe Overrides)","\u002Fdocs\u002Flearn-and-explore\u002Fexpert-examples\u002Foptimizationschemecustomdefaultproperties","1.docs\u002F1.learn-and-explore\u002F5.expert-examples\u002FOptimizationSchemeCustomDefaultProperties",{"title":479,"path":480,"stem":481},"Optional Nodes — Make “Stopovers” and Optional Tasks First-Class Citizens","\u002Fdocs\u002Flearn-and-explore\u002Fexpert-examples\u002Foptionalnode","1.docs\u002F1.learn-and-explore\u002F5.expert-examples\u002FOptionalNode",{"title":483,"path":484,"stem":485},"Read Out Default Properties — Discover, Audit, and Explain the Solver Configuration Surface","\u002Fdocs\u002Flearn-and-explore\u002Fexpert-examples\u002Freadoutdefaultproperties","1.docs\u002F1.learn-and-explore\u002F5.expert-examples\u002FReadOutDefaultProperties",{"title":487,"path":488,"stem":489},"Uncaught Exception Handling — Fail Fast, Fail Deterministically, and Still Return a Useful Signal","\u002Fdocs\u002Flearn-and-explore\u002Fexpert-examples\u002Funcaughtexceptionhandling","1.docs\u002F1.learn-and-explore\u002F5.expert-examples\u002FUncaughtExceptionHandling",{"title":491,"path":492,"stem":493,"children":494,"page":6},"Rest Examples","\u002Fdocs\u002Flearn-and-explore\u002Frest-examples","1.docs\u002F1.learn-and-explore\u002F6.rest-examples",[495,499,503],{"title":496,"path":497,"stem":498,"icon":251},"Rest Examples (Java) — JOpt TourOptimizer","\u002Fdocs\u002Flearn-and-explore\u002Frest-examples\u002Frest-examples-readme","1.docs\u002F1.learn-and-explore\u002F6.rest-examples\u002F0. rest-examples-readme",{"title":500,"path":501,"stem":502},"Creating REST TourOptimizer JSON Input from a Java Optimization — JOpt TourOptimizer","\u002Fdocs\u002Flearn-and-explore\u002Frest-examples\u002Fcreateresttouroptimizerinput","1.docs\u002F1.learn-and-explore\u002F6.rest-examples\u002FCreateRestTourOptimizerInput",{"title":504,"path":505,"stem":506},"Reading a REST JSON Config and Running It Locally — JOpt TourOptimizer","\u002Fdocs\u002Flearn-and-explore\u002Frest-examples\u002Freadrestjsonconfigandrun","1.docs\u002F1.learn-and-explore\u002F6.rest-examples\u002FReadRestJsonConfigAndRun",{"title":508,"icon":6,"path":509,"stem":510,"children":511,"page":6},"System Integration","\u002Fdocs\u002Fsystem-integration","1.docs\u002F2.system-integration",[512,522],{"title":513,"icon":6,"path":514,"stem":515,"children":516,"page":6},"System Architecture","\u002Fdocs\u002Fsystem-integration\u002Farchitecture","1.docs\u002F2.system-integration\u002F0.architecture",[517],{"title":518,"path":519,"stem":520,"icon":521},"System Architecture - JOpt platform","\u002Fdocs\u002Fsystem-integration\u002Farchitecture\u002Fsystem_architecture","1.docs\u002F2.system-integration\u002F0.architecture\u002Fsystem_architecture","i-lucide-network",{"title":523,"icon":6,"path":524,"stem":525,"children":526,"page":6},"Container Deployment","\u002Fdocs\u002Fsystem-integration\u002Fcontainerized-deployment","1.docs\u002F2.system-integration\u002F1.containerized-deployment",[527,531,535,539,544,548],{"title":528,"path":529,"stem":530,"icon":251},"Linux - JOpt TourOptimizer on Linux","\u002Fdocs\u002Fsystem-integration\u002Fcontainerized-deployment\u002Fjopt-container-linux","1.docs\u002F2.system-integration\u002F1.containerized-deployment\u002F1.jopt-container-linux",{"title":532,"path":533,"stem":534,"icon":216},"WSL\u002FWindows - Docker Installation","\u002Fdocs\u002Fsystem-integration\u002Fcontainerized-deployment\u002Fdocker-installation-win","1.docs\u002F2.system-integration\u002F1.containerized-deployment\u002F2.docker-installation-win",{"title":536,"path":537,"stem":538,"icon":37},"Windows - JOpt TourOptimizer on Windows Platforms","\u002Fdocs\u002Fsystem-integration\u002Fcontainerized-deployment\u002Fjopt-container-win","1.docs\u002F2.system-integration\u002F1.containerized-deployment\u002F2.jopt-container-win",{"title":540,"path":541,"stem":542,"icon":543},"macOS - JOpt TourOptimizer on Apple Platforms (macOS)","\u002Fdocs\u002Fsystem-integration\u002Fcontainerized-deployment\u002Fjopt-container-macos","1.docs\u002F2.system-integration\u002F1.containerized-deployment\u002F3.jopt-container-macos","i-lucide-apple",{"title":545,"path":546,"stem":547,"icon":231},"Kubernetes - JOpt TourOptimizer","\u002Fdocs\u002Fsystem-integration\u002Fcontainerized-deployment\u002Fkubertnetes","1.docs\u002F2.system-integration\u002F1.containerized-deployment\u002F4.kubertnetes",{"title":549,"path":550,"stem":551,"icon":552},"Terraform - Enterprise Deployment","\u002Fdocs\u002Fsystem-integration\u002Fcontainerized-deployment\u002Fterraform","1.docs\u002F2.system-integration\u002F1.containerized-deployment\u002F5.terraform","i-lucide-layers",{"data":554,"meta":839},[555,629,676,727,765,807],{"id":556,"documentId":557,"name":558,"website":559,"sortOrder":560,"isFeatured":561,"createdAt":562,"updatedAt":563,"publishedAt":564,"projectTitle":565,"industry":566,"highlights":567,"slug":568,"teaser":569,"description":593,"logo":594},43,"f96xw9x4orl8fu7komuuszhv","ServiceMax by PTC","https:\u002F\u002Fwww.ptc.com\u002Fde\u002Fproducts\u002Fservicemax",0,true,"2025-12-12T15:11:54.557Z","2025-12-18T01:42:50.240Z","2025-12-18T01:42:51.138Z","Optimax","FieldService",null,"service-max-by-ptc",[570,577,582],{"type":571,"level":572,"children":573},"heading",2,[574],{"bold":561,"text":575,"type":576},"Optimize schedules and resources","text",{"type":578,"children":579},"paragraph",[580],{"text":581,"type":576},"ServiceMax offers powerful scheduling software for service organizations. Dispatchers and planners must operate at peak productivity for optimal outcomes. They manage all activities throughout the asset lifecycle, but as assets and technicians increase with growth, the dispatcher workforce often expands more slowly. Supporting dispatchers is crucial. ServiceMax’s Service Board provides comprehensive tools to improve technician utilization, service efficiency, and customer experience.",{"type":578,"children":583},[584,586,592],{"text":585,"type":576},"",{"rel":585,"url":559,"type":587,"target":588,"children":589},"link","_blank",[590],{"text":591,"type":576},"www.ptc.com\u002Fde\u002Fproducts\u002Fservicemax",{"text":585,"type":576},"# Java-JOpt-TourOptimizer-Examples\n\n\n\u003Ca href=\"https:\u002F\u002Fdna-evolutions.com\u002F\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Fdocs.dna-evolutions.com\u002Findexres\u002Fdna-temp-logo.png\" width=\"110\"\ntitle=\"DNA-Evolutions\" alt=\"DNA-Evolutions\">\u003C\u002Fa>\n\nThis repository is part of our JOpt-TourOptimizer-Suite for Java. It includes an extensive collection of examples (written in Java). This fully functional Maven project can be cloned and used as a base for starting with JOpt-TourOptimizer. Further, a sandbox can be utilized (requiring a running Docker environment), lifting the challenge to set up an IDE.\n\n\n# Contact\n\nIf you need any help, please contact us via our company website \u003Ca href=\"https:\u002F\u002Fwww.dna-evolutions.com\" target=\"_blank\">www.dna-evolutions.com\u003C\u002Fa> or write an email to \u003Ca href=\"mailto:info@dna-evolutions.com\">info@dna-evolutions.com\u003C\u002Fa>.\n\n\n# **Outline**\n\n- [Introduction](#java-jopt-touroptimizer-examples) - Overview of the repository and its role in the JOpt-TourOptimizer-Suite.  \n- [Contact](#contact) - How to reach out for help or inquiries.  \n- [Architecture](#architecture) - Breakdown of the four major example categories (Basic, Advanced, Expert, RESTful).  \n- [Further Documentation and Links](#further-documentation-and-links) - Quick access to official documentation, JavaDocs, DockerHub, SourceForge, and more.  \n- [Short Introduction](#short-introduction) - Overview of JOpt and its capabilities in solving tour optimization problems.  \n- [Getting Started](#getting-started-with-the-examples) - Different ways to begin using JOpt-TourOptimizer examples.  \n- [Using the Sandbox](#use-our-sandbox-in-your-browser-docker-required) - Steps to set up and run the sandbox using Docker.  \n- [Cloning the Repository](#clone-this-repository) - Instructions for cloning and using the examples.  \n- [Downloading Dependencies](#download-the-jar-directly-or-as-dependency) - How to download the latest JOpt-TourOptimizer JAR or include it as a Maven dependency.  \n- [Legacy Support](#java-8-legacy-version) - Java 8 compatibility details and .NET legacy support.  \n- [Non-Maven Projects](#non-maven-projects) - Using JOpt with Gradle, SBT, IVY, and other build tools.  \n- [Prerequisites](#prerequisites) - System requirements for running JOpt-TourOptimizer.  \n- [License Agreement](#agreement) - Information on licensing and terms.  \n- [Authors](#authors) - DNA-Evolutions company information.  \n\n\n\n# Architecture\n\nThis Java project is subdivided into four major types of examples:\n\n1. \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FDNA-Evolutions\u002FJava-TourOptimizer-Examples\u002Ftree\u002Fmaster\u002Fsrc\u002Fmain\u002Fjava\u002Fcom\u002Fdna\u002Fjopt\u002Ftouroptimizer\u002Fjava\u002Fexamples\u002Fbasic\" target=\"_blank\">Basic Examples\u003C\u002Fa>\n2. \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FDNA-Evolutions\u002FJava-TourOptimizer-Examples\u002Ftree\u002Fmaster\u002Fsrc\u002Fmain\u002Fjava\u002Fcom\u002Fdna\u002Fjopt\u002Ftouroptimizer\u002Fjava\u002Fexamples\u002Fadvanced\" target=\"_blank\">Advanced Examples\u003C\u002Fa>\n3. \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FDNA-Evolutions\u002FJava-TourOptimizer-Examples\u002Ftree\u002Fmaster\u002Fsrc\u002Fmain\u002Fjava\u002Fcom\u002Fdna\u002Fjopt\u002Ftouroptimizer\u002Fjava\u002Fexamples\u002Fexpert\" target=\"_blank\">Expert Examples\u003C\u002Fa>\n4. \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FDNA-Evolutions\u002FJava-TourOptimizer-Examples\u002Ftree\u002Fmaster\u002Fsrc\u002Fmain\u002Fjava\u002Fcom\u002Fdna\u002Fjopt\u002Ftouroptimizer\u002Fjava\u002Fexamples\u002Frestful\" target=\"_blank\">RESTful Examples\u003C\u002Fa>\n\nEach of the example-sections has its own README. \n\n\n# Further Documentation and Links\n\n- Our website - \u003Ca href=\"https:\u002F\u002Fwww.dna-evolutions.com\" target=\"_blank\">www.dna-evolutions.com\u003C\u002Fa>\n- Further documentation \t- \u003Ca href=\"https:\u002F\u002Fdocs.dna-evolutions.com\" target=\"_blank\">docs.dna-evolutions.com\u003C\u002Fa>\n- Special features \t- \u003Ca href=\"https:\u002F\u002Fdocs.dna-evolutions.com\u002Foverview_docs\u002Fspecial_features\u002FSpecial_Features.html\" target=\"_blank\">Overview of special features\u003C\u002Fa>\n- Our official repository \t- \u003Ca href=\"https:\u002F\u002Fpublic.repo.dna-evolutions.com\" target=\"_blank\">public.repo.dna-evolutions.com\u003C\u002Fa>\n- Our official JavaDocs \t\t- \u003Ca href=\"https:\u002F\u002Fpublic.javadoc.dna-evolutions.com\" target=\"_blank\">public.javadoc.dna-evolutions.com\u003C\u002Fa>\n- Our YouTube channel - \u003Ca href=\"https:\u002F\u002Fwww.youtube.com\u002Fchannel\u002FUCzfZjJLp5Rrk7U2UKsOf8Fw\" target=\"_blank\">DNA Tutorials\u003C\u002Fa>\n- Documentation - \u003Ca href=\"https:\u002F\u002Fdocs.dna-evolutions.com\u002Frest\u002Ftouroptimizer\u002Frest_touroptimizer.html\" target=\"_blank\">DNA's RESTful Spring-TourOptimizer in Docker \u003C\u002Fa>\n- Our DockerHub channel - \u003Ca href=\"https:\u002F\u002Fhub.docker.com\u002Fu\u002Fdnaevolutions\" target=\"_blank\">DNA DockerHub\u003C\u002Fa>\n- Our LinkedIn channel - \u003Ca href=\"https:\u002F\u002Fwww.linkedin.com\u002Fcompany\u002Fdna-evolutions\u002F\" target=\"_blank\">DNA LinkedIn\u003C\u002Fa>\n- Our Sourceforge channel - \u003Ca href=\"https:\u002F\u002Fsourceforge.net\u002Fsoftware\u002Fproduct\u002FJOpt.TourOptimizer\u002F?pk_campaign=badge&amp;pk_source=vendor\" target=\"_blank\">DNA SourceForge\u003C\u002Fa>\n\nThe release notes of this repository\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FDNA-Evolutions\u002FJava-TourOptimizer-Examples\u002Fblob\u002Fmaster\u002FRELEASE_NOTES.md\" target=\"_blank\">RELEASE_NOTES.md\u003C\u002Fa>.\n\nThe changelog of this repository and the underlying JOpt library is available in \n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FDNA-Evolutions\u002FJava-TourOptimizer-Examples\u002Fblob\u002Fmaster\u002FCHANGELOG.md\" target=\"_blank\">CHANGELOG.md\u003C\u002Fa>.\n\nThe FAQ of this repository is available in \n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FDNA-Evolutions\u002FJava-TourOptimizer-Examples\u002Fblob\u002Fmaster\u002FFAQ.md\" target=\"_blank\">FAQ.md\u003C\u002Fa>.\n\nOverview of available sandboxes is available in \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FDNA-Evolutions\u002FDocker-REST-TourOptimizer\u002Fblob\u002Fmain\u002FSandboxes.md\" target=\"_blank\">Sandboxes.md\u003C\u002Fa>.\n\n\n\u003Ca href=\"https:\u002F\u002Fsourceforge.net\u002Fsoftware\u002Fproduct\u002FJOpt.TourOptimizer\u002F?pk_campaign=badge&amp;pk_source=vendor\" target=\"_blank\" rel=\"nofollow\">\n\t\t\u003Cimg alt=\"Partner 2025\" src=\"https:\u002F\u002Fsourceforge.net\u002Fcdn\u002Fsyndication\u002Fbadge_img\u002F3636727\u002Flight-partner\" height=\"120px\" width=\"120px;\">\u003C\u002Fa>\n\n\n# Short Introduction\nJOpt is a flexible routing optimization-engine written in Java, allowing to solve tour-optimization problems that are highly restricted, for example, regarding time windows, skills, and even mandatory constraints can be applied.\n\nClick, to open video:\n\n\u003Ca href=\"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=U4mDQGnZGZs\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Fdna-evolutions.com\u002Fwp-content\u002Fuploads\u002F2022\u002F10\u002Fjopt_intro_prev.gif\" width=\"600\"\ntitle=\"Introduction Video for DNA's JOpt\" alt=\"Introduction Video for DNA's JOpt\">\u003C\u002Fa>\n\n## Getting Started with the Examples\n\nYou can start using our example in different ways.\n\n* [Use our sandbox in your browser (Docker required)](#use-our-sandbox-in-your-browser-docker-required)\n* [Clone this repository](#clone-this-repository)\n* [Download the Jar directly or as Dependency](#download-the-jar-directly-or-as-dependency)\n* [Download our .NET legacy version](#download-our-net-legacy-version)\n\n## Use our sandbox in your browser (Docker required)\n\nIf you need help setting up docker, you can follow the [official installation guide](https:\u002F\u002Fdocs.docker.com\u002Fget-docker\u002F).\n\nIn case you want to get started without the hassle of installing Java, Maven and an IDE, we provide a sandbox. The sandbox is based on  [code-server](https:\u002F\u002Fgithub.com\u002Fcdr\u002Fcode-server) and can be used inside your browser, the interface itself is based on Visual Code. The sandbox is available via DockerHub ([here](https:\u002F\u002Fhub.docker.com\u002Fr\u002Fdnaevolutions\u002Fjopt_example_server)). You have to host the sandbox in your Docker environment (Please provide at least 2-4Gb of Ram and 2 Cores). You can pull the sandbox from our DockerHub account (The Dockerfile for creating the sandbox is included in this repository). The latest version of our examples is cloned by default on launching the Docker container, and you can start testing JOpt right away.\n\nPreview (click to enlarge):\n\n\u003Ca href=\"https:\u002F\u002Fdocs.dna-evolutions.com\u002Findexres\u002Fcoderserver.png\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Fdocs.dna-evolutions.com\u002Findexres\u002Fcoderserver.png\" width=\"85%\"\ntitle=\"Preview of JOpt-Example-Server\">\u003C\u002Fa>\n\n### Starting the sandbox and persist your changes\nYou must mount a volume to which the examples of this project are downloaded on the container's startup. After re-launching the container, the latest version of our examples is only cloned if the folder is not already existing, keeping your files safe from being overridden.\n\nLaunching a sanbox and mount your current directory ('$PWD') or any other directory you want:\n\n```\ndocker run -it -d --name jopt-examples -p 127.0.0.1:8042:8080 -v \"$PWD\u002F:\u002Fhome\u002Fcoder\u002Fproject\" dnaevolutions\u002Fjopt_example_server:latest\n```\n\n### Using the sandbox\n\nAfter starting the container, you can open [http:\u002F\u002Flocalhost:8042\u002F](http:\u002F\u002Flocalhost:8042) with your browser and login with the password:\n\n```\njopt\n```\n\nDuring the run of your first example file, some dependencies are downloaded, and it will take some time (below 1 minute depending on your internet connection). In case you need help, contact us.\n\nPlease visit our **[tutorial video](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=Jk9ONloaNlk)** (approx. 3 minutes duration) hosted on YouTube on how to use our sandbox.\n\n## Clone this repository\nClone this repository, import it as Maven project in your IDE and start any example.\n\n## Download the Jar directly or as Dependency\nThe latest native java library of JOpt-TourOptimizer can be either downloaded via our official\n\u003Ca href=\"https:\u002F\u002Fpublic.repo.dna-evolutions.com\u002F#browse\u002Fbrowse:maven-releases\" target=\"_blank\">nexus repository\u003C\u002Fa>, from our \u003Ca href=\"https:\u002F\u002Fwww.dna-evolutions.com\u002F\" target=\"_blank\">company website\u003C\u002Fa> or as a a direct download from here (always links the latest release):\n\n- \u003Ca href=\"https:\u002F\u002Fpublic.repo.dna-evolutions.com\u002Fservice\u002Frest\u002Fv1\u002Fsearch\u002Fassets\u002Fdownload?sort=version&repository=maven-releases&group=jopt&maven.artifactId=jopt.core.pg&maven.extension=jar&maven.classifier=shaded\" target=\"_blank\">Shaded jar\u003C\u002Fa>\n- \u003Ca href=\"https:\u002F\u002Fpublic.repo.dna-evolutions.com\u002Fservice\u002Frest\u002Fv1\u002Fsearch\u002Fassets\u002Fdownload?sort=version&repository=maven-releases&group=jopt&maven.artifactId=jopt.core.pg&maven.extension=jar&maven.classifier=javadoc\" target=\"_blank\">Javadoc jar\u003C\u002Fa>\n\n### As Dependency (Recommended)\nHowever, it is recommended to use our nexus-endpoint as a repository and download the jars as a dependency into your project. You can also search for older versions of JOpt in our \u003Ca href=\"https:\u002F\u002Fpublic.repo.dna-evolutions.com\u002F#browse\u002Fbrowse:maven-releases\" target=\"_blank\">nexus repository\u003C\u002Fa>.\n\n### Snippet for Maven\n\n**We are recommending always using the latest version of JOpt.**\n\n**Major Changes (version 7.5.1+):**\n- **Java Version Upgrade**: Our core library has been moved from Java 8 to Java 17. Version 7.5.2 will be the **last version we guarantee to include a Java 8 compatible version** along with a corresponding legacy **dll** version. \n\nFuture updates will require users who are still on Java 8 or prefer to use dll to switch to our JOpt.TourOptimizer, which is a Spring Application with a Swagger interface. This allows for building clients in a desired language and version.\n\nFor adding the JOpt dependency to your ``pom.xml`` you can use the following snippet (for help on how to set dependencies, please visit the \u003Ca href=\"https:\u002F\u002Fmaven.apache.org\u002Fguides\u002Fintroduction\u002Fintroduction-to-dependency-mechanism.html\" target=\"_blank\">official Maven documentation\u003C\u002Fa>):\n\n\n```xml\n\u003Cdependency>\n  \u003CgroupId>jopt\u003C\u002FgroupId>\n  \u003CartifactId>jopt.core.pg\u003C\u002FartifactId>\n   \u003Cversion>7.5.2-j17\u003C\u002Fversion>\n  \u003Cclassifier>shaded\u003C\u002Fclassifier>\n\u003C\u002Fdependency>\n```\n\nor latest\n\n```xml\n\u003Cdependency>\n  \u003CgroupId>jopt\u003C\u002FgroupId>\n  \u003CartifactId>jopt.core.pg\u003C\u002FartifactId>\n   \u003Cversion>7.5.2-rc1-j17\u003C\u002Fversion>\n  \u003Cclassifier>shaded\u003C\u002Fclassifier>\n\u003C\u002Fdependency>\n```\n \n\n**We are recommending always using the latest version of JOpt (rc) (if present).**\n\n### JavaDocs\n\nIn case you want to add our JavaDocs to your project, further add the following dependency:\n\n```xml\n\u003Cdependency>\n  \u003CgroupId>jopt\u003C\u002FgroupId>\n  \u003CartifactId>jopt.core.pg\u003C\u002FartifactId>\n  \u003Cversion>7.5.2-j17\u003C\u002Fversion>\n  \u003Cclassifier>javadoc\u003C\u002Fclassifier>\n\u003C\u002Fdependency>\n```\n\nor latest\n\n```xml\n\u003Cdependency>\n  \u003CgroupId>jopt\u003C\u002FgroupId>\n  \u003CartifactId>jopt.core.pg\u003C\u002FartifactId>\n   \u003Cversion>7.5.2-rc1-j17\u003C\u002Fversion>\n  \u003Cclassifier>javadoc\u003C\u002Fclassifier>\n\u003C\u002Fdependency>\n```\n\n(The latest JavaDocs version is also available online as a \u003Ca href=\"https:\u002F\u002Fpublic.javadoc.dna-evolutions.com\u002F\" target=\"_blank\">browsable page\u003C\u002Fa>.)\n\n### Repository\n\nIn addition, it is mandatory to add our nexus-server as a repository source (for help, please visit the \u003Ca href=\"https:\u002F\u002Fmaven.apache.org\u002Fguides\u002Fintroduction\u002Fintroduction-to-repositories.html\" target=\"_blank\">official Maven documentation\u003C\u002Fa>).\n\nIn your ``pom.xml`` add the following repository:\n\n```xml\n\u003Crepository>\n\t\u003Cid>jopt4-maven\u003C\u002Fid>\n\t\u003Curl>https:\u002F\u002Fpublic.repo.dna-evolutions.com\u002Frepository\u002Fmaven-public\u002F\u003C\u002Furl>\n\t\u003Creleases>\n\t\t\u003Cenabled>true\u003C\u002Fenabled>\n\t\u003C\u002Freleases>\n\t\u003Csnapshots>\n\t\t\u003Cenabled>true\u003C\u002Fenabled>\n\t\u003C\u002Fsnapshots>\n\u003C\u002Frepository>\n```\n\n\u003Cbr>\n\n## Java 8 legacy version\n\nVersion 7.5.2 will be the **last version to include a Java 8 compatible version** along with a corresponding legacy dll version. Future updates will require users who are still on Java 8 or prefer to use dll to switch to our JOpt.TourOptimizer, which is a Spring Application with a Swagger interface. This allows for building clients in a desired language and version.\n\n```xml\n\u003Cdependency>\n  \u003CgroupId>jopt\u003C\u002FgroupId>\n  \u003CartifactId>jopt.core.pg\u003C\u002FartifactId>\n  \u003Cversion>7.5.2-j8\u003C\u002Fversion>\n  \u003Cclassifier>shaded\u003C\u002Fclassifier>\n\u003C\u002Fdependency>\n```\n\n\nand docs:\n\n```xml\n\u003Cdependency>\n  \u003CgroupId>jopt\u003C\u002FgroupId>\n  \u003CartifactId>jopt.core.pg\u003C\u002FartifactId>\n  \u003Cversion>7.5.2-j8\u003C\u002Fversion>\n  \u003Cclassifier>javadoc\u003C\u002Fclassifier>\n\u003C\u002Fdependency>\n```\n\n## Download our .NET legacy version\n\nWe still support a legacy .NET version of JOpt. We utilize \u003Ca href=\"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FIKVM.NET\" target=\"_blank\">IKVM.NET\u003C\u002Fa> that is effectively a Java framework running on top of the .NET's framework.\n\nRelease dll (archived as zip) as download (7.5.2-legacy):\n- \u003Ca href=\"https:\u002F\u002Fshared.dna-evolutions.com\u002Flegacy\u002Fnet\u002Fjopt.core-7.5.2-SNAPSHOT-with-dep-pg-legacy\u002Fjopt.core-7.5.2-SNAPSHOT-with-dep-pg-legacy.zip\" target=\"_blank\">JOpt .Net - 7.5.2\u003C\u002Fa>\n\n\nThe IKVM.NET framework as download:\n- \u003Ca href=\"https:\u002F\u002Fshared.dna-evolutions.com\u002Flegacy\u002Fnet\u002Fikvm_env\u002Fikvm-8.1.5717.0.zip\" target=\"_blank\">IKVM.NET Framework\u003C\u002Fa>\n\n### Older versions:\n\nRelease dll (archived as zip) as download (7.5.1-legacy):\n- \u003Ca href=\"https:\u002F\u002Fshared.dna-evolutions.com\u002Flegacy\u002Fnet\u002Fjopt.core-7.5.1-SNAPSHOT-with-dep-pg-legacy\u002Fjopt.core-7.5.1-SNAPSHOT-with-dep-pg-legacy.zip\" target=\"_blank\">JOpt .Net - 7.5.1\u003C\u002Fa>\n\nRelease dll (archived as zip) as download (7.5.0-legacy):\n- \u003Ca href=\"https:\u002F\u002Fshared.dna-evolutions.com\u002Flegacy\u002Fnet\u002Fjopt.core-7.5.0-SNAPSHOT-with-dep-pg-legacy\u002Fjopt.core-7.5.0-SNAPSHOT-with-dep-pg-legacy.zip\" target=\"_blank\">JOpt .Net - 7.5.0\u003C\u002Fa>\n\nRelease candidate dll (archived as zip) as download (7.4.9-rc4-legacy):\n- \u003Ca href=\"https:\u002F\u002Fshared.dna-evolutions.com\u002Flegacy\u002Fnet\u002Fjopt.core-7.4.9-rc4-SNAPSHOT-with-dep-pg-legacy\u002Fjopt.core-7.4.9-rc4-SNAPSHOT-with-dep-pg-legacy.zip\" target=\"_blank\">JOpt .Net - 7.4.9-rc4-SNAPSHOT\u003C\u002Fa>\n\nRelease candidate dll (archived as zip) as download (7.4.9-rc2-legacy):\n- \u003Ca href=\"https:\u002F\u002Fshared.dna-evolutions.com\u002Flegacy\u002Fnet\u002Fjopt.core-7.4.9-rc2-SNAPSHOT-with-dep-pg-legacy\u002Fjopt.core-7.4.9-rc2-SNAPSHOT-with-dep-pg-legacy.zip\" target=\"_blank\">JOpt .Net - 7.4.9-rc2-SNAPSHOT\u003C\u002Fa>\n\n\nRelease dll (archived as zip) as download (7.4.8-legacy):\n- \u003Ca href=\"https:\u002F\u002Fshared.dna-evolutions.com\u002Flegacy\u002Fnet\u002Fjopt.core-7.4.8-with-dep-pg-legacy\u002Fjopt.core-7.4.8-with-dep-pg-legacy.zip\" target=\"_blank\">JOpt .Net - 7.4.8\u003C\u002Fa>\n\nRelease dll (archived as zip) as download (7.4.6-legacy):\n- \u003Ca href=\"https:\u002F\u002Fshared.dna-evolutions.com\u002Flegacy\u002Fnet\u002Fjopt.core.pg-7.4.6-shaded\u002Fjopt.core.pg-7.4.6-shaded.zip\" target=\"_blank\">JOpt .Net - 7.4.6\u003C\u002Fa>\n\n\n## Non-Maven projects\n\nIn case you use *Gradle*, *SBT*, *IVY*, *Grape*, *Leiningen*, *Builder*, or others, you can browse our \u003Ca href=\"https:\u002F\u002Fpublic.repo.dna-evolutions.com\u002F#browse\u002Fbrowse:maven-releases\" target=\"_blank\">nexus-repository\u003C\u002Fa>, select the desired dependency, and look out for the Usage container. Alternatively, you can use an online conversion tool to convert the Maven dependency into your desired format. Please keep in mind that you will have to add our repository in any case.\n\n\n## Prerequisites\n\n* In your IDE as native Java dependency: Install at least Java 17 and Maven\n* In our sandbox: Working Docker environment\n* Till and including version 7.5.1: Legacy verion Java 8\n* In your IDE as .NET legacy version: IKVM libraries imported in your project and a working .NET 4.X Framework.\n\n---\n\n## Agreement\nFor reading our license agreement and for further information about license plans, please visit \u003Ca href=\"https:\u002F\u002Fwww.dna-evolutions.com\" target=\"_blank\">www.dna-evolutions.com\u003C\u002Fa>.\n\n--- \n\n## Authors\nA product by [dna-evolutions ](https:\u002F\u002Fwww.dna-evolutions.com)&copy;",{"id":572,"documentId":595,"name":596,"alternativeText":597,"caption":558,"width":598,"height":598,"formats":599,"hash":623,"ext":601,"mime":604,"size":624,"url":625,"previewUrl":567,"provider":626,"provider_metadata":567,"createdAt":627,"updatedAt":628,"publishedAt":627},"snyr2a6rahvyumh3t3i482e2","ptc-servicemax.webp","ServiceMax by PTC logo",800,{"small":600,"medium":609,"thumbnail":616},{"ext":601,"url":602,"hash":603,"mime":604,"name":605,"path":567,"size":606,"width":607,"height":607,"sizeInBytes":608},".webp","\u002Fuploads\u002Fsmall_ptc_servicemax_e58a6878c7.webp","small_ptc_servicemax_e58a6878c7","image\u002Fwebp","small_ptc-servicemax.webp",12.62,500,12622,{"ext":601,"url":610,"hash":611,"mime":604,"name":612,"path":567,"size":613,"width":614,"height":614,"sizeInBytes":615},"\u002Fuploads\u002Fmedium_ptc_servicemax_e58a6878c7.webp","medium_ptc_servicemax_e58a6878c7","medium_ptc-servicemax.webp",17.72,750,17718,{"ext":601,"url":617,"hash":618,"mime":604,"name":619,"path":567,"size":620,"width":621,"height":621,"sizeInBytes":622},"\u002Fuploads\u002Fthumbnail_ptc_servicemax_e58a6878c7.webp","thumbnail_ptc_servicemax_e58a6878c7","thumbnail_ptc-servicemax.webp",4.13,156,4130,"ptc_servicemax_e58a6878c7",20.91,"\u002Fuploads\u002Fptc_servicemax_e58a6878c7.webp","local","2025-12-12T15:11:23.198Z","2025-12-13T00:16:23.027Z",{"id":630,"documentId":631,"name":632,"website":633,"sortOrder":634,"isFeatured":561,"createdAt":635,"updatedAt":636,"publishedAt":637,"projectTitle":567,"industry":638,"highlights":567,"slug":639,"teaser":640,"description":661,"logo":662},42,"wlfal0g4a2f1vhal4rk61q1w","CAMS Software by Kaleris","https:\u002F\u002Fkaleris.com\u002F",1,"2025-12-12T17:57:47.210Z","2025-12-18T01:41:50.412Z","2025-12-18T01:41:51.311Z","PND","cams-software-by-kaleris",[641,645,649,653],{"type":571,"level":634,"children":642},[643],{"bold":561,"text":644,"type":576},"Used by Supply Chain Professionals Worldwide",{"type":578,"children":646},[647],{"text":648,"type":576},"In today’s tightly orchestrated supply chain environment, the smallest delay or disruption quickly turns into bottlenecks, inefficiencies, and unplanned costs with significant downstream impacts on your business and your commitment to your customers. At the heart of what we do, our software helps you control and optimize critical supply chain workflows, and gives you access to real-time data so you can make decisions with confidence.",{"type":578,"children":650},[651],{"text":652,"type":576},"Hundreds of the largest organizations in the world rely on Kaleris software solutions to gain real-time visibility and powerful execution tools to automate and optimize the movement of goods through the supply chain.",{"type":578,"children":654},[655,656,660],{"text":585,"type":576},{"rel":585,"url":633,"type":587,"target":588,"children":657},[658],{"text":659,"type":576},"https:\u002F\u002Fkaleris.com",{"text":585,"type":576},"# Used by Supply Chain Professionals Worldwide\n\nIn today’s tightly orchestrated supply chain environment, the smallest delay or disruption quickly turns into bottlenecks, inefficiencies, and unplanned costs with significant downstream impacts on your business and your commitment to your customers. At the heart of what we do, our software helps you control and optimize critical supply chain workflows, and gives you access to real-time data so you can make decisions with confidence.\n\nHundreds of the largest organizations in the world rely on Kaleris software solutions to gain real-time visibility and powerful execution tools to automate and optimize the movement of goods through the supply chain.\n\n\nhttps:\u002F\u002Fkaleris.com\n\n",{"id":663,"documentId":664,"name":665,"alternativeText":666,"caption":666,"width":667,"height":668,"formats":567,"hash":669,"ext":670,"mime":671,"size":672,"url":673,"previewUrl":567,"provider":626,"provider_metadata":567,"createdAt":674,"updatedAt":675,"publishedAt":674},3,"hqqyf0a5as23imlzurxvmn9x","kaleris_logo.svg","Kaleris CAMS Logo",227,56,"kaleris_logo_81739d724b",".svg","image\u002Fsvg+xml",7.09,"\u002Fuploads\u002Fkaleris_logo_81739d724b.svg","2025-12-12T17:57:27.427Z","2025-12-12T17:57:44.600Z",{"id":677,"documentId":678,"name":679,"website":680,"sortOrder":572,"isFeatured":561,"createdAt":681,"updatedAt":682,"publishedAt":683,"projectTitle":567,"industry":567,"highlights":567,"slug":684,"teaser":685,"description":689,"logo":690},79,"gsjhur1h70n6q9dczlmtqrbo","PTC","https:\u002F\u002Fwww.ptc.com\u002F","2025-12-18T13:33:29.636Z","2025-12-18T13:33:54.105Z","2025-12-18T13:33:55.005Z","ptc",[686],{"type":578,"children":687},[688],{"text":689,"type":576},"PTC Inc. is a global software company founded in 1985 and headquartered in Boston, Massachusetts, specializing in solutions that support digital transformation for product-centric businesses. The company develops and delivers a broad portfolio of industrial software, including computer-aided design (CAD), product lifecycle management (PLM), service lifecycle management (SLM), Internet of Things (IoT), and augmented reality (AR) platforms that help companies design, manufacture, operate, and service complex products. PTC’s technology enables enterprises to unify data and processes across the entire product lifecycle, improve operational efficiency, and accelerate innovation. Its solutions serve manufacturers and engineering organizations worldwide, including many Fortune 500 companies.",{"id":691,"documentId":692,"name":693,"alternativeText":567,"caption":567,"width":694,"height":695,"formats":696,"hash":721,"ext":698,"mime":701,"size":722,"url":723,"previewUrl":567,"provider":626,"provider_metadata":567,"createdAt":724,"updatedAt":725,"publishedAt":726},21,"fhptl8778xfw53uuxbusgurm","ptc_logo_Logo.jpg",900,450,{"small":697,"medium":706,"thumbnail":713},{"ext":698,"url":699,"hash":700,"mime":701,"name":702,"path":567,"size":703,"width":607,"height":704,"sizeInBytes":705},".jpg","\u002Fuploads\u002Fsmall_ptc_logo_Logo_2692ba8cd7.jpg","small_ptc_logo_Logo_2692ba8cd7","image\u002Fjpeg","small_ptc_logo_Logo.jpg",10.8,250,10804,{"ext":698,"url":707,"hash":708,"mime":701,"name":709,"path":567,"size":710,"width":614,"height":711,"sizeInBytes":712},"\u002Fuploads\u002Fmedium_ptc_logo_Logo_2692ba8cd7.jpg","medium_ptc_logo_Logo_2692ba8cd7","medium_ptc_logo_Logo.jpg",16.86,375,16865,{"ext":698,"url":714,"hash":715,"mime":701,"name":716,"path":567,"size":717,"width":718,"height":719,"sizeInBytes":720},"\u002Fuploads\u002Fthumbnail_ptc_logo_Logo_2692ba8cd7.jpg","thumbnail_ptc_logo_Logo_2692ba8cd7","thumbnail_ptc_logo_Logo.jpg",4.93,245,122,4928,"ptc_logo_Logo_2692ba8cd7",20.8,"\u002Fuploads\u002Fptc_logo_Logo_2692ba8cd7.jpg","2025-12-18T13:32:52.306Z","2025-12-18T13:33:15.076Z","2025-12-18T13:32:52.307Z",{"id":728,"documentId":729,"name":730,"website":731,"sortOrder":663,"isFeatured":561,"createdAt":732,"updatedAt":733,"publishedAt":734,"projectTitle":567,"industry":735,"highlights":567,"slug":736,"teaser":737,"description":567,"logo":746},84,"ht5wtvetfaaak58b5yjcv0z1","Univerus","https:\u002F\u002Fwww.univerusassets.com\u002F","2025-12-18T01:35:20.482Z","2026-02-24T10:46:18.175Z","2026-02-24T10:46:19.075Z","Field","univerus",[738,742],{"type":578,"children":739},[740],{"text":741,"type":576},"Founded in 2019, Univerus is a global software company headquartered in Burnaby, British Columbia, Canada. With over 360 employees and 3,500 clients worldwide, Univerus has expanded its presence across Canada, the United States, Australia, and New Zealand.",{"type":578,"children":743},[744],{"text":745,"type":576},"Univerus Assets is a fully cloud-based asset management platform trusted by over 40 councils in New Zealand, 24 in Australia, and growing across North America. It helps municipalities and utilities visualize, plan, and maintain their community assets in one secure, integrated system.",{"id":747,"documentId":748,"name":749,"alternativeText":567,"caption":567,"width":750,"height":751,"formats":752,"hash":762,"ext":754,"mime":757,"size":717,"url":763,"previewUrl":567,"provider":626,"provider_metadata":567,"createdAt":764,"updatedAt":764,"publishedAt":764},6,"myvfvf9ebi6555fl7yrol08k","universus-logo-300x296.png",300,296,{"thumbnail":753},{"ext":754,"url":755,"hash":756,"mime":757,"name":758,"path":567,"size":759,"width":760,"height":621,"sizeInBytes":761},".png","\u002Fuploads\u002Fthumbnail_universus_logo_300x296_0d6e830c12.png","thumbnail_universus_logo_300x296_0d6e830c12","image\u002Fpng","thumbnail_universus-logo-300x296.png",9.69,158,9687,"universus_logo_300x296_0d6e830c12","\u002Fuploads\u002Funiversus_logo_300x296_0d6e830c12.png","2025-12-18T01:36:38.831Z",{"id":766,"documentId":767,"name":768,"website":769,"sortOrder":770,"isFeatured":561,"createdAt":771,"updatedAt":772,"publishedAt":773,"projectTitle":567,"industry":774,"highlights":567,"slug":775,"teaser":776,"description":781,"logo":782},83,"hwmpycgo6key45utrze6fza1","OfficeTrack","https:\u002F\u002Fofficetrack.com\u002F",5,"2025-12-18T01:46:04.223Z","2026-02-24T10:45:44.836Z","2026-02-24T10:45:45.746Z","Logistics","office-track",[777],{"type":578,"children":778},[779],{"text":780,"type":576},"OfficeTrack is a modular platform that allows the efficient management of various administrative processes, through the use of a mobile application installed on cell phones and\u002For tablets, and a Web application, which can be accessed by operators from the company’s operational bases, allowing an efficient and orderly flow of information between the different actors: employees, contractors, suppliers and end users.","# OfficeTrack Software\n\nOfficeTrack is a modular platform that allows the efficient management of various administrative processes, through the use of a mobile application installed on cell phones and\u002For tablets, and a Web application, which can be accessed by operators from the company’s operational bases, allowing an efficient and orderly flow of information between the different actors: employees, contractors, suppliers and end users.",{"id":783,"documentId":784,"name":785,"alternativeText":567,"caption":567,"width":786,"height":787,"formats":788,"hash":803,"ext":754,"mime":757,"size":804,"url":805,"previewUrl":567,"provider":626,"provider_metadata":567,"createdAt":806,"updatedAt":806,"publishedAt":806},7,"a8x2kf31dvguk5otagrgtfly","Logo-App-Officetrack-crop.png",581,125,{"small":789,"thumbnail":796},{"ext":754,"url":790,"hash":791,"mime":757,"name":792,"path":567,"size":793,"width":607,"height":794,"sizeInBytes":795},"\u002Fuploads\u002Fsmall_Logo_App_Officetrack_crop_38add12ca9.png","small_Logo_App_Officetrack_crop_38add12ca9","small_Logo-App-Officetrack-crop.png",19.58,108,19575,{"ext":754,"url":797,"hash":798,"mime":757,"name":799,"path":567,"size":800,"width":718,"height":801,"sizeInBytes":802},"\u002Fuploads\u002Fthumbnail_Logo_App_Officetrack_crop_38add12ca9.png","thumbnail_Logo_App_Officetrack_crop_38add12ca9","thumbnail_Logo-App-Officetrack-crop.png",8.17,53,8174,"Logo_App_Officetrack_crop_38add12ca9",5.14,"\u002Fuploads\u002FLogo_App_Officetrack_crop_38add12ca9.png","2025-12-18T01:46:51.809Z",{"id":808,"documentId":809,"name":810,"website":811,"sortOrder":747,"isFeatured":561,"createdAt":812,"updatedAt":813,"publishedAt":814,"projectTitle":567,"industry":567,"highlights":567,"slug":815,"teaser":816,"description":829,"logo":830},82,"b4jtii430bwuf8mbwqbuakbx","Berliner Stadreingung","https:\u002F\u002Fwww.bsr.de\u002F","2026-01-02T17:22:55.638Z","2026-01-02T17:25:46.746Z","2026-01-02T17:25:47.646Z","berliner-stadreingung",[817,821,825],{"type":578,"children":818},[819],{"text":820,"type":576},"Berliner Stadtreinigungsbetriebe (BSR) is a service provider owned by the State of Berlin, responsible for waste collection, street cleaning, and waste treatment. ",{"type":578,"children":822},[823],{"text":824,"type":576},"BSR disposes of Berlin's household waste, organic waste, and bulky waste, and is also responsible for emptying recycling bins in some areas of the city. Additionally, its employees keep streets, squares, and selected parks clean and ensure safe roadways during the winter. Furthermore, BSR operates the Berlin waste-to-energy plant, a biogas plant, and 14 recycling centers, among other facilities. ",{"type":578,"children":826},[827],{"text":828,"type":576},"BSR is subordinate to the Senate Department for Economics, Energy and Public Enterprises. With around 6,200 employees, it is one of Berlin's largest employers and the largest municipal waste management company in Germany.","# BSR - Berliner Stadtreinigungsbetriebe\n\n**Berliner Stadtreinigungsbetriebe** (BSR) is a service provider owned by the State of Berlin, responsible for waste collection, street cleaning, and waste treatment. \n\nBSR disposes of Berlin's household waste, organic waste, and bulky waste, and is also responsible for emptying recycling bins in some areas of the city. Additionally, its employees keep streets, squares, and selected parks clean and ensure safe roadways during the winter. Furthermore, BSR operates the Berlin waste-to-energy plant, a biogas plant, and 14 recycling centers, among other facilities. \n\nBSR is subordinate to the Senate Department for Economics, Energy and Public Enterprises. With around 6,200 employees, it is one of Berlin's largest employers and the largest municipal waste management company in Germany.",{"id":831,"documentId":832,"name":833,"alternativeText":567,"caption":567,"width":834,"height":834,"formats":567,"hash":835,"ext":670,"mime":671,"size":836,"url":837,"previewUrl":567,"provider":626,"provider_metadata":567,"createdAt":838,"updatedAt":838,"publishedAt":838},29,"qivc1lecc3qmz5qsxduow9ne","Berliner_Stadtreinigungsbetriebe.svg",1711,"Berliner_Stadtreinigungsbetriebe_8a54a3bbb4",3.7,"\u002Fuploads\u002FBerliner_Stadtreinigungsbetriebe_8a54a3bbb4.svg","2026-01-02T17:25:42.718Z",{"pagination":840},{"page":634,"pageSize":841,"pageCount":634,"total":747},25,{"data":843,"meta":1084},[844],{"id":845,"documentId":846,"createdAt":847,"updatedAt":848,"publishedAt":849,"name":850,"slug":851,"tagline":852,"description":853,"short_description":854,"sortOrder":634,"logo":855,"sub_doc_products":859},22,"orct2m7iifkq30njyvh48un1","2025-12-11T14:13:29.628Z","2025-12-27T17:39:12.385Z","2025-12-27T17:39:13.434Z","JOpt.TourOptimizer","j-opt-tour-optimizer","Right place, right time. Be optimal.","Will be moved to SubDocProduct","JOpt.TourOptimizer – enables you to enhance your product or project by seamlessly integrating DNA’s tour and resource optimization engine. It comes as a Java library or in Docker Container utilizing the Spring Framework and Swagger.",{"id":634,"documentId":856,"url":857,"alternativeText":858},"deibnocxezuy9w4rsy5dadsu","\u002Fuploads\u002Fdna_evolutions_jopt_tour_optimizer_8989730ea7.svg","JOpt TourOptimizer",[860],{"id":861,"documentId":862,"title":863,"slug":864,"order":560,"captionTitle":567,"blocks":865},373,"eo0kphbhqfhtwhd9pcfxi923","JOpt.TourOptimizer Component","jopt-tour-optimizer-description",[866,888,892,900,904,927,1030,1063,1067,1070,1074,1078,1081],{"__component":867,"id":868,"title":869,"docIcon":567,"mode":870,"intro":871,"caption":585,"isActive":567,"slides":872},"sections.image-carousel",634,"Teaser Field Marquee","marquee","![PartRouteFrontendModesPath.svg](.\u002Fuploads\u002FPart_Route_Frontend_Modes_Path_7da5d1a411.svg)",[873,876,879,882,885],{"id":874,"caption":875,"extraCSS":567,"docIcon":567,"title":875,"deepDiveLink":567,"image":567},2372,"Logistics &Transportation",{"id":877,"caption":878,"extraCSS":567,"docIcon":567,"title":567,"deepDiveLink":567,"image":567},2373,"Field Operations & Workforce",{"id":880,"caption":881,"extraCSS":567,"docIcon":567,"title":567,"deepDiveLink":567,"image":567},2374,"Circular Economy & Municipal Operations",{"id":883,"caption":884,"extraCSS":567,"docIcon":567,"title":567,"deepDiveLink":567,"image":567},2375,"Manufacturing & Supply Chain Exec.",{"id":886,"caption":887,"extraCSS":567,"docIcon":567,"title":887,"deepDiveLink":567,"image":567},2376,"Scheduling beyond routing",{"__component":889,"id":890,"body":891,"docIcon":47,"isActive":561},"sections.markdown",1411,"## Overview\n\n**JOpt.TourOptimizer** is a flexible, high-performance optimization engine designed to solve complex tour and resource optimization problems. It enables software vendors, developers, and logistics solution providers to seamlessly integrate advanced routing capabilities into their products or internal systems.\n\nBuilt on a robust Java core and available both as a native library and a containerized service, **JOpt.TourOptimizer** supports a wide array of industry use cases from vehicle routing and staff dispatching to scheduling in logistics, transportation, mobile workforce management, and beyond.\n\nWhat you get: **Executable plans under real-world constraints.**",{"__component":893,"id":894,"title":567,"source":895,"videoUrl":567,"caption":585,"autoplay":561,"loop":561,"docIcon":567,"poster":567,"videoFile":896},"sections.video",28,"upload",{"id":897,"documentId":898,"url":899,"alternativeText":567,"width":567,"height":567},26,"w8n09pc6a05vfpstzohp4hqi","\u002Fuploads\u002FDNA_Introduction_Video_f0269ad769.mp4",{"__component":889,"id":901,"body":902,"docIcon":903,"isActive":567},1412,"\u003Cdiv style=\"text-align: center;padding-bottom: 25px;\">\n    \u003Ca href=\"NUXTLINK:requestdemo\" class=\"mkbutton mkbutton--primary\">Request Demo\u003C\u002Fa>\n    \u003Ca href=\"NUXTLINK:readdocs\" class=\"mkbutton\">Read the Docs\u003C\u002Fa>\n    \u003Ca href=\"NUXTLINK:implementationexamples\"  class=\"mkbutton\">Implementation Examples\u003C\u002Fa>\n\u003C\u002Fdiv>\n\n\n\n ## What problems JOpt targets\n\nJOpt is designed for *real operations*, where feasibility matters and constraints are complex.\n\n### Routing and scheduling problem classes (examples)\n- **VRP \u002F CVRP** (Vehicle Routing \u002F Capacitated Routing)\n- **VRPTW \u002F CVRPTW** (Routing with Time Windows)\n- **PDP \u002F PDPTW** (Pickup and Delivery \u002F with Time Windows)\n- **Multi-depot and heterogeneous fleet patterns** (multiple bases, different vehicle types)\n- **Workforce routing and scheduling patterns** (skills, eligibility, policies)\n\nYour organization does not need to “fit” a single textbook model. JOpt is built to model operational reality.\n\n## Real-World Examples\nGet started on our dedicated learning path. You can execute our examples even in your browser.\n\n![PartBasicAdvandcedExpertPath.svg](.\u002Fuploads\u002FPart_Basic_Advandced_Expert_Path_553673d402.svg)\n\nYou can do a quickstart following Getting started or learn more about our features in our feature altas.\n\n\u003Cdiv style=\"text-align: center;\">\n    \u003Ca href=\"NUXTLINK:gettingstarted\" class=\"mkbutton\">Getting started\u003C\u002Fa>\n    \u003Ca href=\"NUXTLINK:featureatlas\" class=\"mkbutton\">Feature Atlas\u003C\u002Fa>\n\u003C\u002Fdiv>","i-lucide-target",{"__component":867,"id":905,"title":906,"docIcon":907,"mode":908,"intro":909,"caption":567,"isActive":567,"slides":910},635,"Why decision makers choose JOpt","i-lucide-hammer","tabs","## Why decision makers choose JOpt",[911,915,919,923],{"id":912,"caption":913,"extraCSS":567,"docIcon":567,"title":914,"deepDiveLink":567,"image":567},2377,"### 1. Feasibility by architecture (hard constraints you can trust)\nIn enterprise operations, certain rules must always hold (compliance, safety, contractual obligations). JOpt supports structural modeling approaches where **hard constraints are fulfilled by architecture** AND not by “very high penalty costs.”\n\n- **Hard constraints:** always satisfied (feasible-by-design)\n- **Soft constraints:** optimized via cost and trade-offs (preferences)\n\nThis distinction reduces operational risk and makes results auditable and defendable.\n\n\u003Cdiv style=\"text-align: center;\">\n    \u003Ca href=\"NUXTLINK:learnconstraints\" class=\"mkbutton\">Learn more about our constrains\u003C\u002Fa>\n\u003C\u002Fdiv>","1. Feasibility by architecture",{"id":916,"caption":917,"extraCSS":567,"docIcon":567,"title":918,"deepDiveLink":567,"image":567},2378,"### 2. Real-world modeling depth (beyond standard VRP)\nJOpt covers the operational edge cases that frequently break generic solvers:\n\n- **Realistic time behavior** (waiting rules, service times, flexible starts)\n- **Multi-day logic and overnight stays**\n- **Territories, zone governance, and restricted crossings**\n- **Skills and expertise matching** (including levels)\n- **Pickup & delivery with stateful load behavior**\n- **Optional work, bases, reload\u002Funload patterns**\n- **Rich relations between activities** (same route, same visitor, relative windows, etc.)\n\n\u003Cdiv style=\"text-align: center;\">\n    \u003Ca href=\"NUXTLINK:documentationhub\" class=\"mkbutton\">Learn more in our documentation hub\u003C\u002Fa>\n\u003C\u002Fdiv>\n","2. Real-world modeling",{"id":920,"caption":921,"extraCSS":567,"docIcon":567,"title":922,"deepDiveLink":567,"image":567},2379,"### 3. Performance at scale (constraint-heavy, large instances)\nEnterprise routing is not only “hard,” it is often **big**. JOpt provides performance strategies for production workloads:\n\n- **AutoFilter** acceleration to reduce unnecessary evaluation work\n- **Performance Modes** for large optimization runs\n- **Clustering construction** to scale while preserving route coherence\n- **Controlled optimization schemes** (algorithm selection, defaults, reproducibility)\n\n\u003Cdiv style=\"text-align: center;\">\n    \u003Ca href=\"NUXTLINK:learnperformance\" class=\"mkbutton\">Learn more on performance\u003C\u002Fa>\n    \u003Ca href=\"NUXTLINK:learnautofilter\" class=\"mkbutton\">AutoFilter docs\u003C\u002Fa>\n    \u003Ca href=\"NUXTLINK:learnclustering\"  class=\"mkbutton\">Clustering docs\u003C\u002Fa>\n\u003C\u002Fdiv>","3. Performance at scale",{"id":924,"caption":925,"extraCSS":567,"docIcon":567,"title":926,"deepDiveLink":567,"image":567},2380,"### 4. Explainability (planner trust and adoption)\nOptimization succeeds only if stakeholders accept the results. JOpt includes tooling to explain outcomes and changes:\n\n- **Live progress telemetry** (streaming progress, status, warnings)\n- **Full progress readout** (for diagnostics and tuning)\n- **Result comparison tooling** (explain why result A differs from result B)\n- **Structured extraction for reporting and audit trails**\n\n\n\u003Cdiv style=\"text-align: center;\">\n    \u003Ca href=\"NUXTLINK:learnprogress\" class=\"mkbutton\">Learn more on progress\u003C\u002Fa>\n    \u003Ca href=\"NUXTLINK:learncomparison\" class=\"mkbutton\">Comparison tool docs\u003C\u002Fa>\n\u003C\u002Fdiv>\n","4. Explainability",{"__component":867,"id":928,"title":929,"docIcon":930,"mode":931,"intro":932,"caption":567,"isActive":567,"slides":933},636,"Special Features","i-lucide-gem","pagegrid","## Special feature grid\n\nOur **signature capabilities** in a compact grid. You can follow each item to its deep-dive page.\n\n",[934,945,956,967,977,988,999,1009,1020],{"id":935,"caption":936,"extraCSS":567,"docIcon":567,"title":937,"deepDiveLink":938,"image":939},2381,"Scores nodes with penalty\u002Fanti-penalty points. Filters persistent violators. Turns messy input into feasible schedules + stable runtime. ","AutoFilter acceleration","NUXTLINK:learnautofilter",{"id":940,"documentId":941,"url":942,"alternativeText":567,"width":943,"height":944},94,"o91re2uqd35vuozhqm837cnh","\u002Fuploads\u002Fauto_Filter_Multiple_Solutions_3659883a2d.svg",41,45,{"id":946,"caption":947,"extraCSS":567,"docIcon":567,"title":948,"deepDiveLink":949,"image":950},2382,"Models pickup-before-delivery with time feasibility. Tracks load\u002Fcapacity state across the tour. Fits parcel, freight, replenishment flows.","Pickup & Delivery (PND)","NUXTLINK:learnpnd",{"id":951,"documentId":952,"url":953,"alternativeText":567,"width":954,"height":955},95,"qg9j718jy5wzzcaodb8i1r1m","\u002Fuploads\u002Fpnd2_2353063722.svg",1943,1151,{"id":957,"caption":958,"extraCSS":567,"docIcon":567,"title":959,"deepDiveLink":960,"image":961},2383,"Skills are hard feasibility by architecture (not high cost). Adds expertise levels for precision. Scales to large workforces and fleets.","Hard Skills + Expertise Levels","NUXTLINK:learnskills",{"id":962,"documentId":963,"url":964,"alternativeText":567,"width":965,"height":966},86,"ga5iyu57vrrd195hc5ny1lbm","\u002Fuploads\u002Fskills_7e7c6ac2f7.svg",654,644,{"id":968,"caption":969,"extraCSS":567,"docIcon":567,"title":164,"deepDiveLink":970,"image":971},2384,"Pre-tuned for large instances. Predictable time-to-solution and throughput. Built for production planning runs and SLA stability.","NUXTLINK:learnperformance",{"id":972,"documentId":973,"url":974,"alternativeText":567,"width":975,"height":976},88,"cbj3mmmhrxpaw37rz4uccztd","\u002Fuploads\u002Fperformance_d24e2809c9.svg",311,159,{"id":978,"caption":979,"extraCSS":567,"docIcon":567,"title":980,"deepDiveLink":981,"image":982},2385,"Streams progress and diagnostics during runs. Compares solutions to explain “what changed\u002Fwhy”. Improves trust, audits, and adoption.","Explainability Toolkit","NUXTLINK:learncomparison",{"id":983,"documentId":984,"url":985,"alternativeText":567,"width":986,"height":987},89,"pl2hcjinvwto0taepeqxciu6","\u002Fuploads\u002Fexplain_66458c8e31.svg",551,544,{"id":989,"caption":990,"extraCSS":567,"docIcon":567,"title":991,"deepDiveLink":992,"image":993},2386,"Define territories via zone codes and constraints. Enforce access and crossing policies. Keeps dispatch compliant, governed, and consistent.","Territories & Zone Governance","NUXTLINK:learnterritories",{"id":994,"documentId":995,"url":996,"alternativeText":567,"width":997,"height":998},90,"tecft3iz5s7gachh04mqvikq","\u002Fuploads\u002Fzone2_2e4304d35f.svg",124,96,{"id":1000,"caption":1001,"extraCSS":567,"docIcon":567,"title":1002,"deepDiveLink":1003,"image":1004},2387,"Plans across day boundaries with overnight stays. Maintains feasibility over multiple days. Ideal for long-haul and multi-day service tours.","Overnight Stays \u002F Multi-day","NUXTLINK:learnovernightstay",{"id":1005,"documentId":1006,"url":1007,"alternativeText":567,"width":1008,"height":1008},91,"xj5bdhyibl2vfggj6orbahji","\u002Fuploads\u002Fovernight_01f6282123.svg",336,{"id":1010,"caption":1011,"extraCSS":567,"docIcon":567,"title":1012,"deepDiveLink":1013,"image":1014},2388,"Inject custom node\u002Froute constraints and objectives. Implement unique customer policies without rewrites. Makes edge-case scenarios solvable. ","OpenAssessor (Custom Rules)","NUXTLINK:learnopenassessor",{"id":1015,"documentId":1016,"url":1017,"alternativeText":567,"width":1018,"height":1019},92,"jad8kkxz9frvf6a3v79qqwom","\u002Fuploads\u002Fcustomassessor_4962de3af7.svg",276,240,{"id":1021,"caption":1022,"extraCSS":567,"docIcon":567,"title":1023,"deepDiveLink":1024,"image":1025},2389,"Turns a resource’s workday start into a flexible time window: start later to cut idle time (positive) or start earlier (often driving-only) to hit opening times (negative). Hard-limited and combinable.","FlexTime","NUXTLINK:learnflextime",{"id":998,"documentId":1026,"url":1027,"alternativeText":567,"width":1028,"height":1029},"euct83o52hunee0q4k9rov3c","\u002Fuploads\u002Fflextime_cee29db95e.svg",357,127,{"__component":867,"id":1031,"title":1032,"docIcon":1033,"mode":1034,"intro":1035,"caption":585,"isActive":567,"slides":1036},637,"Integration and deployment","i-lucide-blocks","carousel","## Integration and deployment\n\nJOpt is designed to integrate into enterprise systems without locking you into a single technology stack.\n\n### Integration options\n1. **Java Library (SDK)**\n   - In-process, lowest latency\n   - Full control over lifecycle and performance\n   - Ideal for Java-first architectures\n\n2. **REST API (Container \u002F Microservice)**\n   - Integrate from any client (JS\u002FTS, Python, .NET, low-code)\n   - OpenAPI contract for client generation and contract testing\n   - Centralized governance and scaling\n\n3. **Hybrid**\n   - Embed internally while exposing REST for other teams\u002Fservices",[1037,1046,1054],{"id":1038,"caption":1039,"extraCSS":567,"docIcon":567,"title":567,"deepDiveLink":567,"image":1040},2390,"**Example Java Integration**",{"id":1041,"documentId":1042,"url":1043,"alternativeText":567,"width":1044,"height":1045},24,"dwb0wvmekbr4b99wi4joh282","\u002Fuploads\u002FDirect_Intergration_CTA_e1a86eaa9a.png",1568,1004,{"id":1047,"caption":1048,"extraCSS":567,"docIcon":567,"title":567,"deepDiveLink":567,"image":1049},2391,"**Example Rest API Integration**",{"id":841,"documentId":1050,"url":1051,"alternativeText":567,"width":1052,"height":1053},"e6sv1e6lg0ud694d0jqtl6hy","\u002Fuploads\u002FCloud_Intergration_CTA_3_1cdb47eef1.png",1569,994,{"id":1055,"caption":1056,"extraCSS":567,"docIcon":567,"title":567,"deepDiveLink":567,"image":1057},2392,"**OpenAPI**",{"id":1058,"documentId":1059,"url":1060,"alternativeText":567,"width":1061,"height":1062},23,"atbe4ufakxhe1zvd7v8szuim","\u002Fuploads\u002Fswagger_d7d7b5a69a.png",1265,874,{"__component":889,"id":1064,"body":1065,"docIcon":1066,"isActive":561},1413,"## Snapshot schema compatibility (SDK and REST)\n\nA **snapshot** is a portable JSON representation of an optimization instance. The snapshot format is defined by the API schema and is compatible with snapshots created by the Java library. Moreover, the schema definition as base for the default snapshot creation is build into the JOpt.TourOptimizer core enabling flawless feature availability. This enables:\n\n- Reproducible runs across dev\u002Ftest\u002Fprod\n- Versioned optimization inputs for debugging and auditing\n- Safe handoff between systems, teams, and customers\n- Result comparison using identical baselines\n\n\u003Cdiv style=\"text-align: center;\">\n    \u003Ca href=\"NUXTLINK:apitesting\" class=\"mkbutton\" style=\"display: inline-block; padding: 10px 20px; border: 1px solid #ccc; border-radius: 8px; text-decoration: none; color: black; margin: 5px;\">API Reference & Testing\u003C\u002Fa>\n\u003C\u002Fdiv>","i-lucide-refresh-cw",{"__component":889,"id":1068,"body":1069,"docIcon":27,"isActive":561},1414,"## Getting started\n\nYou are interested? Follow our **Getting started** page in our **Documenation Hub**\n\n\u003Cdiv style=\"text-align: center;\">\n    \u003Ca href=\"NUXTLINK:gettingstarted\" class=\"mkbutton mkbutton--cta\">Getting Started\u003C\u002Fa>\n\u003C\u002Fdiv>\n",{"__component":889,"id":1071,"body":1072,"docIcon":1073,"isActive":6},1415,"## Key Features\n\n### Modern Optimization Engine\n\nJOpt.TourOptimizer provides access to modern optimization strategies suitable for solving classically hard problems, including:\n\n* **Vehicle Routing Problems (VRP, CVRP, VRPTW)**\n* **Pick-up and Delivery (PND) with time constraints**\n* Complex constraints including driver skills, inter-tour dependencies, and soft\u002Fhard business rules.\n\n### Seamless Integration\n\nDevelopers can integrate JOpt.TourOptimizer through multiple channels:\n\n* **Java Library** — direct inclusion via Maven or JAR.\n* **RESTful Microservice** — containerized with Spring and Swagger for standard OpenAPI usage.\n* **Docker Deployment** — fast start via Docker images to run as a scalable optimization service.\n\nIntegration through a Swagger API enables rapid adoption in languages such as Java, C#, JavaScript, Scala, and Python.\n\n### Customizable & Extensible\n\nOut-of-the-box defaults allow users to get started immediately, while advanced options let developers **customize objective functions, constraints, and evaluation criteria** to match industry-specific requirements or unique business logic.\n","i-lucide-key-round",{"__component":889,"id":1075,"body":1076,"docIcon":1077,"isActive":6},1416,"## Overview\n\n**JOpt.TourOptimizer** is a flexible, high-performance optimization engine designed to solve complex tour and resource optimization problems. It enables software vendors, developers, and logistics solution providers to seamlessly integrate advanced routing capabilities into their products or internal systems. ([DNA Evolutions][1])\n\nBuilt on a robust Java core and available both as a native library and a containerized service, JOpt.TourOptimizer supports a wide array of industry use cases — from vehicle routing and staff dispatching to scheduling in logistics, transportation, mobile workforce management, and beyond.\n","i-lucide-text",{"__component":889,"id":1079,"body":1080,"docIcon":567,"isActive":6},1417,"## Why decision makers choose JOpt\n\n### 1) Feasibility by architecture (hard constraints you can trust)\nIn enterprise operations, certain rules must always hold (compliance, safety, contractual obligations). JOpt supports structural modeling approaches where **hard constraints are fulfilled by architecture** AND not by “very high penalty costs.”\n\n- **Hard constraints:** always satisfied (feasible-by-design)\n- **Soft constraints:** optimized via cost and trade-offs (preferences)\n\nThis distinction reduces operational risk and makes results auditable and defendable.\n\n\u003Cdiv style=\"text-align: center;\">\n    \u003Ca href=\".\u002Fdocs\u002Fgetting-started\u002Fspecial\u002Ffeatureoverview\" class=\"mkbutton\" style=\"display: inline-block; padding: 10px 20px; border: 1px solid #ccc; border-radius: 8px; text-decoration: none; color: black; margin: 5px;\">Learn more about our constrains\u003C\u002Fa>\n\u003C\u002Fdiv>\n\n---\n\n### 2) Real-world modeling depth (beyond standard VRP)\nJOpt covers the operational edge cases that frequently break generic solvers:\n\n- Realistic time behavior (waiting rules, service times, flexible starts)\n- Multi-day logic and overnight stays\n- Territories, zone governance, and restricted crossings\n- Skills and expertise matching (including levels)\n- Pickup & delivery with stateful load behavior\n- Optional work, bases, reload\u002Funload patterns\n- Rich “relations” between activities (same route, same visitor, relative windows, etc.)\n\n---\n\n### 3) Performance at scale (constraint-heavy, large instances)\nEnterprise routing is not only “hard,” it is often **big**. JOpt provides performance strategies for production workloads:\n\n- **AutoFilter** acceleration to reduce unnecessary evaluation work\n- **Performance Modes** for large optimization runs\n- **Clustering construction** to scale while preserving route coherence\n- Controlled optimization schemes (algorithm selection, defaults, reproducibility)\n\n\u003Cdiv style=\"text-align: center;\">\n    \u003Ca href=\"#\" class=\"mkbutton\" style=\"display: inline-block; padding: 10px 20px; border: 1px solid #ccc; border-radius: 8px; text-decoration: none; color: black; margin: 5px;\">Learn more on performance\u003C\u002Fa>\n    \u003Ca href=\"#\" class=\"mkbutton\" style=\"display: inline-block; padding: 10px 20px; border: 1px solid #ccc; border-radius: 8px; text-decoration: none; color: black; margin: 5px;\">AutoFilter docs\u003C\u002Fa>\n    \u003Ca href=\"#\"  class=\"mkbutton\" style=\"display: inline-block; padding: 10px 20px; border: 1px solid #ccc; border-radius: 8px; text-decoration: none; color: black; margin: 5px;\">Clustering docs\u003C\u002Fa>\n\u003C\u002Fdiv>\n\n\n---\n\n### 4) Explainability (planner trust and adoption)\nOptimization succeeds only if stakeholders accept the results. JOpt includes tooling to explain outcomes and changes:\n\n- Live progress telemetry (streaming progress, status, warnings)\n- Full progress readout (for diagnostics and tuning)\n- Result comparison tooling (explain why result A differs from result B)\n- Structured extraction for reporting and audit trails\n\n\n\u003Cdiv style=\"text-align: center;\">\n    \u003Ca href=\"#\" class=\"mkbutton\" style=\"display: inline-block; padding: 10px 20px; border: 1px solid #ccc; border-radius: 8px; text-decoration: none; color: black; margin: 5px;\">Learn more on progress\u003C\u002Fa>\n    \u003Ca href=\"#\" class=\"mkbutton\" style=\"display: inline-block; padding: 10px 20px; border: 1px solid #ccc; border-radius: 8px; text-decoration: none; color: black; margin: 5px;\">Comparison tool docs\u003C\u002Fa>\n\u003C\u002Fdiv>\n\n---",{"__component":889,"id":1082,"body":1083,"docIcon":567,"isActive":6},1418,"## Key Features (expanded)\n\n### Modern Optimization Engine\nJOpt.TourOptimizer provides access to modern optimization strategies suitable for classically hard problems:\n\n- **Vehicle Routing:** VRP, CVRP, VRPTW, CVRPTW\n- **Pickup & Delivery:** PND\u002FPDP patterns with precedence and time feasibility\n- Constraint-rich modeling: skills, territories, relations, optional nodes, custom policies\n- Objective optimization: travel time\u002Fdistance, cost-to-serve, utilization, service levels, emissions\n\n{{IMG_OPTIMIZATION_ENGINE_OVERVIEW}}\n\n**Optimization engine docs:** {{LINK_DOC_OPTIMIZATION_ENGINE}}\n\n---\n\n### Scheduling realism and time behavior\nOperational plans must be executable:\n\n- Time windows and service times\n- Waiting behavior and early\u002Flate handling policies\n- Flexible start time (positive and negative)\n- First\u002Flast node semantics and open\u002Fclosed routes\n- Return-to-start options\n- Multi-day planning patterns including overnight stays\n\n{{IMG_TIME_REALISM}}\n{{GRAPH_TIME_FEASIBILITY}}\n\n**Time realism docs:** {{LINK_DOC_TIME_REALISM}}\n\n---\n\n### Pickup & Delivery and stateful logistics (PND)\nPickup & delivery is more than “two stops.” It is a **state evolution** across the route:\n\n- Pickup-before-delivery precedence\n- Timed and flexible load patterns\n- Optional unloadAll \u002F reload bases and operational stopovers\n- Extraction for reporting (load and state transitions)\n\n{{IMG_PND_FLOW}}\n{{GRAPH_LOAD_OVER_TIME}}\n\n**PND docs:** {{LINK_DOC_PND}}\n\n---\n\n### Territories, zones, and compliance\nDispatch governance and compliance constraints are often decisive:\n\n- Zones and zone codes (territory definition)\n- Zone number constraints (assignment governance)\n- Controlled crossings (bridge\u002Ftunnel\u002Fzone crossing constraints)\n- Restricted access policies and territory-driven planning\n\n{{IMG_TERRITORIES_MAP}}\n{{GRAPH_ZONE_POLICY}}\n\n**Territories docs:** {{LINK_DOC_ZONECODES}}  \n**Zone crossing docs:** {{LINK_DOC_ZONECROSSING}}\n\n---\n\n### Skills, expertise, and resource assignment\nWorkforce and fleet assignment commonly requires eligibility and qualification matching:\n\n- Mandatory vs preferred assignment (binding)\n- Banned vs unpreferred assignment (exclusion)\n- Skill types with expertise levels\n- High-performance matching patterns (BitSet-based concept for fast evaluation at scale)\n\n{{IMG_SKILLS_AND_EXPERTISE}}\n{{GRAPH_SKILL_MATCHING_PERFORMANCE}}\n\n**Skills docs:** {{LINK_DOC_SKILLS}}\n\n---",{"pagination":1085},{"page":634,"pageSize":841,"pageCount":634,"total":634}]