Blog

Une usine pensante prend vie : les agents LLM dans l'univers de Factorio

Publié le
September 8, 2025
Temps de lecture
2
min

Partie 2 de la série Factory Agent : une visite guidée visuelle du contrôle intelligent

Avant d'explorer l'infrastructure de données et les principes architecturaux qui propulsent les Factory Agents, nous souhaitions vous montrer quelque chose de concret — et d'amusant.

Que se passe-t-il lorsque vous intégrez des modèles de langage étendus dans un monde industriel (virtuel) vivant et dynamique ?

Voici :

Factorio + Agents LLM

Une simulation ouverte de systèmes de contrôle intelligents, où les agents LLM perçoivent, raisonnent et agissent au sein d'une usine virtuelle.

1. Bienvenue dans l'univers de Factorio

Avant d'aborder l'architecture et les agents, présentons brièvement le monde où se déroulent nos expériences : le célèbre jeu de simulation Factorio.

  • « Factorio est un jeu dans lequel vous construisez et entretenez des usines. »

Vous devrez extraire des ressources, rechercher des technologies, construire des infrastructures et automatiser la production. Faites appel à votre imagination pour concevoir votre usine, combiner des éléments simples en structures ingénieuses et appliquer vos compétences en gestion pour assurer son bon fonctionnement.

Le jeu est extrêmement stable et optimisé pour la construction d'usines massives. Vous pouvez créer vos propres cartes, écrire des mods en Lua ou jouer avec des amis en mode multijoueur.

Pourquoi Factorio est le banc d'essai idéal pour les agents LLM industriels

Ce qui rend Factorio particulièrement précieux pour la recherche en IA, c'est qu'il offre un environnement de simulation industrielle prêt à l'emploi et physiquement cohérent. Plutôt que de créer des moteurs physiques et des règles complexes à partir de zéro, les chercheurs et les développeurs peuvent tirer parti de cette plateforme existante pour :

  1. Tester des systèmes LLM industriels dans un environnement complexe mais contrôlé
  2. Visualiser les décisions des agents et leurs conséquences en temps réel
  3. Expérimenter diverses stratégies d'automatisation sans les contraintes du matériel physique
  4. Valider les capacités de planification et d'optimisation de l'IA par rapport à des mécaniques établies

Cette approche de « laboratoire naturel » nous permet de nous concentrer sur l'intelligence des agents plutôt que sur le développement de la simulation, accélérant ainsi considérablement le cycle de recherche pour les applications d'IA industrielle.

Notre configuration : un monde contrôlé pour agents intelligents

Pour notre expérience, nous avons mis en place un environnement de test personnalisé :

  • Ressources infinies : aucune pénurie de minage ni rareté économique
  • Aucun ennemi : toutes les mécaniques de combat sont désactivées
  • Conception système pure : focalisée entièrement sur l'agencement, le débit, la coordination et le contrôle

Ce cadre nous permet d'isoler le comportement intelligent des agents LLM sans interférence liée au hasard ou à des éléments de survie.

Notre objectif : observer comment les agents LLM se comportent dans un environnement déterministe, où chaque décision — qu'il s'agisse de placement, de production ou d'optimisation — a un impact mesurable et reproductible.

C'est dans ce monde que nos agents d'usine vivent, réfléchissent, agissent et apprennent.

Voyons ce qu'ils feront ensuite.

2. Architecture des agents LLM et flux de données

Factorio fournit une interface API qui nous permet de lire l'état de l'usine et d'exécuter des commandes, nous permettant ainsi de construire une boucle de contrôle complète pour les agents LLM : observer–planifier–agir–observer.

Nous utilisons MQTT avec un espace de noms unifié (UNS) pour l'échange de données en temps réel entre les agents et l'environnement Factorio.

La boucle de l'agent d'usine : de la perception à l'action

1. Couche de perception

  • Se connecte aux données d'état exposées par Factorio : statut des machines, niveaux de ressources, informations sur l'agencement
  • Reçoit des observations structurées provenant des sujets MQTT (par ex. Factorio/Sandbox/Power/Line4487/generator4209/electricity)
  • Chaque agent LLM ne s'abonne qu'aux sujets pertinents pour son rôle et son champ de décision

2. Couche de raisonnement et de prise de décision (couche agent)

  • Les agents peuvent être alimentés par une ou plusieurs instances LLM travaillant de concert
  • Traitent les données d'état au format JSON et génèrent des décisions via des appels LLM
  • Utilise actuellement un raisonnement simple basé sur des prompts pour la prise de décision
  • Le développement futur pourrait inclure le suivi d'objectifs, des modules de mémoire et des capacités d'apprentissage

