Skip to content

Environnement en développement actif : vous pouvez remarquer des changements ou des fonctionnalités incomplètes.

JAOT
Plateforme d'optimisation open source

Tournées, plannings et budgets,résolus jusqu'au meilleur plan possible,et prouvés optimaux.

JAOT transforme votre problème en modèle mathématique, le résout et prouve qu'aucune meilleure réponse n'existe. Vous pouvez construire le modèle avec l'assistant IA, partir d'un modèle prédéfini de la communauté ou appeler JAOT depuis votre propre agent via MCP.

Une plateforme d'optimisation pour les personnes et pour les agents IA.

tournées · 48 arrêts · SCIP
Première solution 2092.6
Optimum 452.6−78.4%
Optimalité prouvée
Longueur de la tournée452.6
Écart à l'optimum0.00%
Nœuds explorés843
Variables2304
Solveurs open source100+ modèles prédéfinisMarketplace de modèles d'optimisationNatif MCPVoir sur GitHub
La plateforme

Trois façons d'optimiser

Construisez un modèle avec l'assistant IA, partez d'un modèle de la communauté dans la marketplace, ou connectez votre agent IA via MCP.

Assistant IA

Décrivez le problème avec vos mots. L'assistant écrit le modèle mathématique et JAOT le résout.

« Planifie les livraisons de la semaine prochaine : 4 camionnettes, 60 arrêts, chaque camionnette de retour à 18 h. »

Marketplace de modèles

Parcourez les modèles publiés par d'autres personnes. Utilisez-en un tel quel, dupliquez-le ou publiez le vôtre.

Fertilizer Mix Optimizer — agriculture

MCP pour les agents IA

Connectez Claude, GPT ou tout client MCP. Un agent peut résoudre des problèmes, dupliquer des modèles de la marketplace et écrire des modèles versionnés par lui-même.

solve_with_template(template_id="fertilizer_mixing")

Assistant IA
L'assistant JAOT écrit un modèle d'optimisation à partir d'un problème décrit avec des mots simples
Écrivez le modèle une seule fois

Quatorze lignes, quelle que soit la taille des données

JModel décrit le problème avec des ensembles et des familles indexées. JAOT affiche les mathématiques avant de charger la moindre donnée. Le même source ci-dessous couvre une usine sur un trimestre ou quatre cents produits sur un an, sans changer le modèle.

Ce que vous écrivez

set PRODUCTS;set RESOURCES;set WEEKS; param margin{PRODUCTS};param usage{RESOURCES, PRODUCTS};param capacity{RESOURCES, WEEKS};param ceiling{PRODUCTS, WEEKS}; var build{PRODUCTS, WEEKS} integer >= 0; maximize contribution:  sum{p in PRODUCTS, w in WEEKS} margin[p] * build[p, w]; subject to plant{r in RESOURCES, w in WEEKS}:  sum{p in PRODUCTS} usage[r, p] * build[p, w] <= capacity[r, w]; subject to market{p in PRODUCTS, w in WEEKS}:  build[p, w] <= ceiling[p, w];

Ce que cela signifie

max⁡∑p∈PRODUCTS,  w∈WEEKSmarginp buildp,w\max \quad \sum_{p \in \mathrm{PRODUCTS},\; w \in \mathrm{WEEKS}} \mathrm{margin}_{p} \, \mathrm{build}_{p,w}
∑p∈PRODUCTSusager,p buildp,w≤capacityr,w∀ r∈RESOURCES,  w∈WEEKS\sum_{p \in \mathrm{PRODUCTS}} \mathrm{usage}_{r,p} \, \mathrm{build}_{p,w} \le \mathrm{capacity}_{r,w} \quad \forall\, r \in \mathrm{RESOURCES},\; w \in \mathrm{WEEKS}
buildp,w≤ceilingp,w∀ p∈PRODUCTS,  w∈WEEKS\mathrm{build}_{p,w} \le \mathrm{ceiling}_{p,w} \quad \forall\, p \in \mathrm{PRODUCTS},\; w \in \mathrm{WEEKS}
buildp,w∈Z,  buildp,w≥0∀ p∈PRODUCTS,  w∈WEEKS\mathrm{build}_{p,w} \in \mathbb{Z},\; \mathrm{build}_{p,w} \ge 0 \quad \forall\, p \in \mathrm{PRODUCTS},\; w \in \mathrm{WEEKS}
7 produits × 6 ressources × 13 semaines91 variables · 169 contraintes
400 produits × 40 ressources × 52 semaines20800 variables · 22880 contraintes

