JOpt.TourOptimizer - Route optimization, scheduling & resource planning (reactive REST service)
10K+
Route optimization, scheduling, and resource planning as a reactive REST service.
Documentation · Server Guide · REST Clients · AI Assistant · Live Demo · Contact
JOpt.TourOptimizer is a backend optimization engine for vehicle routing, field service scheduling, and resource planning. This repository provides the containerized REST server: a reactive Spring WebFlux application that exposes the full optimizer via REST endpoints with an OpenAPI 3 contract (Swagger UI).
You send a JSON optimization request. The server returns an optimized plan with routes, schedules, cost breakdowns, and violation details.
This is a pre-built Docker image. You do not need to compile anything. Pull the image, start the container, and call the API.
docker run -d --rm --name jopt-touroptimizer \
-p 8081:8081 \
-e SPRING_PROFILES_ACTIVE=cors \
dnaevolutions/jopt_touroptimizer:latest
Swagger UI: http://localhost:8081/swagger-ui/index.html
OpenAPI JSON: http://localhost:8081/v3/api-docs
That is all you need to start evaluating. Paste a JSON payload into the Swagger UI and run an optimization.
Free mode: Up to 20 elements (nodes + resources) without a license. Extended evaluation (37 elements) with a free sign-up.
For full deployment documentation (including database mode, Kubernetes, Terraform, and platform-specific guides), see the Server Guide.
For asynchronous job submission, persistence, and webhook-based result delivery:
# Create a network
docker network create mongonetwork
# Start MongoDB
docker run -d --name dnamongo --network mongonetwork \
-p 27017:27017 \
-e MONGO_INITDB_ROOT_USERNAME=dnauser \
-e MONGO_INITDB_ROOT_PASSWORD=dnapwd \
mongo:latest
# Start TourOptimizer with all features
docker run --rm --name jopt-touroptimizer \
--network mongonetwork \
-p 8081:8081 \
-e SPRING_PROFILES_ACTIVE=cors \
-e DNA_DATABASE_ACTIVE=true \
-e DNA_DATABASE_URI="mongodb://dnauser:dnapwd@dnamongo:27017/admin" \
-e DNA_DATABASE_DB=touroptimizer \
-e DNA_SHOW_SYNCH_CONTROLLERS=true \
-e DNA_DATABASE_FREE_SEARCH_ENABLED=true \
-e DNA_DATABASE_JOB_IMPORT_ENABLED=true \
-e DNA_WEBHOOK_VALIDATION=relaxed \
dnaevolutions/jopt_touroptimizer:latest
For details on fire-and-forget mode, see the FAF documentation.
| Property | Value |
|---|---|
| Runtime | Java 17, Spring Boot 3.4.x |
| HTTP stack | Spring WebFlux (reactive, non-blocking) |
| API | REST + OpenAPI 3.0 (Swagger UI) + SSE streaming |
| State | Stateless core. Optional MongoDB for async jobs. |
| Scaling | Horizontal. No sticky sessions. No shared in-memory state. |
| Compute profile | CPU-bound optimization, memory-intensive problem graphs |
| Image | Pre-built. No build tooling required. |
The server exposes synchronous endpoints (request, wait, result) and asynchronous fire-and-forget endpoints (submit job, poll or receive webhook). Progress streaming is available via Server-Sent Events.
OpenAPI-generated client libraries are available for multiple languages:
| Language | Repository |
|---|---|
| Java | Java REST Client Examples |
| Python | Python REST Client Examples |
| C# / .NET | C# REST Client Examples |
| TypeScript / Angular | Angular Demo Application |
All clients connect to this server. For client setup instructions, see the REST Client documentation.
Docker networking note: If your client runs inside a container and the server runs on the host, use
http://host.docker.internal:8081instead ofhttp://localhost:8081.
If you want to explore JOpt in a browser IDE without any local toolchain, Docker sandboxes are available:
| Sandbox | Image | Port | Password |
|---|---|---|---|
| Java SDK Examples | dnaevolutions/jopt_example_server:latest | 8042 | jopt |
| Java REST Client | dnaevolutions/jopt_rest_example_server:latest | 8043 | joptrest |
| Python REST Client | dnaevolutions/jopt_py_example_server:latest | 8033 | jopt |
| C# REST Client | dnaevolutions/jopt_net_example_server:latest | 8023 | joptrest |
Example:
docker run -it -d --name jopt-examples \
-p 127.0.0.1:8042:8080 \
dnaevolutions/jopt_example_server:latest
Open http://localhost:8042 in your browser. For details, see the Sandboxes documentation.
JOpt.TourOptimizer supports a comprehensive set of routing and scheduling features. For the full list with documentation links, see the Feature List and Special Features.
Highlights:
For production deployment on different platforms:
| Mode | Limit | Requirement |
|---|---|---|
| Free | 20 elements | None |
| Evaluation | 37 elements | Free sign-up |
| Production | Unlimited | License key (contact us) |
License documentation: License feature guide
| Resource | Link |
|---|---|
| Documentation Hub | dna-evolutions.com/docs |
| AI Assistant (GPT) | JOpt AI Assistant |
| Java SDK Examples | GitHub |
| Live Demo | demo.dna-evolutions.com |
| OpenAPI Schema | swagger.dna-evolutions.com |
| Public JavaDoc | public.javadoc.dna-evolutions.com |
| FAQ | FAQ |
| YouTube | DNA Evolutions Channel |
For license agreements and further information about license plans, please visit www.dna-evolutions.com.
DNA Evolutions GmbH
Website ·
[email protected] ·
LinkedIn ·
GitHub
Content type
Image
Digest
sha256:9de1308ce…
Size
191.9 MB
Last updated
6 months ago
docker pull dnaevolutions/jopt_touroptimizer