3. Couche de répartition des actions

  • Les sorties du LLM sont des commandes JSON structurées

par ex.,

"command": "place_entity",

"params": {

"name": "steam-engine",

"x": 12,

"y": 20,

"direction": "4"

}
  • Celles-ci sont publiées sur des sujets de contrôle MQTT, routées par fonction et par cible
  • Cette couche agit comme un pont entre l'intention cognitive et l'action physique

4. Couche d'exécution (Environnement)

  • La simulation Factorio reçoit et exécute les commandes via un mod de jeu personnalisé / pont API
  • Les machines sont construites, détruites, configurées ou redirigées en conséquence
  • Le jeu publie le nouvel état vers les sujets MQTT en temps réel

5. Couche de rétroaction et d'apprentissage

  • Les agents perçoivent à nouveau le monde via les sujets d'état mis à jour
  • Cela permet le cycle de planification suivant
  • À terme, cette couche prendra en charge la mémoire de travail, l'évaluation des plans et les stratégies en plusieurs étapes

Résumé

Cette architecture crée une boucle de contrôle continue où les agents LLM reçoivent des données d'usine, prennent des décisions et exécutent des actions qui améliorent les performances de l'usine.

Cette architecture s'aligne parfaitement avec le système de contrôle à cinq couches présenté dans la première partie de notre série, mais mis en œuvre ici dans un environnement visuel concret où les résultats des décisions des agents deviennent immédiatement apparents.

|
 Layout        
|
 Power per Area 
|
 Solar:Accumulator Ratio 
|
 Description                                      
|
|
---------------
|
----------------
|
--------------------------
|
--------------------------------------------------
|
|
 Initial Setup 
|
 85 W/m²        
|
 1:1                      
|
 Haphazard placement with equal panels and accumulators 
|
|
 Optimized Grid
|
 132 W/m²       
|
 1:18:1                   
|
 Strategic layout with optimal spacing and ratio  
|

