SERRET Aurelie
SHU Antoine
TAO Xuyuan
E3-2006/07
Recherche Opérationnelle
Valid HTML 4.0!
Optimisation dans une entreprise de négoce de coton

Plan

  1. Introduction
    1. La description du problème
    2. Les contraintes logistiques
    3. Les objectifs
  2. Mise en oeuvre
    1. Les fonctions principales
    2. Les variables
    3. Les constantes
    4. Le schéma de l'algorithme
    5. Le pseudo code
  3. Exemple
    1. Introduction
    2. Résultats
      1. Par le port de DUNKERQUE
      2. Par le port de HAMBOURG
    3. Comparaison
  4. Conclusion

I. Introduction

I.1 Description du problème

La Société DEVCOT est une société de négoce de coton, qui prend en charge l'acheminement du coton brut (matière première) des fournisseurs vers ses clients (les filateurs). Cette entreprise a été créée en 1931 par Maurice DEVILDER et est aujourd'hui une société anonyme de type familiale.

DEVCOT

Devcot S.A. a des partenaires d'affaires aux quatre coins du monde. La France n'étant pas productrice de coton, Devcot s'approvisionne dans des pays dont le climat est favorable à la culture du coton, tels que : l'Argentine, le Bénin, le Brésil, le Burkina Faso, le Cameroun, la Chine, la Côte d'Ivoire, l'Egypte, l'Espagne, les Etats-Unis, la Grèce, l'Inde, l'Israël, le Kazakhstan, l'Ile de Madagascar, le Mali, le Nigeria, le Pakistan, le Paraguay, le Pérou, la Syrie, le Tadjikistan, la Tanzanie, le Togo, le Turkménistan, la Turquie, l'Ouzbékistan et le Zimbabwe. Elle travaille dans le monde entier ce qui implique que sa marchandise est soumise à de nombreuses contraintes de coûts tout d'abord mais aussi de transports. Actuellement afin de pallier à toutes ces contraintes elle utilise son expérience acquise depuis des années.

I.2 Les contraintes logistiques

L'entreprise Devcot est soumise à de nombreuses contraintes logistiques:

I.3 Objectifs

L'objectif de notre projet est d'arriver à réunir les différentes contraintes de l'entreprise et de les exprimer sous la forme d'un algorithme. Tout ceci dans le but de trouver une meilleure solution de transport. Le but ultime étant d'augmenter les bénéfices de l'entreprise à long terme alors que les contraintes sont à court terme.Cela, en mettant en oeuvre notre algorithme qui permet de trouver les frais minimum et qui dans le même temps permet d'afficher le nom de la compagnie maritime, le nom du transitaire ainsi que le cas échéant le nom du transporteur routier.

II. Mise en oeuvre

II.1 Les fonctions principales

Les différentes fonctions se déclinent comme suit :

1 : LeFraisM = FraisMaritime(port1, port2, nomM)
Cette fonction renvoie aux frais maritimes
Les paramètres
port1 : le port d'origine
port2 : le port de destination
nomM : le nom de la compagnie maritime
2 : LeFraisT,nomT = FraisTransitaire(port)
Cette fonction renvoie aux frais transitaires minimum ainsi qu'au nom du transitaire en fonction du port
Les paramètres
port : le port de transit
nomT : le nom du transitaire
3 : LeFraisR =FraisRoutier (Lieu1, Lieu2, [Lieu3], nomR)
Cette fonction renvoie aux frais routiers
Les paramètres
Lieu1 : le lieu de départ
Lieu2 : le lieu d'arrivée
Lieu3 : le lieu de dépôt
nomR : le nom de la compagnie (transport routier)
4 : lieuT=Depot(client, nomM)
Cette fonction renvoie le lieu de dépôt en fonction du lieu où se trouvent le client et la compagnie maritime
Les paramètres
client : le lieu où se situe le client
nomM : le nom de la compagnie maritime
5 : newCYM,newFraisM,newFraisR =FraisCarrier(portO, newPortD)
Cette fonction renvoie au fret, au transport maritime et routier et au nom de la compagnie maritime qui offrent les frets le plus bas en fonction du port de la destination et du port d'origine
Les paramètres
portO : le port d'origine
newPortID : le port de destination

