Optimisation

Modèles de décision où Catnip porte les données métier, les scénarios et l'explication du résultat, tandis qu'un solveur Python traite la formulation numérique.

Pourquoi cette catégorie

Une optimisation utile ne se résume pas à appeler un solveur : il faut nommer les variables, construire les contraintes, interpréter les statuts et vérifier que la solution respecte encore le problème métier. Les structs et unions Catnip gardent cette couche explicite autour des tableaux transmis à SciPy.

Exemples

Fichier Modules Description
production_planning_milp.cat scipy, numpy, matplotlib Mix de production entier, heures supplémentaires binaires et scénarios

Exécution

catnip codex/optimization/production_planning_milp.cat

L'exemple maximise la marge de trois produits sous contraintes de temps machine, de travail et de matière. Une variable binaire décide s'il faut acheter un lot d'heures supplémentaires. Les trois scénarios utilisent le même modèle Catnip ; la figure compare leurs quantités et leurs taux d'utilisation.

SciPy formule milp comme une minimisation avec bornes, contraintes linéaires et indices de variables entières. Le programme nie donc les marges pour maximiser le résultat, puis recalcule indépendamment l'intégralité, les capacités et l'objectif de la solution. Voir la référence officielle de scipy.optimize.milp.

La figure est écrite dans codex/optimization/output/ (backend Matplotlib sans fenêtre), puis — sans --no-browser — ouverte dans le navigateur via http.serve() (port local libre, une requête, puis arrêt). --no-browser s'en tient au PNG, pour les environnements headless.