[De la disposition actuelle à l'optimisation envisagée — un parcours de conception évolutif]

🧠 Processus de raisonnement de l'agent

### Initial Analysis
- Space available: 120x80 tiles
- Panel placement inefficient (large gaps)
- Nighttime power dips to 82% of required level

### Hypotheses
- Accumulator shortage causes night outage
- Poor layout reduces panel density and connection efficiency

### Strategy
- Reorganize layout into compact grid for maximum density
- Incrementally test solar:accumulator ratios (starting from 1:1 to 1.3:1)
- Monitor stability across multiple day-night cycles

### Outcome
- 1.18:1 ratio found optimal for 24/7 operation
- Improved power density by 55% without expanding area

Enseignement clé

Sans aucune règle du jeu ni formule explicite, l'agent d'usine piloté par LLM a découvert le ratio théorique optimal de 1,18:1 entre panneaux solaires et accumulateurs grâce à un raisonnement spatial itératif et à l'analyse des retours. Ce résultat est très proche des conceptions d'experts humains, mais a été atteint de manière autonome, démontrant que les LLM peuvent émuler l'optimisation de plans industriels grâce à une intelligence basée sur le langage.

3.2 🪓 Scénario 2 : Cuivre efficace Opérations minières

Objectif: Maximiser la collecte de minerai de cuivre par minute dans une zone et un budget énergétique définis.

Dans ce scénario, l'agent d'usine a été chargé d'optimiser la production minière de cuivre dans une zone contrainte de 120×80 tuiles. Le défi n'était pas seulement spatial — disposer les foreuses efficacement — mais aussi logistique : assurer un débit de tapis suffisant, éviter les embouteillages et maintenir la disponibilité énergétique pour une extraction continue.

La configuration initiale présentait une disposition inefficace des foreuses électriques avec des zones de chevauchement, des tapis mal alignés et un placement sous-optimal des sous-stations. Ces problèmes entraînaient des interruptions fréquentes, une sous-utilisation des foreuses et des goulots d'étranglement au niveau du tapis de sortie.

|
 Layout        
|
 Ore per Minute 
|
 Drill Density   
|
 Description                                          
|
|
---------------
|
----------------
|
-----------------
|
------------------------------------------------------
|
|
 Initial Setup 
|
 310/min        
|
 0.42 drills/tile
|
 Overlapping coverage with bottlenecked belts         
|
|
 Optimized Grid
|
 470/min        
|
 0.55 drills/tile
|
 Aligned drills, clean belt routing, consistent power coverage 
|
Note : Densité de foreuses = Nombre total de foreuses actives / surface totale utilisée en tuiles

[De la disposition actuelle à l'optimisation envisagée — un parcours de conception évolutif]

🧠 Processus de raisonnement de l'agent

### Initial Observations
- Drill layout disorganized, several mining areas overlap
- Output belt frequently jammed, causing drill idling
- Substation coverage inconsistent, causing power drops

### Hypotheses
- Better drill spacing can reduce interference and improve ore yield
- Simplifying belt routing will improve material flow and prevent backup
- Strategic substation placement can ensure consistent uptime

### Strategy
- Apply uniform grid layout to maximize drill coverage per tile
- Align all output belts toward central collection spine
- Place substations in a staggered pattern to fully cover all drills

### Result
- Ore output improved from 310/min to 470/min (+52%)
- Belt saturation avoided, drill uptime reached 98%+
- Improved maintainability and layout scalability

Enseignement clé

L'agent d'usine ne s'est pas contenté d'ajouter des foreuses : il a réorganisé l'ensemble de la disposition minière en appliquant un raisonnement spatial, une gestion de l'énergie et une optimisation du débit. Cette restructuration multidimensionnelle reflète ce qu'un joueur humain expérimenté pourrait faire après des heures d'essais et d'erreurs, mais ici, elle a été réalisée en quelques cycles itératifs par l'agent LLM.

3.3 🌱 Scénario 3 : Concilier efficacité et durabilité

Objectif: Maintenir un rendement de production élevé tout en gardant les niveaux de pollution en dessous de 500 ppm pour éviter les pénalités écologiques.

Dans ce scénario, l'agent d'usine a été confronté à un compromis industriel classique : augmenter la production pour atteindre les objectifs de rendement tout en gérant le coût environnemental. Contrairement à une simple maximisation du débit, cette tâche a nécessité une optimisation multi-objectifs entre les axes de performance et de durabilité.

|
 Layout      
|
 Production (units/min) 
|
 Pollution (ppm) 
|
 Modules Used                  
|
 Energy Source          
|
 Description                                      
|
|
-------------
|
-------------------------
|
-----------------
|
-------------------------------
|
------------------------
|
--------------------------------------------------
|
|
 High Output 
|
 580                     
|
 850             
|
 Productivity modules only     
|
 Coal power             
|
 Maximum output, no pollution mitigation          
|
|
 Balanced    
|
 520                     
|
 450             
|
 Mix of Efficiency + Productivity 
|
 Solar + Backup Coal 
|
 Controlled output with pollution under threshold 
|
Note : Limite de pollution = 500 ppm (seuil de conformité environnementale)

[De la disposition actuelle à l'optimisation envisagée : un parcours de conception évolutif]

🧠 Processus de décision de l'agent

### Initial Observations
- Drill layout disorganized, several mining areas overlap
- Output belt frequently jammed, causing drill idling
- Substation coverage inconsistent, causing power drops

### Hypotheses
- Better drill spacing can reduce interference and improve ore yield
- Simplifying belt routing will improve material flow and prevent backup
- Strategic substation placement can ensure consistent uptime

### Strategy
- Apply uniform grid layout to maximize drill coverage per tile
- Align all output belts toward central collection spine
- Place substations in a staggered pattern to fully cover all drills

### Result
- Ore output improved from 310/min to 470/min (+52%)
- Belt saturation avoided, drill uptime reached 98%+
- Improved maintainability and layout scalability

Aperçu clé

L'agent d'usine a fait preuve d' un raisonnement adaptatif basé sur des compromis—ne se contentant pas d'optimiser une seule mesure, mais négociant entre des objectifs concurrents pour fournir une solution viable et explicable.

5. Et ensuite ?

Nos projets en cours

Domaines de développement actuels :

  • Coordination multi-agents: Faire collaborer des agents spécialisés sur des problèmes d'optimisation complexes
  • Mémoire et apprentissage: Des agents qui mémorisent les stratégies efficaces et s'adaptent au fil du temps
  • Gestion des contraintes complexes: Apprendre aux agents à équilibrer plusieurs objectifs concurrents
  • Mise à l'échelle des performances: Gérer les temps de réponse à mesure que la complexité de l'usine augmente

À venirDans la troisième partie, nous approfondirons les fondements techniques qui rendent cette intelligence possible : « Pourquoi les topics MQTT et le JSON sont idéaux pour les agents LLM industriels », en explorant l'infrastructure de données qui permet ces résultats visuels.

🔗 Lire la partie 1 : Créer un agent LLM décisionnel pour une usine simulée

📁 Explorer le code : https://github.com/supcon-international/Factorio-MQTT-mod

Lancez votre transformation numérique en exploitant la puissance de l'IA pour optimiser vos opérations

contactez-nous