II.2 Les variables

Les différentes variables utilisées se déclinent comme suit :

     client : le lieu où se situe le client	
     portO : le port d'origine
     portD : le port de destination
     newPortD : le nouveau port de destination
     lieuT : le lieu terminal
     newlieuT : le nouveau lieu terminal
     Frais : la totalité des frais
     newFrais : la totalité des nouveaux frais

     FraisM : les frais maritimes
     newFraisM : les nouveaux frais maritimes
     CYM : la compagnie maritime
     newCYM : la nouvelle compagnie maritime
     nCYM : le nombre de compagnies maritimes

     FraisT : les frais transitaires
     newFraisT : les nouveaux frais transitaires
     CYT : la compagnie transitaire
     newCYT : la nouvelle compagnie transitaire
     nCYT : le nombre de compagnies transitaires

     FraisR : les frais routiers
     newFraisR : les nouveaus frais routiers
     CYR : la compagnie de transport routier
     newCYR : la nouvelle compagnie de transport routier
     nCYR : le nombre de compagnies de transports routiers

     nPortD : nombre de ports de destination
     nLieuT : nombre de lieux terminaux

II.3 Les constantes

     Maxm: valeur très grande, supérieure à la totalité des frais
     NAN: valeur nulle

II.4 Schéma de l'algorithme

Schema de l'algorithme

II.5 Le pseudo code

Le pseudo code à été écrit en fonction du schéma de l'algorithme ci-dessus.

//Début
//Initialisation des variables
     portO=portD=newPortD=NAN
     lieuT=newlieuT=NAN
     client=NAN
     CYM=CYT=CYR=NAN
     newCYM=newCYT=newCYR=newCYR=NAN
     Frais=FraisM=FraisT=FraisR=Maxm
     newFrais=newFraisM=newFraisT=newFraisR=Maxm
     nLieuT=nPortD=nCYM=nCYT=nCYR=0

//Saisir le client, le port d'origine et le nombre de port de destination
     client
     portO
     nPortD

// Si le client ne peut pas accepter le container directement, aller à l'étape 4

// Etape 1
     DO (nPortD)				 // faire l'itération pour tous les ports de destination
          newPortD                               // choisir un nouveau port de destination
          newFrais=0

          Si la compagnie maritime travaille sous la façon « Merchant », aller à l'étape 2. Sinon, aller à l'étape 3.

// Etape 2 : Si la compagnie maritime travaille sous la façon « Merchant »
          newCYM,newFraisM = FraisMaritime (portO, newPortD)
          // trouver la compagnie maritime qui offre le fret le plus bas en fonction du port de destination
          

	  newFraisT,newCYT = FraisTransitaire (newPortD)
          // trouver les frais de transits et la compagnie de transit en fonction du port de destination 

          DO (nLieuT)                            // faire l'itération pour tous les lieux terminaux
               newlieuT= Depot (client, newCYM) 
               // choisir un dépôt proche du client en fonction de la compagnie maritime 

               DO (nCYR)                         // faire l'itération pour toutes les compagnies de transport routier
                    newCYR, newFraisR = FraisRoutier (newPortD, client, newlieuT)
                    // trouver la compagnie de transport routier qui offre les frais les plus bas
                       en fonction du port de destination et du lieu terminal

                    newFrais=newFraisM+newFraisT+newFraisR
                    IF (newFrais < Frais) THEN
                         Frais=newFrais          // mise à jour des données
                         PortD=newPortD          // mise à jour des données
                         CYM=newCYM              // mise à jour des données
                         CYT=newCYT              // mise à jour des données
                         CYR=newCYR              // mise à jour des données
                         lieuT=newlieuT          // mise à jour des données
                         FraisM=newFraisM        // mise à jour des données
                         FraisT=newFraisT        // mise à jour des données
                         FraisR=newFraisR        // mise à jour des données
                    ENDIF
               END DO
          END DO
     END DO
     Aller à l'étape 4

