• Aucun résultat trouvé

Emil: un logiciel pour l’étude de la filière lait

N/A
N/A
Protected

Academic year: 2021

Partager "Emil: un logiciel pour l’étude de la filière lait"

Copied!
23
0
0

Texte intégral

(1)

HAL Id: hal-01937081

https://hal.archives-ouvertes.fr/hal-01937081

Submitted on 27 Nov 2018

HAL is a multi-disciplinary open access archive for the deposit and dissemination of sci-entific research documents, whether they are pub-lished or not. The documents may come from teaching and research institutions in France or abroad, or from public or private research centers.

L’archive ouverte pluridisciplinaire HAL, est destinée au dépôt et à la diffusion de documents scientifiques de niveau recherche, publiés ou non, émanant des établissements d’enseignement et de recherche français ou étrangers, des laboratoires publics ou privés.

Distributed under a Creative Commons Attribution - NonCommercial - NoDerivatives| 4.0 International License

Emil: un logiciel pour l’étude de la filière lait

Jean-Claude Poupa

To cite this version:

Jean-Claude Poupa. Emil: un logiciel pour l’étude de la filière lait. [Rapport de recherche] INRA. 1985, 20p. �hal-01937081�

(2)

î

\

-J .C. POUPA

UN LCXiICIEL POUR L'ETUDE DE LA FILIERE LAIT EMIL

Octobre 1985

INSTITUT NATIONAL DE LA RECHERCHE AGRONOMIQUE

STATION o·~cONOMIE ET DE SOCIOLOGIE RURALES DE RENNES 65, rue de Saint- Brieuc - 35042 RENNES CEDEX

(3)

1

-RESUME

Ce document décrit une application informatique liée

à une recherche sur la filière lait. Il présente le cheminement qui va de la formalisation des algorithmes à la réalisation d'un produit final opérationnel, et illustre une démarche centrée sur les méthodes de la programmation structurée. Les notions de com-plexité, de faisabilité et d'optimisation des algorithmes sont abordées depuis les étapes conceptuelles jusqu'aux ultimes choix de programmation réalisés au cours de la phase finale de mise au point. MOTS-CLES 21 pages. informatique simulation génie logiciel

complexité des algorithmes analyse numérique

(4)

SONMAIRB

1. Description du modèle

11. Nature des variables 12. Fonctionnement du modèle 13. La fonction d'objectif 2. Les 1I1éthodes numériques

21. Calcul de la probabilité d'attente 22. Les calculs aux limites

23. Estimation de la demande dans la phase d'initialisa-tion du modèle

3. La structuration des données 31. Les fichiers

311. Les fichiers de données

312. Le fichier de sauvegarde du modèle 32. La liste interne

321. La liste chatnée des segments 322. Exemple

33. Les autres variables communes 4. Le logiciel

41. Les primitives fondamentales

411. Les gestionnaires de liste: chercher, insérer, supprimer

412. La fonction probabilité d'attente: F

42. Les programmes utilitaires référencés par les com-mandes

421. La fonction "taux d'utilisation des équipe-ments" : tauduti

422. La procédure de simulation des transferts alliance

423. La procédure de recherche de la meilleure alliance pour un segment : transfert 43. Les commandes

431. L'initialisation du modèle 432. La simulation

433. Les ~ditions intermédiaires 44. Diagramme synoptique

5. La mise en oeuvre du modèle 51. Installation

52. Evaluation des coûts d'exécution complexité des algorithmes

53. Optimisation

54. Préparation des données

55. Appel du logiciel et enchatnement des commandes 56. Exemple d'utilisation

(5)

Un logiciel pour l'ftude de la filiêre lait: DII.

J. C. POUPA

3.

octobre 1985

Le logiciel EMIL (Etude des Marchés de l'Industrie

Laitière) a été réalisé à la demande et sous la responsabilité

scientifique de

c.

BROUSSOLLE pour étudier les filières de

produc-tion, de transformation et de commercialisation des produits agri-coles, et plus particulièrement des produits laitiers. L'analyse informatique du problème posé a été réalisée en collaboration avec

11 équipe scientifique du Centre Interuniversi taire de Calcul de

Bretagne, qui avait proposé une première série de programmes. Les coûts d'exécution étant prohibitifs, il m'a été demandé de

conce-voir un algorithme beaucoup plus économique. L'objet de ce

docu-ment est de présenter les méthodes numériques et informatiques retenues.

Le chapitre 1 présente le problème posé (1). Le chapitre 2 décrit les méthodes numériques retenues. Les aspects informati-ques sont abordés de façon détaillée dans les deux chapitres sui-vants. Le dernier chapitre illustre la mise en oeuvre du modèle, depuis son installation jusqu'à l'exploitation en fournissant un certain nombre d'éléments pour évaluer et mattriser les coûts d'exécution.

