Frequently asked questions (FAQ)

Illustration on a dark street grid: two document panels with lines of text, one line lit lime, and a glowing lime speech bubble with a question mark, joined to lime points by dashed lines

This page answers frequent questions about DNA Evolutions and the JOpt product family: the products, the first steps, integration, licensing, the documentation and examples, and technical topics. For a first optimization run, start with Getting started.

To ask questions about JOpt and get code that follows the published examples, see JOpt AI Expert.

Contact and company

How can I contact DNA Evolutions?

Use the contact form or send an email to [email protected].

Where can I find DNA Evolutions online?

Who uses JOpt.TourOptimizer?

The customers page lists users of JOpt.TourOptimizer.

Product overview

What is JOpt.TourOptimizer?

JOpt.TourOptimizer is a backend optimization engine for routing, scheduling, and resource planning. It takes a set of tasks (Nodes), a set of workers or vehicles (Resources), and a set of constraints, and returns an optimized plan that minimizes total cost, with routes, schedules, cost breakdowns and violation details. Your planning system calls it as a Java library or as a REST service.

What products does DNA Evolutions offer?

The JOpt platform consists of three products:

  • JOpt.TourOptimizer: the core optimization engine for routing, scheduling, and resource planning.
  • JOpt.RoutePlanner: a routing and travel-time planning layer for realistic distances and durations.
  • JOpt.GeoCoder: a geocoding and geo-referencing layer (addresses to coordinates).

What makes JOpt unique?

JOpt provides several capabilities that are, to our best knowledge, not available in other route optimization engines. These include manufacturing planning with dynamic production quantities (FlexLoads), multi-solution infeasibility management (AutoFilter), architectural hard constraints (Pillar Nodes), per-shift territory switching (ZoneCodes on WorkingHours), asymmetric zone crossing penalization, and a reactive event system based on RxJava 3. For an overview, see Special features and the feature list.

What optimization algorithm does JOpt use?

JOpt runs a pipeline of three phases. A construction algorithm builds a starting solution, simulated annealing refines it, and genetic evolution continues with a population of solutions and both random and guided operators. How JOpt.TourOptimizer works on the Introduction page explains the phases, and the guide Clustering during construction describes the default construction algorithm.

Getting started

How do I get started with JOpt?

Start with Getting started. You can choose between the Java SDK (in-process) or the REST API (service-based). Both paths include Docker sandboxes for an evaluation without a local toolchain.

Can I test JOpt without installing Java, Maven, or any toolchain?

Yes. JOpt provides Docker-based sandboxes with a browser IDE (CodeServer) that require only Docker to run. No local Java, Maven, or IDE installation needed. See the sandbox quickstart.

How do I run my first optimization?

Start a Docker sandbox, open FirstOptimizationExample.java, and run it. The sandbox comes with Java, Maven and a working example; on the first run, Maven downloads the dependencies.

Where can I see a live demo?

Visit our Angular demo application at demo.dna-evolutions.com. It is a limited frontend that demonstrates the end-to-end flow (scenario selection, optimization, map visualization). JOpt's full feature set is much broader than what the demo exposes; see the Angular demo client page.

Integration

What are the two integration paths?

  1. Java SDK (in-process): import JOpt as a dependency and run optimization directly in your Java application.
  2. REST / OpenAPI (service): run JOpt.TourOptimizer as a Docker container and call it via REST API from any language. OpenAPI-generated client libraries are available for Java, Python, C#, and TypeScript/Angular.

What languages are supported via REST?

Any language that can make HTTP requests. DNA Evolutions provides maintained client libraries and examples for:

How do I run the TourOptimizer REST server?

Pull the Docker image and start it:

docker run -d --name jopt-touroptimizer -p 8081:8081 dnaevolutions/jopt_touroptimizer:latest

The Swagger UI is then available at http://localhost:8081/swagger-ui/index.html. For detailed instructions, see the REST server page.

Is there a .NET version?

A legacy .NET version using IKVM.NET was provided up to version v7.5.2. For new projects, we recommend using the C# REST client instead, which provides full access to all features through the REST API. See the C# REST Client repository.

What technology stack does JOpt use?

The core engine is Java. The REST service uses Spring WebFlux (reactive, non-blocking). The event system is based on RxJava 3. Data exchange uses JSON (OpenAPI 3 schema). Deployment uses Docker and Docker Compose.