// Etape 3 : la compagnie maritime travaille sous la façon « Carrier »
          newCYM, newFraisM, newFraisR = FraisCarrier (portO, newPortD)
          // trouver le fret maritime, le transport routier et la compagnie
             maritime qui offre les frais les plus bas en fonction du port de destination

          newFraisT, newCYT = FraisTransitaire (newPortD)
          // trouver les frais de transits et la compagnie de transit en fonction du port de destination 

          newFrais=newFraisM+newFraisT+newFraisR
          newCYR=newCYM
          IF (newFrais < Frais) THEN
               Frais=newFrais                    // mise à jour des données
               PortD=newPortD                    // mise à jour des données
               CYM=newCYM                        // mise à jour des données
               CYT=newCYT                        // mise à jour des données
               CYR=newCYR                        // mise à jour des données
               lieuT=newlieuT                    // mise à jour des données
               FraisM=newFraisM                  // mise à jour des données
               FraisT=newFraisT                  // mise à jour des données
               FraisR=newFraisR                  // mise à jour des données
          ENDIF
     END DO
     Aller à l'étape 4

// Etape 4
     DO (nPortD)                                 // faire l'itération pour tous les ports de destination
          newPortD// choisir un nouveau port de destination
          newFrais=0
          newCYM,newFraisM = FraisMaritime (portO, newPortD)
          // trouver la compagnie maritime qui offre les frais les plus bas en fonction du port de destination

          newFraisT, newCYT = FraisTransitaire (newPortD)
          // trouver les frais de transits et la compagnie de transit en fonction du port de destination 

          DO (nCYR)// faire l'itération pour toutes les compagnies de transports routiers
               newCYR, newFraisR = FraisRoutier (newPortD, client)
               // trouver la compagnie de transport routier qui offre les frais les plus bas
                  en fonction du port de destination et du lieu terminal

               newFrais=newFraisM+newFraisT+newFraisR
               IF (newFrais < Frais) THEN
                    Frais=newFrais               // mise à jour des données
                    PortD=newPortD               // mise à jour des données
                    CYM=newCYM                   // mise à jour des données
                    CYT=newCYT                   // mise à jour des données
                    CYR=newCYR                   // mise à jour des données
                    FraisM=newFraisM             // mise à jour des données
                    FraisT=newFraisT             // mise à jour des données
                    FraisR=newFraisR             // mise à jour des données
               ENDIF
          END DO
     END DO
     Afficher le résultat
//FIN

III L'Exemple

III.1 Introduction

la carte

Cet exemple illustre comment s'effectue le choix de l'itinéraire et des compagnies de transport (maritime et du transporteur). On suppose que la marchandise doit partir d'ABIDJAN et arriver chez le client situé à NOVA PARKA. Dans la base de données il n'y a que deux choix de port: Les compagnies maritimes en partance d'ABIDJAN proposent 2 ports de destination : soit le port de DUNKERQUE, soit le port de HAMBOURG. Le tableau suivant donne la liste des compagnies maritimes avec leurs tarifs selon le port de destination

Tableau E1
DEPARTABIDJANABIDJAN
DESTINATIONHambourgDunkerque
COMPAGNIE MARITIME 11 881,60 USDnon desservi
COMPAGNIE MARITIME 22 209,60 USD2 209,60 USD
COMPAGNIE MARITIME 32 097,60 USDnon desservi
COMPAGNIE MARITIME 42 528,00 USD1 630,40 USD
COMPAGNIE MARITIME 51 675,20 USD1 675,20 USD
COMPAGNIE MARITIME 61 864,00 USD1 811,20 USD