Les mêmes 14 lignes dans les deux cas. Les données fixent le nombre de variables et de contraintes. Le modèle ne change pas.

Après la résolution

Les trois produits à plus forte marge ne figurent pas au plan

Un trimestre d'une usine d'électronique de puissance, résolu et prouvé optimal. Le plan ne fabrique aucune des trois familles de produits à plus forte marge unitaire. Le composant que tout le monde accuse d'être le goulet termine le trimestre avec près de la moitié de son stock inutilisé. L'analyse exacte montre pourquoi.

Plan de production du trimestre

22 410 unités · SCIP, optimalité prouvée
  • Onduleur de traction 800 V2 450 € / unité
    0 unités
  • Unité de gestion de batterie1 780 € / unité
    0 unités
  • Module de charge rapide CC1 320 € / unité
    0 unités
  • Onduleur solaire raccordé au réseau960 € / unité
    7 460 unités
  • Variateur industriel740 € / unité
    6 290 unités
  • Boîtier télématique de flotte410 € / unité
    8 660 unités
  • Concentrateur de capteurs260 € / unité
    0 unités
Marge de contribution15 366 800 €

Ce qui s'épuise

  • Heures de ligne CMSsaturé
  • Heures d'étuve de déverminagesaturé
  • Microcontrôleurs automobiles112 570 disponibles
  • Modules de puissance SiCsaturé
  • Heures de test final7 930 disponibles
  • Heures de vernissage3 290 disponibles
  • Contrat de télématique8 660 livrées, 3 500 exigées

Onduleur de traction 800 V : 2 450 € l'unité, et le plan n'en fabrique aucun. Il consomme davantage de chacune des 3 limites épuisées que tout autre produit, alors que 112 570 microcontrôleurs automobiles restent inutilisés, donc en acheter davantage ne changerait rien. JAOT lit ces deux faits dans la solution en nombres entiers elle-même, donc ils valent pour le plan que vous allez exécuter.

Scénarios, mesurés par une nouvelle résolution

Demandez ce que vaut une unité de plus sur une limite. JAOT modifie cette limite, résout le modèle à nouveau et rapporte la différence réelle. Comme il résout lui-même le modèle en nombres entiers, le chiffre est exact. Un prix dual lu sur la relaxation linéaire peut être faux pour un modèle en nombres entiers.

Des décisions groupées comme vous les avez écrites

La solution revient groupée selon les ensembles et les indices de votre modèle. Chaque résolution indique aussi comment elle s'est terminée : au nœud racine, après branchement, ou à la limite de temps.

Explication en un clic

L'assistant traduit l'analyse en mots simples. Il n'utilise que les chiffres de votre résolution.

Quand il n'y a pas de réponse

Il nomme les deux règles qui s'opposent et met les cinq autres hors de cause

Un client commande un trimestre d'onduleurs de traction que la ligne ne peut pas fabriquer. Un solveur répond « irréalisable » et vous laisse vérifier le modèle entier. JAOT retire chaque règle à tour de rôle et résout à nouveau, jusqu'à ce qu'il ne reste que la contradiction. Vous savez ainsi où regarder.

Jusqu'où va chaque limite

7 règles · 2 dans le conflit
  • Heures de ligne CMS 7 700 onduleurshors de cause
  • Heures d'étuve de déverminage 5 240 onduleursen conflit
  • Microcontrôleurs automobiles 7 900 onduleurshors de cause
  • Modules de puissance SiC 6 600 onduleurshors de cause
  • Heures de test final 6 900 onduleurshors de cause
  • Heures de vernissage 6 600 onduleurshors de cause
le contrat en demande 6 000

Il n'y a que heures d'étuve de déverminage pour 5 240 onduleurs, et le contrat en demande 6 000. Les 5 autres limites sont nommées et mises hors de cause. Avec 7 600 de plus, le modèle se résout. C'est le chiffre à apporter au client.

L'ensemble exact du conflit

JAOT isole le plus petit ensemble de contraintes et de bornes qui ne peuvent pas toutes tenir à la fois, et le met en évidence sur la page de résultats.

Comment corriger, en mots simples

Un clic demande à l'assistant de nommer les contraintes en conflit et de proposer une correction : quelle borne élargir, ou quelle limite assouplir.

Il dit quand il estime

Quand un modèle est trop grand pour un ensemble exact, JAOT le dit et marque l'explication comme heuristique.

Choisir un solveur