Licensing

Can I test JOpt without a license?

Yes. JOpt's free mode allows optimization of a limited number of elements (nodes + resources) without any license or signup. The public evaluation license raises the limit; see License guide: element limits.

Is there a free evaluation license?

Yes. With a free sign-up, you receive an evaluation license with a higher element limit. The sign-up and the limits are in the License guide: element limits.

How do I apply my license?

License setup is documented in the License guide. The license can be provided as a JSON string or loaded from a file. In the REST server, it is configured via the extension object in the optimization request.

Which license is right for me?

License selection depends on your problem size, deployment model, and usage pattern. Visit our products page for an overview, or contact us for a tailored recommendation.

What are the terms and conditions?

License agreements and further information about license plans are available on the DNA Evolutions website.

Documentation and examples

Where is the documentation?

Where are the code examples?

All examples are on GitHub:

Are there video tutorials?

Yes:

How are the Java examples organized?

The examples are sorted by level, and the README page of each level lists its examples:

  • Basic examples: fundamentals and core modeling patterns
  • Advanced examples: constraints from practice and combinations of features
  • Expert examples: custom restrictions and costs, warm starts with your own solution, the algorithm pipeline, early stop on convergence
  • REST examples: JSON input for the REST service, built in Java and run locally

Each example is self-contained and can be run independently.

Technical questions

What are the system requirements?

The optimization is CPU-bound, and its problem graphs are memory-intensive. Compute needs depend on the size and complexity of your problem. Large, constraint-heavy instances (hundreds of nodes, many constraints, multi-day planning) benefit from medium to high-performance infrastructure. The REST server runs as a stateless Spring Boot application and scales horizontally.

What is the difference between hard and soft constraints in JOpt?

Hard constraints are fulfilled by the optimizer's architecture. The solution space is cut so that hard constraint violations are structurally impossible. Soft constraints are handled through cost: violations are penalized in the objective function, and the optimizer minimizes total cost.

What is AutoFilter?

AutoFilter is an infeasibility management feature. When the problem is over-constrained, AutoFilter continuously analyzes which nodes cause violations across many parallel solution candidates and removes the systematic offenders. The result is a feasible plan for the remaining nodes plus a diagnostic list of excluded tasks with reasons. See the AutoFilter feature guide.

What is a Pillar Node?

A Pillar (CapturedNode) models an absolute, non-negotiable time-window constraint. Its SLA cannot be violated because the optimizer's architecture prevents it. Other nodes flow around the Pillar to protect its time window. See the Pillar Nodes feature guide.

Does JOpt support pickup and delivery?

Yes. JOpt provides a PND module with SimpleLoads (fixed quantities), FlexLoads (optimizer-determined quantities for manufacturing planning), TimedLoads (delivery time limits), MixedFlexLoads (warehouse buffers), and UnloadAllLoads. See the Pickup and Delivery feature guide.

Can JOpt handle multi-day routing?

Yes. The Overnight Stay feature allows resources to stay at designated nodes (hotels, depots) between working days. Policies control when staying out is allowed (per-day, distance/time thresholds) and how often (consecutive-night limits, mandatory recovery). See the Overnight Stay feature guide.

Can I add custom business rules to the optimizer?

Yes. The Open Assessor feature lets you inject custom cost contributions and violation logic at node level or route level. You implement one class, override one method, and wire it into the optimization scheme. No solver modification required. See the Open Assessor feature guide.

Does JOpt support territory management?

Yes. ZoneCodes define which resources can visit which nodes. Zone constraints are attached to individual WorkingHours, enabling per-shift territory switching. Nodes can belong to multiple zones simultaneously. Zone crossing penalization adds directional costs when routes cross zone boundaries. See the ZoneCodes and Zone Crossing feature guides.

Support and troubleshooting

How can I troubleshoot issues?

What kind of support is available?

For details about support scope, response times, and consulting sessions, visit the DNA Evolutions website or contact us.

Is training or educational material available?

Yes. The recommended learning path:

  1. Getting started and the First optimization tutorial
  2. Basic elements tutorial
  3. The feature list and the feature guides for specific features
  4. Special features for advanced concepts
  5. Video tutorials for visual walkthroughs

For on-site or remote training sessions, contact us.

Questions not answered here

If you have a question that is not answered here, please reach out:


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