Les compagnies maritimes travaillent selon deux modes :

Quelque soit le mode utilisé, des frais de réception (THC et douane) sont à inclure dans le coût total de transport. S'il y a rupture de charge, les frais sont plus importants car il faut dépoter le conteneur pour charger la marchandise dans un camion. Dans le cas où tout s'effectue par conteneur, les frais de transit se traduisent de la façon suivante:

Si on passe par un transporteur routier il y a alors des frais supplémentaires qui s'ajoutent:

Le tableau suivant présente les tarifs de transit en fonction du lieu et de la compagnie:

Tableau E2
lieucompagnietarif
DUNKERQUETRANSIT 1862,40 USD
DUNKERQUETRANSIT 21574,4 USD
HAMBOURGTRANSIT 3457,60 USD
Tableau E3
De : Hambourg à : Nova parka
Compagnie routièrecoût fretmatériel
COMPAGNIE MARITIME 11 568,00 Euroscontainer
COMPAGNIE MARITIME 22 660,80 Euroscontainer
COMPAGNIE MARITIME 32 294,40 Euroscontainer
Tableau E4
De : Dunkerque à : Nova parka
Compagnie routièrecoût fretmatériel
TRANSPORT ROUTIER 11 392,00 EurosSemi-Remorque
TRANSPORT ROUTIER 21 584,00 EurosSemi-Remorque
TRANSPORT ROUTIER 31 664,00 EurosSemi-Remorque
TRANSPORT ROUTIER 41 648,00 EurosSemi-Remorque

III.2 Résultats