1. Deac:ription clu aocllle 11. Nature des variables

Dans le modèle proposé, l'unité étudiée est une quantité de produit fini, livrée sur un marché et fabriquée dans une usine

d'une entreprise à partir d'une matière première en provenance

d'une zone de collecte. Cette unité est appelée segment et décrite par cinq champs : nature du produit, usine, entreprise, marché, zone de collecte. Elle est produite dans des installations de capacités fixes, une usine disposant d'un nombre entier de telles installations.

(1)

c.

BROUSSOLLE, Concurrence spatiale en univers aléatoire : le

cas de l'industrie laitière et de ses marchés. ln Revue d'Eco-nomie Politique, numéro 1, 1983.

(6)

La production associée à un segment répond à une demande aléatoire, et ceci dans un délai donné. La capacité de production est telle que la probabilité de n-on satisfaction de la demande est inférieure à un seuil donné, ce qui se traduit par une surcapacité de production. Le rapport demande/capacité totale, ou taux d'uti-lisation des équipements, traduit cette différence relative. L'offre s'adapte à la demande par ajout d'une ou plusieurs instal-lations.

A chaque segment sont associés des éléments de cofits unitaires: collecte, production, livraison. Le coût total associé

à chaque segment est le produit coût unitaire total x capacité de production x nombre d'installations. Le coût global est la somme de ces coûts élémentaires. C'est la fonction d'objectif du modèle.

12. Fonctionnement du modèle

A l'état initial, on dispose d'un ensemble de segments. Chaque segment mobilise une ou plusieurs installations pour répon-dre à la demande dans les conditions requises. A cet état est associé un coût global initial, ou valeur initiale de la fonction d'objectif. Pour faire décrottre cette fonction d'objectif, le modèle simule des transferts de production d'un segment vers un autre. Avec un ensemble den segments, le transfert de la

produc-tion d'un segment s peut s'effectuer vers un segment t choisi parmi les (n-1) segments restants. Le segment t retenu est celui qui optimise la fonction d'objectif. A chaque segment est ainsi associée une stratégie de transfert de production et toutes les stratégies (n au total) sont comparées.

13. La fonction d'objectif

Soit la stratégie de transfert de production du segment I vers le segment J. L'espérance mathématique de la nouvelle demande associée à J est égale à la somme des espérances mathéma-tiques des demandes initiales de I et J. Il faut calculer le nombre d'installations de type J tel que la probabilité de non satisfaction de cette nouvelle demande soit inférieure ou égale au seuil choisi.

(7)

5

-Cette probabilité s'exprime par la fonction F sui-vante F(n t ur T t d) • a

=