Le solveur le plus rapide dépend du modèle

JAOT embarque SCIP, HiGHS, CBC, GLPK et JAOS. Le classement change d'un modèle à l'autre, donc JAOT exécute votre problème sur tous, dans les mêmes conditions, et montre ce que chacun a fait. Ci-dessous, un trimestre de chargement des étuves de déverminage de la même usine.

Temps total, échelle logarithmique

1 342 variables, 3 558 contraintes
  • SCIPA prouvé 17 étuves
    10,86 s

    201 nœuds, 73 617 itérations du simplexe

  • HiGHSA prouvé 17 étuves
    1,44 s

    1 nœud, 4 214 itérations du simplexe

  • CBCA prouvé 17 étuves
    1,70 s

    776 nœuds, 16 402 itérations du simplexe

  • GLPKTemps écoulé
    59,92 s

    A prouvé qu'aucun plan n'a besoin de moins de 17 étuves, après 44 838 nœuds, sans jamais trouver de plan

  • JAOSTemps écoulé
    60,05 s

    A prouvé qu'aucun plan n'a besoin de moins de 16,47 étuves, après 1 332 nœuds, sans jamais trouver de plan

L'échelle est logarithmique : chaque pas vaut dix fois le précédent, donc la longueur de la barre n'est pas proportionnelle au nombre affiché à côté.

HiGHS a terminé en premier. SCIP a atteint la même réponse 7,5 fois plus lentement. Sur un autre modèle, l'ordre change, donc la seule façon de choisir est de mesurer.

GLPK et JAOS ont utilisé les 60 secondes en entier et n'ont jamais trouvé de plan. Chacun a tout de même prouvé une borne, affichée sur sa ligne : aucun plan n'a besoin de moins d'étuves que cette borne. Une borne reste utile : elle vous dit à quelle distance du meilleur plan un plan peut se trouver.

Chaque solveur a reçu la même limite de 60 secondes et les mêmes 4 threads, l'un après l'autre sur un serveur de 12 cœurs. Les secondes sont comparables à l'intérieur de cette exécution seulement.

Les mêmes conditions

La même limite de temps, la même tolérance de gap et le même nombre de threads, sur une machine, une exécution à la fois. Deux solveurs lancés en même temps se disputeraient les cœurs, et leurs temps ne seraient plus comparables.

Une matrice entière

Croisez les jeux de données de votre modèle avec les solveurs : les jeux de données en lignes, les solveurs en colonnes. Si vos données changent chaque mois, le solveur le plus rapide peut changer aussi, et la matrice le montre dans un seul tableau.

La borne à côté de la réponse

Chaque ligne montre la meilleure borne prouvée par le solveur, à côté de la réponse qu'il a trouvée. Pour une exécution arrêtée par la limite de temps, l'écart entre les deux vous dit à quelle distance de l'optimum la réponse peut se trouver.

Conçu aussi pour les agents IA

Tout client MCP peut utiliser JAOT : Claude, GPT ou votre propre agent. Il peut construire un modèle, le résoudre, lire l'analyse et publier le résultat, avec les mêmes outils qu'une personne.

1

Découvrir

L'agent trouve JAOT via MCP ou /.well-known/llms.txt

2

S'authentifier

L'agent envoie une clé API

3

Résoudre

Il crée le modèle, règle les paramètres et lance le solveur

4

Résultats

Il lit la solution et l'analyse en JSON

Outils MCP

Résolution de problèmes

  • solve_problem
  • validate_problem
  • solve_multi_objective
  • list_available_solvers

Modèles prédéfinis

  • list_templates
  • get_template
  • solve_with_template

E/S de fichiers

  • import_preview
  • import_and_solve
  • export_model
  • export_execution

Marketplace

  • list_catalog_models
  • get_catalog_model
  • get_catalog_model_schema

Projets de modèle

  • create_model_project
  • create_model_project_from_marketplace
  • update_model_project_draft
  • commit_model_version
  • list_project_versions
  • get_model_stats
  • solve_model_project
  • get_model_project
  • list_model_projects

Exécution

  • execute_model
  • get_execution
  • get_execution_insights

Analyse

  • get_execution_exact_analysis
  • analyze_infeasibility
  • start_execution_scenario_analysis
  • get_execution_scenario_analysis

Comparaison de solveurs

  • compare_solvers
  • get_solver_comparison
  • compare_solvers_on_datasets
  • get_solver_comparison_matrix

34 outils, tous appelables par un agent

Fonctionne avec Claude, GPT et tout client MCP