Notre exemple permet d'illustrer l'algorithme décrit plus haut [Schéma de l'algorithme]. Aussi, nous faisons les suppositions suivantes:

On note C comme étant le prix de la devise européenne en dollars américain (USD). Le taux C est approximativement de 1,32 USD/Euro

La première action dans l'algorithme est le choix du port. Dans la base de données il n'y a que 2 ports d'arrivée pour les bateaux en partance d'ABIDJAN: soit DUNKERQUE soit HAMBOURG
Aussi l'exemple est découpé en deux parties, l'une concernant le port de DUNKERQUE et l'autre concernant le port d'HAMBOURG.

III.2.a Par le port de DUNKERQUE

ABIDJAN>DUNKERQUE>NOVA PARKA
Sélection possibleLes prix
compagnie maritimeCOMPAGNIE MARITIME 21 630,40 USD
compagnie de transitTRANSIT 12 209,60 USD
transporteur routierTRANSPORT ROUTIER 11 392,00 Euros
sélection possibleLes prix
compagnie maritimeCOMPAGNIE MARITIME 41 630,40 USD
compagnie de transitTRANSIT 1862,40 USD
transporteur routierTRANSPORT ROUTIER 11 392,00 Euros
sélection possibleLes prix
compagnie maritimeCOMPAGNIE MARITIME 51 675,20 USD
compagnie de transitTRANSIT 1862,40 USD
transporteur routierTRANSPORT ROUTIER 11 392,00 Euros
sélection possibleLes prix
compagnie maritimeCOMPAGNIE MARITIME 61 811,20 USD
compagnie de transitTRANSIT 1862,40 USD
transporteur routierTRANSPORT ROUTIER 11 392,00 Euros

Les valeurs du tableau se trouvent dans les tableaux de la section III.1.
Le tableau ne montre pas une liste exhaustive des possibilités, en effet il a été fait l'hypothèse que sur le port de DUNKERQUE, l'ensemble des compagnies maritimes acceptent les deux modes carrier et merchant. Or nous n'avons listé que les compagnies maritimes avec la compagnie de transit et le transporteur routier les moins chers. Par ailleurs, nous n'avons pas les données des transporteurs allant de DUNKERQUE à NOVA PARKA, donc nous ne pouvons pas lister les coûts de transport dans les cas du mode merchant ou camion, ce qui par rapport à l'algorithme revient à suivre les étapes 1, 2 et 4. Avec ces données, on fait le calcul du coût total de chacune des possibilités de transport, et en comparant ces valeurs on trouve alors la sélection la moins coûteuse.
En notant CT le coût total on a alors : CT=1 392*C+(862,4+ 1 630,4) Pour C=1,32USD/Euro, le coût total est de 4330,24 USD

Après avoir déterminé le coût total de transport avec les 4 compagnies maritimes. Il a été déterminé que le cheminement le plus économique est le suivant:

NOMLes prix
port de départABIDJAN
port d'arrivéeDUNKERQUE
Ville d'arrivéeNOVA PARKA
compagnie maritimeCOMPAGNIE MARITIME 41 630,40 USD
compagnie de transitTRANSIT 1862,40 USD
transporteur routierTRANSPORT ROUTIER 11 392,00 Euros

III.2.b Par le port de HAMBOURG

ABIDJAN>HAMBOURG>NOVA PARKA
sélection possibleLes prix
compagnie maritimeCOMPAGNIE MARITIME 11 881,60 USD
compagnie de transitTRANSIT 3457,60 USD
transporteur routierCOMPAGNIE MARITIME 11 568,00 Euros
sélection possibleLes prix
compagnie maritimeCOMPAGNIE MARITIME 22 209,60 USD
compagnie de transitTRANSIT 3457,60 USD
transporteur routierCOMPAGNIE MARITIME 22 660,80 Euros
sélection possibleLes prix
compagnie maritimeCOMPAGNIE MARITIME 32 294,40 USD
compagnie de transitTRANSIT 3457,60 USD
transporteur routierCOMPAGNIE MARITIME 31 568 Euros

Les valeurs du tableau se trouvent dans les tableaux de la section III.1.

Nous avons uniquement les données de COMPAGNIE MARITIME 1, COMPAGNIE MARITIME 2, COMPAGNIE MARITIME 3, prenant en charge le transport de HAMBOURG à NOVA PARKA, ce qui par rapport à l'algorithme correspond aux étapes 1, 3 et 4.Après le calcul du coût total de transport, parmi ces trois compagnies maritimes, COMPAGNIE MARITIME 3 a les prix les moins élevés. L'exemple du calcul du coût total de transport pour COMPAGNIE MARITIME 1 est le suivant:1568*C+( 457,6+1 881,6)=Coût total en Dollars Pour C=1,32USD/Euro, le coût total est de 4408,96 USD

NOMLes prix
port de départABIDJAN
port d'arrivéeHAMBOURG
compagnie maritimeCOMPAGNIE MARITIME 11 881,60 USD
compagnie de transitTRANSIT 3457,60 USD
transporteur routierCOMPAGNIE MARITIME 11 568,00 Euros

III.3 Comparaison

Il est donc plus intéressant (plus économique) de passer par un transport routier que de tout faire via la compagnie maritime, le tableau suivant récapitule les choix de transport

Le ChoixLes prix
Ville d'arrivéeNOVA PARKA
Ville de départABIDJAN
Port d'arrivéeDUNKERQUE
compagnie maritimeCOMPAGNIE MARITIME 41 392 USD
compagnie de transitTRANSIT 1862,40 USD
transporteur routierTRANSPORT ROUTIER 11630,40 Euros

IV. Conclusion

La méthode de calcul utilisé permettrait à l'entreprise de pouvoir choisir ses compagnies maritimes et routières en fonction du prix de chacune d'entre elle.

Par la suite il serait aussi intéressant d'intégrer au programme les autres critères de choix de la compagnie comme la capacité de transports par exemple.

Il serait aussi intéressant pour l'entreprise grâce à ce type de méthode de connaître les ports par lesquels elle n'est jamais passés. Ainsi il pourrait apprendre à connaître de nouveaux ports et optimiser leurs transports avec une plus large gamme de choix.