Rapport programmation par contraintes

Pages: 9 (2215 mots) Publié le: 13 juillet 2012
|
Programmation par contraintes |
|
|
Marc Mineo (M2 ID APP) |
28/06/2012 |

|

Table des matières
Modélisation : 1
Génération des patterns : 1
Minimiser le nombre de planches utilisées: 2
Minimiser les chutes : 2
Solutions 2
Génération d le nombre de planches utilisées: 3
Minimiser les chutes : 3
Y a-t-il un lien entre les 2 problèmes : 3
Annexes : 4COMMANDES.mod : 4
CP_Modele_COMMANDES_Common.mod : 5
CP_Modele_COMMANDES.mod : es patterns : 2
Minimiser5
CPLEX_ChoosePattern.mod : 6
CPLEX_ChutePattern2.mod: 7
CP_Modele_COMMANDES.dat: 8

Le but de ce document est d’argumenter la résolution du problème posé :
« Pour un stock illimité de planches de 70 centimètres, vous devez préparer la commande suivante :
* 100 planches de 22centimètres
* 125 planches de 20 centimètres
* 80 planches de 12 centimètres
L’objectif est dans un premier temps de satisfaire la commande tout en minimisant le nombre de planches de 70 centimètres utilisées.
Le second objectif est de satisfaire la commande et de minimiser les chutes (bout de bois restants après un découpage) et satisfaire la commande. »
Ce problème comporte plusieursétapes :
* Découverte des patterns pour la découpe des planches.
* Minimisation du nombre de planches.
* Minimisation des chutes.
Afin de résoudre ce problème, l’approche choisie a été de générer automatiquement les patterns possibles pour une découpe afin choisir parmi ceux-ci lors de la préparation de la commande.
Modélisation :
Génération des patterns :
De manière à générer lespatterns, la variable de décision sera un tableau d’entier dont la première entrée sera le nombre de planches de 22 centimètres présente dans ce pattern, la seconde les planche de 20 centimètres et enfin les planches de 12 centimètres.
dvar int nbPieces[1..nbReferences];
nbReferences correspond au nombre de références de planches disponibles (3 dans notre cas).
Ce modèle comporte troiscontraintes :
* Une contrainte de positivité sur chacun des éléments du tableau nbPieces.
forall(i in 1..nbReferences) nbPieces[i]>=0;
* Une contrainte permettant de spécifier que le nombre de pièces de 22, 20 et 12 centimètres présentes dans le pattern soient inférieur à la taille de la planche (70 cm).
tModele >= sum(i in 1..nbReferences) tailles[i]*nbPieces[i];
Avec:
tModele: lataille de la planche utilisée pour la découpe (70cm dans notre cas).
tailles: tableau d’entier représentant la taille des pièces à découper ([22 20 12] dans notre cas).
* La dernière contrainte est facultative selon la stratégie adoptée. Certains patterns ne sont pas cohérents puisque s’il reste par exemple plus de 12 centimètres sur une planche, on pourrait alors créer une pièce de 12. Enéliminant ces patterns on risque de se trouver en surproduction mais ce n’est pas un probleme puisque cela n’entrainera pas la consommation de planches de 70 centimètres supplémentaires dans notre résultat final.
On spécifie donc que la taille restante dans le pattern après découpe ne doit pas être supérieur à la taille d’une pièce de notre commande :
forall(j in 1..nbReferences)
tModele -sum(i in 1..nbReferences) tailles[i]*nbPieces[i] < tailles[j];

int newId = card(Patterns)+1;
On crée un tuple Pattern qui permettra de stocker les valeurs retournées par ce modèle et une liste de Pattern qui permettra d’enregistrer l’ensemble des tuples :
tuple Pattern {
key int id;
int chute;
int nbPieces[1..nbReferences];
};

{Pattern} Patterns = ...;

Avecles variables suivantes définies dans le modèle précèdent :
int newId = card(Patterns)+1;
int chute = tModele - sum(i in 1..nbReferences) tailles[i]*nbPieces[i];

Minimiser le nombre de planches utilisées:
Le modèle permettant de minimiser le nombre de planches utilisées pour satisfaire la commande comporte une variable de décision, un tableau d’entier, permettant de spécifier pour...
Lire le document complet

Veuillez vous inscrire pour avoir accès au document.

Vous pouvez également trouver ces documents utiles

  • programmation
  • Programmation en c
  • Programmation
  • Programmation
  • Programmation C
  • Programmation
  • Programmation
  • La programmation

Devenez membre d'Etudier

Inscrivez-vous
c'est gratuit !