Qui utilise JAOT

Équipes et entreprises

  • Planifiez tournées, plannings, production ou budgets avec un solveur exact
  • API REST et MCP, pour s'intégrer aux systèmes que vous utilisez déjà
  • Espaces de travail partagés, avec des rôles et une bibliothèque de modèles commune
  • Clés API, permissions par espace de travail et limites de débit

Contributeurs et consultants

  • Publiez vos modèles dans la marketplace
  • D'autres personnes peuvent les dupliquer et bâtir sur votre travail
  • Les modèles sont versionnés, donc une copie pointe vers une version publiée précise
  • Voyez combien de fois chaque modèle a été adopté et exécuté

Étudiants et chercheurs

  • Construisez un modèle avec l'assistant et lisez les mathématiques qu'il produit
  • Des modèles prédéfinis, du premier PL jusqu'au PLNE complet, avec des exemples résolus
  • Cinq solveurs open source que vous pouvez lancer côte à côte sur le même modèle
  • Gratuit et open source, et vous pouvez l'installer sur votre propre machine

Ce que les gens modélisent avec JAOT

Six problèmes courants. Chacun a un modèle prédéfini dans la marketplace, ou l'assistant peut le construire à partir de votre description.

102 modèles dans 34 secteurs

Parcourir la marketplace
  • Finance & Investment5
  • Logistics & Distribution5
  • Human Resources & Workforce4
  • Manufacturing & Production4
  • Aerospace3
  • Agriculture & Farming3
  • Chemical Engineering3
  • Construction3
  • Cutting & Packing3
  • Energy & Utilities3
  • Facility Location3
  • Food & Beverage3
  • Forestry3
  • General Purpose3
  • Government3
  • Healthcare & Nutrition3
  • Maritime3
  • Mining3
  • Network & Graph Optimization3
  • Pharmaceutical3
  • Railway3
  • Real Estate3
  • Retail & Commerce3
  • Supply Chain Management3
  • Telecommunications3
  • Transportation & Logistics3
  • Warehouse3
  • Water Management3
  • Advertising & Media2
  • Education & Academic2
  • Environmental & Sustainability2
  • Insurance2
  • Sports & Recreation2
  • Textile2

Tournées de véhicules

Un transporteur livre 50 adresses avec 8 camions. Le modèle choisit l'ordre des arrêts de chaque camion pour que la distance totale soit la plus courte possible, dans la limite de la capacité de chaque camion et des créneaux de livraison.

Depuis la marketplace

Planification du personnel

Un hôpital affecte 120 infirmiers à trois postes. Le modèle respecte les disponibilités de chaque infirmier, les règles de repos entre deux postes et l'effectif minimal par poste.

Construit avec l'IA

Allocation de budget

Une équipe marketing répartit 2 M€ entre 12 canaux. Le modèle place l'argent là où le retour attendu par euro est le plus élevé, avec un minimum et un maximum par canal.

Construit avec l'IA

Planification de production

Une usine planifie une semaine de production sur 5 lignes. Le modèle décide ce que chaque ligne fabrique et quand, dans la limite des matières, de la main-d'œuvre et des heures machine disponibles.

Depuis la marketplace

Réseau d'approvisionnement

Un détaillant choisit où ouvrir des entrepôts pour desservir 200 magasins. Le modèle met en balance le coût fixe de chaque site et le coût de transport vers chaque magasin.

Depuis la marketplace

Affectation de ressources

Un cabinet de conseil affecte 80 consultants à 25 projets. Le modèle fait correspondre les compétences aux besoins de chaque projet et garde chaque consultant dans ses heures disponibles.

Construit avec l'IA

Comment ça marche

Choisissez un point de départ

Choisissez l'un des 100+ modèles prédéfinis, dupliquez un modèle de la marketplace, importez un fichier MPS, LP ou JSON, ou décrivez le problème à l'assistant.

Construisez le modèle dans le studio

Écrivez-le en JModel, ou placez variables et contraintes sur le canevas visuel. Chargez vos données dans l'onglet Données. JAOT affiche les mathématiques correspondantes au fur et à mesure.

Résolvez et lisez l'analyse

Lancez un solveur, ou comparez les cinq sur le même modèle. Lisez ensuite quelles contraintes sont saturées, ce que vaut une unité de plus, et exportez la solution.

Commencez à optimiser

Gratuit et open source. Créez un compte et résolvez un premier modèle aujourd'hui, ou installez toute la plateforme sur votre propre serveur.