Chapitre 6
Elaboration du logiciel:
6.1 Introduction:
Avant de procéder a la présentation du
logiciel, une description de l'environnement de la programmation
utilisée s'avère nécessaire. Lors de la réalisation
de cette étude, nous avons été amenées a concevoir
un logiciel dans le but d'appliquer les algorithmes adaptés au
problème posé. La conception d'un logiciel performant est une
étape très importante et indispensable dans notre étude.
L'implémentation du modèle et la programmation de son
système de résolution représentent une étape
primordiale en Recherche Opérationnelle. La réalisation du
logiciel a été faite en langage de programmation DELPHI 6.
6.2 DELPHI[12]
Delphi est un environnement de programmation visuel
orienté objet pour le développement rapide d'applications. En
utilisant Delphi, il est possible de créer de puissantes applications
pour Microsoft Windows XP, Microsoft Windows 2000 et Microsoft Windows 98, avec
un minimum de programmation. Delphi fournit tous les outils nécessaires
pour développer, tester et déployer des applications, notamment
une importante bibliothèque de composants réutilisables, une
suite d'outils de conception, des modèles d'applications et des fiches
et des experts de programmation.
Delphi permet de concevoir tout type d'application 32 bits,
qu'il s'agisse d'un utilitaire de portée générale, d'un
programme complexe de gestion de données ou d'une application a
distribuer.Ceci explique notre choix pour l'une des versions du Delphi pour
créer notre application.
6.3 Presentation du logiciel
Cette section comportera une descriptition du logiciel et des
explications bien détaillées afin de permettre a l'utilisateur de
connaltre les étapes a suivre pour sa manipulation.
6.3.1 Description du logiciel
Nom du logiciel: OPRG.
Outil de développement: Delphi6. Version du logiciel: V
1.0.
6.3.2 Utilisation du logiciel
Pour mieux se familiariser avec notre logiciel, nous avons
considéré utile de décrire, dans ce qui suit les
principales fonctionnalités et fiches exploitées dans notre
travail.
Lors du lancement du logiciel, la fenêtre ci-dessous
apparaltra. Elle contient le nom du logiciel et le titre du mémoire.
Elle comporte aussi deux boutons :
*Quitter: pour quitter l'application.
*Accéder: en cliquant sur ce bouton, et afin de
préserver l'intégrité et la confidentialité de
notre logiciel, ce dernier est protégé par un code
d'accès, donc il sera demandé a l'utilisateur d'introduire un mot
de passe.
*Si le mot de passe inséré est erroné,
en cliquant sur le boutton OK une fenêtre de message s'affi che <<
mot de passe non valide >> , en cliquant sur OK, vous sortirez de
l'application.
*Si le mot de passe inséré est correct, en
cliquant sur le bouton OK une fiche de menu apparait.
Presentation de la fiche menu:
Une fois le mot de passe saisi, la fiche menu du logiciel
apparait. Cette fiche permet d'accéder a toutes les autres fiches en
utilisant le menu défilant.
Dans la barre de menu, on distingue quatre sous-menus
principaux:
1-Fichier: en cliquant sur Fichier, un sous-menu apparalt nous
permettant de choisir les actions a effectuer:
· Voir Base de données: permet d'affi cher la base
de données.
· Voir carte: permet de voir le champ Upside et notre
réseau de cas d'étude.
· Ouvrir: permet d'ouvrir toutes les tables de la base de
données.
· Quitter: nous permet de quitter l'application en un seul
clic.
Voir Base de données: en cliquant sur "voir base
de données", la fenêtre cidessous apparaltra, elle comporte quatre
volets: liste des puits, ajouter um puits, supprimer/modifier et emfim
quitter.
Figure 6.3.1 : Base de données
Liste des puits: en cliquant sur ce sous-menu, les données
préenregistrées apparaltront et également les actions
suivantes:
*Exporter sous excel: cette action sert a enregistrer la base de
données sous un fichier excel.
*Visualisation graphique: permet d'affi cher graphiquement les
données. *Imprimer: permet d'imprimer.
*Suivant: un raccourci vers "Ajouter un puits".
*Retour: permet de retourner a la fiche précedente.
Figure 6.3.2 : Liste des puits
*Quitter: nous permet de quitter la fiche.
Ajouter um puits: en cliquant sur ce sous-menu, la fenêtre
ci-dessous apparaltra :
Elle comporte quatre boutons:
*Inserer: nous saisissons le numéro du puits, nom du
puits, type du puits, abscisse du puits et ordonnée du puits, en
cliquant sur ce bouton le puits sera rajouté.
*Suivant: un raccourci vers "Supprimer un puits".
*Retour: permet de retourner a la fiche précedente.
*Fermer: nous permet de quitter la fiche.
Supprimer um puits: en cliquant sur ce sous-menu, la
fenêtre ci-dessous apparaltra:
Elle comporte quatre boutons:
*Visualiser: permet de voir le puits qu'on veut supprimer.
*Supprimer: permet d'effacer le puits de la table.
*Retour: permet de retourner a la fiche précedente.
*Fermer: nous permet de quitter la fiche.
Quitter: permet de fermer le sous-menu Voir Base de
données.
2-Résolution: en cliquant sur Résolution, un
sous-menu apparait qui nous permet de choisir les actions a effectuer:
*Exécuter: en cliquant sur Exécuter la forme
suivante apparalt:
Dans cette forme nous avons les paramètres de
résolution a saisir afin de pouvoir exécuter la méthode de
résolution nous cliquons d'abord sur le bouton "Nuées Dynamiques"
dans le but de répartir les puits en 5 régions a partir des
données préenregistrées, comme la montre la figure
ci-dessous..
Nous pouvons aussi avoir une representation graphique par le
biais d'un nuage de point en cliquant sur le bouton"Localisation graphique",
comme le montre cette image:
Ensuite, en cliquant sur le bouton "Parcourir" ceci nous
permet de générer le système de contraintes directement a
partir des fichiers de la base de données regroupant toutes les
informations du système réel, comme le montre cette image:
En cliquant sue le bouton "Affi cher le modèle", le
programme s'écrit dans l'interface Lingo 8 de la façon
montrée ci dessous.
Puis en cliquant sur le bouton SOLVE, la fenêtre
suivante apparalt avec tous les résultats nécessaires (valeurs
des variables, coüt optimal, nombre d'itération, méthode
utilisée...).
A la fin de l'exécution, les résultats s'affi
cheront comme suit:
*paramêtres manifolds: chaque colonne représente les
paramètres associés a chaque manifolds, comme le montre la
fenêtre ci-dessous :
*Affectation des puits: chaque colonne représente les
paramètres associés a chaque puits, comme le montre la
fenêtre ci-dessous :
*Paramêtres puits: chaque colonne représente les
puits affectés a chaque manifolds, comme le montre la fenêtre
ci-dessous :
En cliquant sur le bouton "Visualisation graphique", la solution
est représentée graphiquement sur un plan euclidien.
3-Help: représente une petite description de l'application
"OPRG".
Figure 6.3.3 : Help
4-Internet: nous affi che un mini navigateur web.
5-A Propos: en cliquant sur A Propos , un sous-menu apparalt qui
nous permet de choisir les actions a effectuer:
Application: Il fait apparaltre une fenêtre contenant les
informations concernant ce logiciel et ses concepteurs.
Figure 6.3.4 : A propos de l'application
PFE en pdf: Il fait apparaitre le mémoire en pdf.
Figure 6.3.5 : Memoire en pdf
6.3.3 Interprétation des résultats:
Aprés avoir présenté notre logiciel, nous
allons présenter les données utilisées de même que
les résultats obtenus suite a leur optimisation par le logiciel OPRG.
Présentation des données :
Ce tableau résume les données de notre
problème il comporte 30 puits a chaque puits on a associé son
abscisse et son ordonnée ainsi que le débit du gaz dans chaque
puits.
Puits
|
X(m)
|
Y (m)
|
Débit(m3/s)
|
OMKZ672
|
789372
|
3531696
|
0,1139041
|
OMK55BMR
|
787632
|
3529792
|
1,0900737
|
OMKZ85
|
791200
|
3529784
|
0,8842907
|
OML16
|
793096
|
3531166
|
1,6667107
|
HZOMK42
|
788494
|
3529433
|
1,8197923
|
OMLZ351
|
794254
|
3529570
|
1,0130094
|
OMLZ36
|
795072
|
3531331
|
0,1286296
|
OMKZ643
|
789116
|
3528848
|
1,3336394
|
OMLZ262
|
793049
|
3531716
|
0,1139041
|
HZOMK21
|
786879
|
3530255
|
0,7686001
|
OMK64SR
|
789128
|
3528279
|
1,7892419
|
OMKZ45
|
787877
|
3528959
|
1,7222371
|
HZOMK50
|
788500
|
3530885
|
0,0004561
|
HZOMK23
|
790932
|
3531250
|
1,0980127
|
HZOMK43
|
789983
|
3531718
|
0,4521998
|
HZOMK31
|
789510
|
3530405
|
1,0035011
|
OMK842
|
790491
|
3528534
|
1,6710796
|
HZOMKH49
|
788150
|
3531730
|
0,5094461
|
HZOMLH5
|
792678
|
3529108
|
1,5444936
|
OMLZ133
|
792486
|
3528078
|
0,5049711
|
HZOML20
|
793156
|
793156
|
0,6136571
|
HZOML23
|
794229
|
3531363
|
0,4111693
|
HZOML45
|
793330
|
3529715
|
1,1103951
|
HZOMLH22
|
792592
|
3530081
|
0,0013505
|
HZOMLH12
|
794694
|
3530240
|
1,7843318
|
HZOMK44
|
786510
|
3532175
|
1,0036641
|
OMK57SR
|
787633
|
3532118
|
1,8620904
|
HZOML19
|
791826
|
3527895
|
0,8585074
|
OMKZ831
|
790699
|
3527235
|
1,078932
|
Résultats :
Aprés l'exécution du logiciel OPRG, nous avons
obtenu les résultats suivants, ces valeurs sont
représentées par le tableau suivant:
1-Affectation des puits:
Ce tableau représente les résultats obtenus par
l'algorithme des nuées dynamiques, l'heuristique regroupe les puits en
régions homogenes chacune d'elle contient 5 puits.
Manifolds1
|
Manifolds2
|
Manifolds3
|
Manifolds4
|
Manifolds5
|
Manifolds6
|
OMK842
|
OMK64SR
|
OMLZ36
|
OMLZ351
|
HZOMK44
|
OMKZ672
|
OMLZ133
|
OMKZ643
|
HZOMLH12
|
HZOMLH22
|
HZOMKH49
|
OMKZ85
|
HZOML19
|
OMKZ45
|
OML16
|
HZOML45
|
HZOMK50
|
HZOMK23
|
OMKZ831
|
OMK55BMR
|
HZOML23
|
HZOMLH5
|
HZOMK21
|
HZOMK43
|
OMKZ83
|
HZOMK42
|
OMLZ262
|
HZOML20
|
OMK57SR
|
HZOMK31
|
2-Determination les diamètres des pipes:
Lingo a utilisé la méthode Branch-and-bound pour
résoudre (P'); et la solution données par les tableaux qui
suivent.
2-Paramètres des manifolds:
Ce tableau illustre les paramètres de chaque manifolds
|
Manif1
|
Manif2
|
Manif3
|
Manif4
|
Manif5
|
Manif6
|
Abscisses X
|
791153,3
|
788459,9
|
793741,9
|
792924,4
|
787790,8
|
789941,3
|
Ordonnées Y
|
3527641
|
3528917
|
3531146
|
3531146
|
3531327
|
3530831
|
Longueurs des pipes
|
2805,3
|
1021,9
|
6285
|
4776,3
|
3474
|
3330,4
|
Diamètres des pipes
|
6
|
6
|
6
|
6
|
6
|
6
|
3-Paramètres des puits:
Ce tableau illustre les paramètres de chaque puits pour
chaque region:
Num_puits
|
Nom_puits
|
Longueur du pipe (en mètre)
|
Diamètre du pipe (en pouce)
|
0
|
HZOMLH12
|
1 407,00
|
2
|
1
|
HZOMK44
|
1 536,00
|
2
|
2
|
HZOMK50
|
836,00
|
2
|
3
|
OMK55BMR
|
1 205,00
|
2
|
4
|
OMKZ45
|
584,00
|
2
|
5
|
HZOMKH49
|
540,00
|
2
|
6
|
HZOMK31
|
606,00
|
2
|
7
|
HZOMK42
|
517,00
|
2
|
8
|
HZOMK23
|
1 076,00
|
2
|
9
|
HZOMK43
|
888,00
|
2
|
10
|
HZOMLH12
|
1 314,00
|
2
|
11
|
HZOMLH22
|
842,00
|
2
|
13
|
HZOMLH5
|
317,00
|
2
|
14
|
HZOML19
|
719,00
|
2
|
15
|
HZOML20
|
522,00
|
2
|
16
|
HZOML23
|
533,00
|
2
|
17
|
HZOML45
|
575,00
|
2
|
18
|
OMKZ672
|
1 036,00
|
2
|
19
|
OML16
|
646,00
|
2
|
20
|
OMLZ351
|
1 355,00
|
2
|
21
|
OMLZ36
|
1342,903947
|
2
|
22
|
OMKZ643
|
660,00
|
2
|
23
|
OMLZ262
|
897,00
|
2
|
24
|
OMK64SR
|
924,00
|
2
|
25
|
OMK842
|
1 112,00
|
2
|
26
|
OMLZ133
|
1 403,00
|
2
|
27
|
OMK57SR
|
807,00
|
2
|
28
|
OMKZ831
|
609,00
|
2
|
29
|
OMKZ83
|
683,00
|
2
|
L'objet de notre étude consiste a optimiser le
réseau d'injection du gaz lift dans la partie Nord du champ de Hassi
Messaoud nommée Upside Nord afin de minimiser la perte de charge
causée par les pipes.
Cette optimisation nous a conduit a modéliser la perte
de charge a travers les pipelines dans un réseau de desserte, qui a
révélé la complexité technologique du
système et de ses installations << collecteurs, pipes,... >>
. De ce fait l'étude de ce système était nécessaire
pour la bonne compréhension du comportement du fluide dans une conduite
circulaire.
Cette étude a montré la mauvaise exploitation des
installations de surface ainsi que le problème de perte de charge qui
freine la production des puits.
La compréhension de certains aspects techniques propres
aux écoulements monophasiques a été un préalable a
la construction du modèle. Nous avons pu appréhender ces aspects
grace aux multiples entretiens que nous avons eus avec des membres du personnel
de SONATRACH ainsi qu'aux recherches bibliographiques que nous avons
effectuées. Nous avons abouti a un modèle mathématique qui
est un programme non linéaire de variables bivalentes et d'autres
réelles positives. Nous avons choisi comme méthode de
résolution une heuristique qui est divisée en deux phases :
*La première phase consiste a déterminer les
emplacements des manifolds ainsi que les puits reliés a chaque manifold.
L'idéal étant de détecter les classes qui nous
intéressent et qui forme une partition, on a utilisé la
classification automatique et on a réajusté l'algorithme des
nuées dynamiques de façon a satisfaire les contraintes.
*La deuxième phase a pour but la détermination
des diamètres des pipes utilisés et pour la résoudre on a
utilisé un solveur de résolution des programmes non
linéaires tels que << LINGO >> .
Enfin, nous avons implémenté cette méthode
de résolution dans le logiciel <<OPRG>> . Cette application
donne des résultats sous forme textuelle et graphique.
Au terme de ce projet, et au vu des résultats obtenus,
nous estimons que l"approche que nous avons adoptée, donne des
résultats très satisfaisants.
Notre projet nous a permis, d'approfondir et d'appliquer nos
connaissances théoriques en programmation non linéaire sur un
système réel. Nous pensons que notre étude en faisant
appel a des techniques de la recherche opérationnelle a atteint son
objectif.
|