u p 0 avec u • e - nd(l - 1¼') dans laquelle avec • n • d • 1i' • u

désigne le nombre d'installations une durée en jours

le taux d'utilisation des équipements, compris entre O et 1,

la probabilité qu'il y ait une attente d'une durée quelconque,

la probabilité qu'il y ait une attente supérieure à d.

Le facteur Po s'exprime par la relation

Po

=

g n-1 k

I

(n 1i' ) + g k! k=O (n 1i' ) n g

=

n! (1-1½')

Le nombre d'installations n du nouveau segment J est le plus petit entier vérifiant la relation F (n, 1i', d) < Cl et tel que la quantité produite soit supérieure ou égale à la demande. On en déduit le coût de production associé à J puis la nouvelle valeur de la fonction d'objectif dans l'hypothèse où la stratégie de transfert serait effectivement réalisée.

2. Les Éthodes uu.riques

21. Calcul du nombre d'installations

La probabilité de non satisfaction de la demande est le produit des deux probabilités notées u et Po• Elle doit être inférieure au seuil Cl • L'algorithme part d'un nombre minimum d'installations qu'il augmente éventuellement jusqu'à satisfaire la contrainte précédente. Si la durée d est importante, le facteur n est fréquemment inférieur au seuil et les calculs sont immédia-tement terminés.

(8)

Le calcul de Po est complexe et son coût crott avec le nombre d'installations n. De plus les opérandes atteignent très rapide-ment les limites maximales des grandeurs réelles manipulées par les opérateurs arithmétiques des calculateurs. Sous le système multics, ce débordement s'effectue dans le calcul de nnavec n • 27

et dans celui de n! avec n

=

34 (les valeurs sont alors supé-rieures à 2 puissance 127). Le passage à la limite pose problème, d'autant plus que le taux d'utilisation '!1 tend vers 1 lorsque n crott. La méthode numérique d'approximation retenue est décrite ci-dessous.

22. Les calculsaux limites

Lorsque la probabilité Po ne peut être calculée, la fonction F rend une valeur négative. La stratégie d'alliance est alors réexaminée en faisant l'hypothèse que la production s'effec-tue dans des installations de capacités doubles. En cas de nouvel échec, le même algorithme s'applique de façon récursive jusqu'à ce que la fonction F rende une probabilité. Soit L cette fonction de calcul aux limites. Elle s'écrit:

L(n)

=

si F (n/2, 'l' , d) < 0 alors L(n/2)

sinon F (n/2, '!1 , d)

23. Estimation de la demande dans la phase d'initialisation du modèle

On suppose au départ que la capacité réelle de produc-tion est adaptée à la demande exprimée. Pour calculer la valeur de cette demande, le modèle résoud l'équation

F (n, '!1 , d)

=

a

n, d et a étant donnés, la fonction -P('!1 ) est monotone, décrois-sante sur son intervalle de définition (0, 1). Une utilisation à pleine capacité ('!1 ~ 1) génère une probalité d'attente maximale. Cependant si '!1 • 1, 11 est impossible de calculer F. Le modèle calcule la limite de F lorsque '!1 tend vers 1. Si cette limite est inférieure à a, l'équation n'a pas de solution réelle. La demande est alors considérée comme égale à la capacité de production. Dans le cas contraire, la solution est recherchée par dichotomie sur l'intervalle de définition et la demande est déduite du taux d'utilisation ainsi calculé.

(9)

- 7

-Lorsque le calcul de Fest impossible, un code d'erreur est retourné. Cette occurrence ne survenant que pour un nombre d'installations important, le modèle n'est pas initialisé dans ses conditions, ce choix étant justifié par la nécessité de réduire la complexité des calculs.

3. La at:ructuration 4lea 40IIDEes

31. Les fichiers

Le modèle accède à des fichiers de deux types: fichiers ' textes consul tables sous un éditeur, fichiers sequentiels conte

-nant le modèle initialisé. Des éditions intermédiaires dans des fichiers textes peuvent être réalisées en cours d'éxécution.

311. Les fichiers de données

Les caractéristiques de chaque segment sont saisies en format libre, chaque variable étant clairement séparée de la suivante par au moins un blanc.

Les variables sont rangées dans l'ordre suivant

Nombre de

variables Type Sémantique

5 1 à 4 caractères Descripteur

l décimal Capacité de production

1 entier Nombre d'unités

1 décimal Durée de production

3 décimal Elément de coût unitairE

Ces 11 variables doivent impérativement être présentes. Les unités seront choisies de telle sorte que les capacités comme les coûts puissent être codés avec un maximum de 9 chiffres. Le

non respect de cette régle rendrait impossible la sortie des résultats.

(10)

312. Le fichier de sauvegarde du modèle

Ce fichier séquentiel n'est consul table que par pro-gramme. Les données numériques sont codées sous forme binaire, fixe ou flottante, avec une précision maximale. Un enregistrement est relatif â un segment et contient, en plus des 11 variables précédentes

le coût unitaire total,

- l'espérance mathématique de la demande, le taux d'utilisation des équipements,

et dans l'hypothèse d'un transfert de production, - le numéro du segment récepteur,

- le nombre d'installations résultant, - le taux d'utilisation correspondant, - le coût global associé,

- un pointeur sur la stratégie de transfert précédente, - un pointeur sur la stratégie de transfert suivante. Les segments sont numérotés dans l'ordre du fichier de saisie et cette numérotation reste invariante. La meilleure stra-tégie est celle qui est précédée par la valeur fictive

o.

Si N est le nombre réel de segments, la plus mauvaise stratégie est suivie de la valeur fictive N + 1.

Cet ensemble d'informations est suffisant pour reconsti-tuer la liste interne utilisée par le modèle pour conduire la simulation et éditer les résultats intermédiaires. Les pointeurs avant et arrière ne sont utilisés que pour initialiser la liste interne décrite ci-dessous.

32. La liste interne

Cette liste contient le plan de classement des straté-gies de transfert et constitue la clé de voûte du système informa-tique de pilotage du modèle.

321. Description de la liste chaînée des segments

Il s'agit d'une table à trois champs, indicée par le numéro d'ordre du segment. Ces trois champs sont

- la valeur de la fonction d'objectif,

- un pointeur sur une valeur immédiatement inférieure ou égale,

- un pointeur sur une valeur immédiatement supérieure ou égale.

(11)

9

-La table contient en sus deux segments fictifs, minorant et majorant de la fonction d'objectif, et qui de ce fait consti-tuent la tête de liste et la queue de liste. Le chatnage des stra-tégies est reconstitué par lecture du fichier de sauvegarde. La

table peut alors être parcourue en avant ou en arriêre, à partir de n'importe quel point d'entrée. La recherche s'effectue à l'aide de primitives spécialisées qui travaillent uniquement sur cette liste.

323. Exemple

La table ci-dessous est un exemple pour un ensemble de 10 segments:

1

valeur suivant précédent

premier 0 - 1000 4 - 1 1 178 6 9 2 285 3 8 3 325 11 2 4 48 7 0 5 172 9 10 6 199 8 1 7 89 10 4

a

·

227 2 6 9 173 1 5 10 112 5 7 dernier 11

+

1000 - 1 3

La stratégie la meilleure consiste à transférer le segment numéro 4, suivant du segment fictif numéro

o.

La stratégie la plus mauvaise est celle qui précêde le segment fictif numéro 11, c'est-à-dire le transfert du segment numéro 3, lui-même pré-cédé par le transfert du segment numéro 2, etc ••••

(12)

33. Les autres variables communes

Les valeurs utilisées dans les calculs sont sauvegardées dans deux tables indicées par les numéros de segments donc en correspondance avec la liste précédente.

La première table contient les 11 variables de base. La

seconde table contient les autres variables contenues dans le fichier de sauvegarde. D'autres variables communes contiennent les paramètres généraux du modèle, des paramètres d'état et des

pointeurs. Ces ~éclarations sont regroupées dans des

macroinstructions (commun et paramètre).

4. Le logiciel

Ce logiciel est piloté par un programme de supervision (emil) unique qui alloue les ressources communes, effectue les initialisations puis enchaine les commandes. A chaque commande est associée une procèdure externe indépendante. Ces procédures sous-traitent elles-mêmes certaines fonctions spécifiques. Dans ce chapitre, les différents niveaux sont présentés en partant de la couche la plus interne pour remonter vers l'interface utilisateur. Le schéma synoptique final illustre l'enchainement des appels de procédures.

41. Les primitives fondamentales

411. Les gestionnaires de listes supprimer

chercher, insérer,

La procédure supprimer rompt un maillon de la chaine, qui ~evient inaccesible (les point-eurs avant et arrière sont forcés à une valeur négative) et reconstitue le chainage.

La procédure chercher positionne une valeur de la fonction d'objectif en rendant l'indice de la valeur immédiatement supérieure ou égale. La recherche s'effectue à partir du point d'entrée fourni, par appels des procédures récursives internes avancer (recherche avant) ou reculer (recherche arrière).

La procédure insérer réalise l'insertion maillon à un emplacement libre et reconstitue le fonction des informations rendues par_ chercher.

d'un nouveau chainage en

Ces 3 primitives sont indépendantes du modèle. Elles sont accessibles depuis les procédures de pilotage des commandes.

(13)

- 11

-412. La fonction "probabilid d'attente" : F

La fonction F rend une probabilité ou le code - 1 en cas de débordement. Une variable de messagerie précise si le calcul doit être effectué complètement ou s' 11 suffit d'examiner si la probabilité est inférieure à un seuil donné. Les factorielles sont précalculées à 11 initialisation du modèle pour réduire les coûts

d'exécution. L'ordre d'évaluation des opérandes est déterminé de telle sorte que la sortie s'effectue le plus rapidement possible. Si le nombre d'installations dépasse une valeur limite associée au modèle et si le facteur Po doit être calculé, un débordement ~st immédiatement simulé. La division par zéro est exclue, un taux d'utilisation égal à l'unité étant remplacé par une valeur très proche liée au seuil de précision.

Cette fonction est référencée pour calculer le taux d'utilisation des équipements (procédure tauduti) puis pour simu-ler les transferts de productions (procédure alliance).

Le programme de mise au point attente permet d'évaluer des probabilités d'attente indépendamment du modèle général.

42. Les programmes utilitaires référencés par les commandes 421. La fonction "taux d'utilisation des équipements"

tauduti

Cette fonction applique l'algorithme d'évaluation du taux d'utilisation des équipements, décrit plus haut et utilisé pour estimer la valeur de la demande aléatoire associée à la capacité de production effectivement mise en oeuvre. Elle est référencée à l'initialisation du modèle par la commande créer.

Le taux réel d'utilisation varie entre les valeurs O et ( l - epsi), epsi .étant un .seuil de précision associé au modèle. Cette précision est motivée par le fait que le calcul de la · proba-lité d'attente est impossible avec un taux d'utilisation rigoureu-sement égal à l'unité. Si le calcul ne peut être effectué suite â

un débordement dans l'évaluation de la probabilité d'attente, le code d'erreur - 1 est rendu au programme appelant. Si la probabi-lité d'attente avec le taux maximum est inférieure au seuil de probabilité retenu (5 pour cent dans cette version), la valeur (1 - epsi) est retournée. Pour les autres cas, la solution est recherchée par dichotomie avec la précision epsi.

Le programme de mise au point taux permet d'évaluer cette fonction independamment du modèle général.

(14)

422. La procédure de simulation des transferts alliance

Cette procédure simule le transfert d'un segment I vers un segment J e t rend le nombre d'installations résultant ainsi que la nouvelle valeur de la fonction d'objectif, qui permettra au programme appelant de comparer cette stratégie avec les précé-dentes.

L'algorithme démarre sur la base du nombre minimum d'installations nécéssaire pour absorber la demande. Il augmente éventuellement ce nombre jusqu'à ce que la probabilité d'attente soit inférieure au seuil retenu. S'il reçoit un code d'erreur de la fonction F, i l applique l'algorithme de calcul aux limites décrit plus haut en appelant la fonction recursive interne dou-b1er, qui considère des unités fictives de capacité double pour calculer la probabilité d'attente. Dans un souci d'optimisation le calcul n'est effectué que pour les nombres pairs afin d'éviter deux appels identiques à la fonction F.

Lorsque la fonction doubler reçoit le code d'erreur de la fonction F, elle s'appelle elle-même, si bien q'une solution peut être trouvée quel que soit le nombre d'installations nécessaires.

La procédure alliance est appelée directement par les commandes créer, modifier et simuler ainsi que par la procédure transfert. Elle reçoit en paramètre une valeur de fonction d'objectif de référence et la simulation du transfert sera effectuée seulement si cette valeur peut-être réduite. Dans le cas contraire, la fonction F n'est pas référencée ce qui se traduit par une réduction importante des coûts de calcul.

423. La procédure de recherche de la meilleure alliance pour un segment transfert

Sur un ensemble de n segments, la procédure transfert simule les transferts de la production d'un segment I donné vers les (n - 1) autres segments et sélectionne la meilleure stratégie. Si deux stratégies sont équivalentes, c'est la première testée qui est retenue. Les tables communes utilisées par les programmes associés aux commandes sont mises à jour. La procédure est réfé-rencée par les commandes créer, modifier et simuler.

(15)

13

-La première alliance testée est celle qui se réalise au profit du segment situé en queue de la liste des stratégies, c'est-à-dire celui pour lequel le transfert de production est le plus pénalisant. Le résultat donne une valeur de la fonction d'objectif qui peut être supposée proche du minimum. Dans la mesure où la procédure alliance n'exécute une simulation de transfert que si la fonction d'objectif peut décrottre, ce choix permet de minimiser le nombre de transferts à simuler, parmi les (n - 1) transferts possibles. Compte tenu de cette remarque, si la liste des stratégies n'est pas initialisée, les temps d'exécution sont d'autant plus réduits que les meilleurs segments sont en tête du fichier, le parcours s'effectuant séquentiellement.

43. Les commandes

A chaque commande est associée une procédure indépen-dante.

431. L'initialisation du modèle

La première étape consiste à initialiser les objets communs avant toute exploration, à l'aide des commandes créer et lire.

La procèdure créer

- lit le fichier des données de base,

- calcule la demande et les variables associées,

- détermine pour chaque segment la meilleure stratégie de transfert et les paramètres correspondants,

- chatne ces stratégies par ordre d'intérêt,

- crée à partir de ces résultats un fichier de sauvegar-de qui ne pourra plus être modifié.

La procédure lire relie ce fichier de sauvegarde et initialise les objets communs.

432. La simulation

Les commandes de simulation agissent sur les objets sans jamais intervenir sur le contenu des fichiers de sauvegarde du modèle.

(16)

La procèdure simuler gère deux sous-commandes transférer ou neutraliser. La sous commande transférer réalise le nombre demandé de transferts de production, en appliquant les meilleures straté-gies c'est-à-dire celles qui pratiquement réduisent le plus les coûts globaux. Elle édite les informations relatives au transfert réalisé puis

- supprime le segment transféré de la liste,

- détermine la meilleure stratégie d'alliance pour le segment surchargé,

- réinsère cette stratégie dans la liste

- examine si la stratégie de transfert vers le nouveau segment qui a modifié ses caractéristiques n'est pas meilleure et remet éventuellement à jour les listes. A l'issue de cette séquence, les propriétés du modèle sont conser-vées

La sous-commande neutraliser permet d'interdire des transferts vers certains segments, qui ne pourront donc plus être modifiés au cours de la simulation. Pratiquement le segment supprimé devient inaccessible pour le modèle (les pointeurs suivant et précédent sont forcés à la valeur - 1). Une nouvelle stratégie d'alliance est recherchée pour les segments dont le transfert s'effectue au profit de l'élément supprimé et les listes sont remises à jour. La procédure modifier permet d'intervenir sur les coûts unitaires en modifiant la première variable de coût, les deux autres restant inchangées. Les fonctions d'objectif sont réévaluées. Une stra-tégie de transfert pour le segment modifié est recherchée et toutes les autres stratégies sont réexaminées. Les listes sont remises à jour dès qu'une modification intervient.

La procédure rang recherche le numéro d'ordre de la stratégie qui réalise le transfert d'un segment préalablement désigné par son numéro.

433. Les éditions intermédiaires

La consultation des tables internes ne peut s'effectuer que par édition dans un fichier à l'aide de la procédure éditer. La liste est parcourue du début à la fin si bien que les straté-gies sont rangées par ordre d'intérêt décroissant. Le fichier est ouvert en mode mis à jour pour offrir la possibilité de regrouper les éditions intermédiaires réalisées au cours de la simulation.

(17)

lire

F

15

-La procédure archiver _est destinée à reconstituer un fichier de données pour un autre modèle, qui devra être réinitialisé avec la commande créer, apr~s modification éventuelle de son contenu. L'édition s'effectue en partant de la stratégie de transfert la plus pénalisante de façon à classer les segments par ordre d'inté-rêt décroissant.

44. Diagramme synoptique

Ce diagramme reproduit les différents niveaux et illus-tre la hiérarchie des appels de procédures.

(18)

5. La aise en oeuvre du aodfle

51. Installation

Les programmes sont écrits en Pll et peuvent être compi-lés séparément. Les fichiers sont gérés par les programmes. Les paramètres sont initialisés par simple affectation dans le pro-gramme de supervision emil. Le seuil de probabilité est fixé à 5 %. La précision est principalement utilisée pour tester la condition d'arrêt dans l'algorithme d'évaluation du taux d'utili-sation. La fonction F simule immédiatement un débordement lorsque le nombre d'installations dépasse une valeur limite égale à 34, ce qui évite l'exécution de calculs longs qui n'aboutiraient pas. En attribuant a ce paramètre une valeur inférieure, le temps d'exécu-tion de F est légérement réduit au détriment cependant de la précision de l'évaluation.

52. Evaluation des coûts d'exécution: complexité des algorithmes Soit n le nombre de segments étudiés dans le modèle et t le temps moyen d'une simulation. Il faut réaliser n2 simulations pour sélectionner la meilleure stratégie. En l'absence d'une mémo-risation des calculs intermédiaires, la recherche des n meilleures stratégies de transfert exige un nombre de simulations égal à la somme des carrés des n premiers nombres, soit une complexité de l'ordre de (n3 x t) lorsque n est grand.

En mémorisant pour chaque segment la meilleure straté-gie de transfert et en classant ces stratéstraté-gies, le temps de simu-lation varie comme (n2 x t). Le coût de l'algorithme de tri est négligeable devant le précédent, bien qu'étant également d'une complexité proportionnelle à n2.

Lorsque le modèle est initialisé, les coûts d'exécution sont liés au réexamen des stratégies de transfert à 1' issue des opérations de simulation. L'opération la plus coûteuse est celle qui supprime le segment au profit duquel s'opérait un maximum de transferts, l'algorithme devant exécuter dans le pire des cas (n - 1)2 simulations. Lorsque le nombre de segments décrott, la diminution des coûts est limitée par le fait que le temps d'une simulation augmente avec le nombre d'installations. Pratiquement le réexamen des stratégies est très rapide dans la mesure où les segments supprimés sont rarement ceux au profit desquels s'effec-tuent les transferts dans la liste des stratégies.

(19)

17

-53. Optimisation

Le coût d'exécution de ce modèle est principalement lié à la fonction F. Plusieurs choix de programmation ont permis de réduire le nombre des appels.

Une expression simplifiée de F dès que le nombre n d'installations cro!t, réduirait de façon importante les coûts. La situation la plus défavorable est obtenue pour la simulation du transfert d'un segment de grande capacité vers un segment de petite capacité avec une durée de production faible. Dans ce cas, le premier facteur dans l'expression de Fest supérieur au seuil de probabilité et l'évaluation du second facteur s'effectue par une suite d'appels récursifs inclus dans une boucle de pas uni-taire. En conséquence, le coût d'exécution d'un modèle peut être réduit lorsque les différences relatives entre les capacités des installations sont faibles et lorsque les durées de production augmentent.

Un moyen d'améliorer les performances est d'homogénéiser les capacités, en raisonnant sur des installations fictives regroupant plusieurs installations réelles, ou sur des fractions d'un équipement très important.

54. Préparation des données

Le fichier de données, en format libre, est décrit plus haut. Compte tenu des remarques précédentes, il peut être utile d'effectuer des tris sur les capacités et les durées pour repérer les segments susceptibles d'entratner une inflation des temps d'exécution.

Il est également conseillé de regrouper les segments supposés être les plus rentables en début de fichier (la commande archiver édite un modèle initialisé dans cet ordre). Ainsi les premières fonctions d'objectif calculées pour le transfert d'un segment sont minimales et le nombre de simulations de transferts complètes (avec appels de la fonction F) est réduit au minimum, COlDllle indiqué supra dans la description de la procédure trans-fert.

55. Appel du logiciel et enchatnement des commandes

A l'appel du programme emil, l'utilisateur est invité â

fournir un majorant du nombre de segments, en vue d'initialiser les dimensions des tables, et le nom d'un jeu de données. Si Fest

(20)

le nom fourni, la lecture s'effectuera dans le fichier de données F. base et la sauvegarde du modèle dans F. emil. Le premier menu donne le choix entre les commandes créer (c) ou lire (1), toute autre réponse entrainant la sortie du programme.

Après exécution de l'une de ces fonctions, le second menu offre S commandes : éditer (e), modifier (m), simuler (s), archiver (a), rang (r). Toute autre réponse entratne la sortie. Le menu est réaffiché après exécution des fonctions tant qu'un code de sortie n'est pas fo.urni.

L'une de ces commandes, simuler, offre deux sous-comman-des internes, transférer (t) ou neutraliser (n). Les commansous-comman-des éditer et archiver gèrent en conversationnel les fichiers de sortie. Les paramètres nécessaires â l'exécution sont demandés en conversationnel. Exemple d'utilisation lignes suit Les données correspondant pl ul el ml zl

sont rangées dans à chaque segment

10 000 2 5 2

le ficher s.base, les étant présentées comme

2 3

Cette ligne décrit un segment identifié par le quintu-plet (pl, ul, el, ml, zl), qui dispose de 2 installations de capacité 10 000 et qui produit dans un délai de S jours avec trois éléments de coûts unitaires respectifs 2, 2 et 3.

Pour un fichier d'au plus 210 segments, la séquence d'exécution est la suivante (les commandes et réponses de l'utili-sateur sont soulignées) :

emil

nombre maximum d'enregistrements 210 jeu de données: tests

créer (c), lire (1) ou arrêt(*) c 205 enregistrements sont lus.

éditer (e), modifier (m), simuler (s), archiver (a), rang (r), arrêt (*) : e

segment d'édition: tests.a

éditer (e), modifier (m), simuler (s), archiver (a), rang (r), arrêt (*) :

*

(21)

19

-Le modèle est désormais initialisé et contenu dans tests.emil. Il pourra être relu directement.

Le fichier tests-0 contient le stratégies de transfert. Le début du ci-dessous :

classement initial des fichier est reproduit

classement des stratégies de transfert par ordre d'intérêt croissant

ligne l

=

segment supprimé,

ligne 2 ~ segment récepteur avant transfert, ligne 3 ~ segment récepteur après tranfert. Les variables sont rangées dans l'ordre suivant

Identification

1

Capacité

I

Unités

I

Durée

I

Coilt

I

Demande

I

Taux Valeur initiale de X = 66 369 161

Stratégie l : transfert de 101 vers 195 X

=

64 841 678

48 K40Z * * * l 433 600 l l 1.0830 140 700 0.098 99 E22X * * * 315 000 l 7 0.0797 200 566 o.637 99 E22X * * * 315 000 2 7 0.0797 341 266 0.542 Stratégie 66 J35Z * 99 E22W * 99 E22W.* 2: transfert de

* *

* *

* *

158 vers 654 000 730 800 730 800 196 X 1 l 2 = 64 882 60 7 7 069 2.3629 0.0797 0.0797 621 907 465 314 1087 221 951 637 o.744

La séquence suivante fournit un exemple d'exploration du modèle. Après lecture (1), 2 transferts de production sont réali-sés (2), la position des segments numéros 195 et 196 est examinée (3). Le coût unitaire associé au numéro 196 est abaissé (4) et l'on constate ensuite que l'ordre des stratégies est modifié (5). A ce stade, la liste ne contient plus que 203 segments. Les don-nées sont éditées dans le fichier ss.base (6), et pourront être reprises dans un autre modèle. La nouvelle fonction d'objectif peut varier d'un facteur constant infinitésimal par rapport à la précédente lorsque les formats des données diffèrent.

emil

nombre maximum d'enregistrements jeu de données : tests

créer (c), lire (1) ou arrêt(*) 205 enregistrements sont lus.

210

1

(22)

Etape 48 99 99 Etape 47 99 99

éditer (e), modifier (m), simuler (s), archiver (a), rang (r), arrêt (*) : s

transférer

(t),

neutraliser (n) ou sortir(*): t nombre de transferts: 2 (2)

Réalisation de 2 transferts ligne 1 ~ segment supprime,

ligne 2 • segment récepteur avant transfert, ligne 3 = segment récepteur après transfert. Les variables sont rangées dans l'ordre suivant

Identification Capacité Unités Durée Coût Demande Taux 1 : transfert de 101 vers 195 X = 64 841 678 K40Z * * * 1 433 600 1 1 1.0830 140 700 0.098 E22X * * * 315 000 1 7 0.0191 200 566 0.637 E22X * * * 315 000 2 7 0.0797 341 266 0,542 2: transfert de 90 vers 195 X

=

63 343 422 K39Z E22X E22X *

* *

1 433 600 1 1 1-0451 140 700 0.098 *

* *

315 000 2 7 0.0191 341 266 0.542

* * *

315 000 2 7 0.0191 481 966 o.765 ue le descri teur n'est as utilisé.

éditer (e), modifier (m), simuler (s), archiver (a), rang (r), arrêt (*) : r

numéro du segment: 195

Le segment 195 est supprimé dans la stratégie 203.

éditer (e), modifier (m), simuler (s), archiver (a), rang (r), arrêt (*) : r

-numéro ùu segment: 196

Le segment 196 est ·sÜpprimé dans la stratégie 201. (3) éditer (e), modifier (m), simuler (s), archiver (a), rang (r), arrêt (*) : m

numéro du segment à modifier: 196

Segment 196

-Ancien coût unitaire de production a 0.0797 Nouveau coût: Q.05

(23)

21

-éditer (e), modifier (m), simuler (s), archiver (a), rang (r), arrêt (*) : r

numéro du segment: 196

Le segment 196 est supprimé dans la stratégie 203.

éditer (e), modifier (m), simuler (s), archiver (a), rang (r), arrêt (*) : r

numéro du segment: 195

Le segment 195 est supprimé dans la stratégie 197. (5) éditer (e), modifier (m), simuler

arrêt (*) : a

fichier de sortie: ss.base

éditer (e), modifier (m), simuler arrêt (*) : *

(s), archiver (a), rang (r),

(6)

(s), archiver (a) rang (r),

La commande simuler offre également la possibilité de neutraliser des segments, qui interviennent toujours dans la valeur de la fonction d'objectif mais ne peuvent plus recevoir la production d'autres segments. La combinaison des sous-commandes transférer et neutraliser permet de simuler de nombreuses situa-tions et de générer une infinité de classement des stratégies, à l'issue de chaque opération. Sur les exemples testés, on constate qu'à l'issue de quelques transferts, le classement se stabilise et les autres transferts s'effectuent vers le même segment. En neu-tralisant ces segments, on repère la suite des segments "absor-bants" par ordre d'intérêt décroissant. La commande est cependant coûteuse puisqu'il faut généralement réexaminer la plupart des stratégies. En pratiquant les transferts, on élimine au contraire les segments les moins rentables et la remise à jour des listes est très rapide vu que ces segments interviennent peu ou pas dans les autres stratégies.

Références

Documents relatifs

Un diamètre d'un cercle est un segment ayant pour extrémités deux points de ce cercle et.. contenant

f(t)dt est dans ce cas précis celle d’une fonction continue (par morceaux) sur un segment, donc existe toujours..

Définition : La distance d’un point à une droite est la longueur du plus petit segment reliant ce point à l’un des points de la droite.. Propriété : La distance

3) Segments de même longueur Deux segments ont la même longueur lorsqu’on peut les superposer.. Le milieu est à égale distance des extrémités du segment. Distance d’un point

b) Sans faire de pliage, trouver une méthode pour construire au crayon la ... du segment [AB].. c) Vérifier à l'aide d'un pliage que la construction précédente est exacte. et

Construire un quadrilatère ayant : les côtés deux à deux de même longueur, les côtés deux à deux perpendiculaires, les diagonales perpendiculaires, et qui ne soit pas

Si une fonction paire admet un d´eveloppement limit´e d’ordre n en 0 alors les coefficients des termes de degr´e impair sont nuls, si une fonction impaire admet un

Calculer la valeur arrondie au millimètre prés de la longueur du segment [HB].. Faire la figure en