Bin Puzzle

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 3

X2MC050 Optimisation stochastique

Projet : Allocation de ressources et Résolution d’un


puzzle

1 Allocation de ressources
On dipose de M serveurs de capacité illimitée et de N tâches à accomplir
de durées différentes. Le but est de répartir les tâches pour que les serveurs
aient à peu près la même charge globale.
Les durées des tâches sont données : (ti )1≤i≤N et lues dans un fichier par la
commande

T=np.load("durees.npy")

Une allocation est une suite a = (ai )1≤i≤N de nombres entre 1 et M : ai est
le serveur alloué à la tâche i de durée ti .
La fonction objectif est
X
J(a) = (Bj − T̄ )2
1≤j≤M

aavec Bj la somme des durées des tâches allouées au serveur j, et T̄ =


1 P
M 1≤i≤N ti est l’allocation moyenne idéale.
1) Coder un alorithme d’exploration markovienne. Vous devez expliciter la
chaı̂ne de Markov sous jacente en décrivant précisément ses transitions, et
en montrant qu’elle est irréductible sur un espace d’états fini. Commenter
vos résultats.

2 Résolution d’un puzzle


Le puzzle est un rectangle de dimension 40 × 50 que l’on doit remplir avec
des pièces rectangulaires. Les dimensions de ces pièces sont

pieces=[(14,27),(8,36),(8,9),(6,14),(34,5),(18,9),(22,9),(22,9),(18,21),(18,15)]

On peut également lire ces dimensions dans un fichier

pieces=np.load("pieces.npy")

1
Une configuration est un ensemble de pièces placées. Une configuration
ne comporte pas nécessairement toutes les pièces. EN particulier on peut
considérer la configuration vide.
Une pièce placée est un quadruplet : numéro de la pièce, abcisse et ordonnée
de l’endroit où l’on place le coin inférieur gauche, sens de la pièce. Le sens
de la pièce prend deux valeurs : par example la pièce (6,14) peut être placée
horizontalement ou verticalemnt.
Il existe une configuration qui remplit exactement le plateau.
2) Ecrire une fonction qui étant donné une configuration vous indique si elle
est valide, c’est à dire que les pièces ne doivent pas se recouvrir et qu’elles
doivent être à l’intérieur du rectangle 40 x 50.
3) Ecrire une fonction qui represente visuellement une configuration. Il est
possible d’utiliser la fonction rectangle de matplotlib qui dessine un rectangle
aux coordonnes (a,b) de largeur w et de hauteur h.
fig, ax = plt.subplots()
ax.add_patch(Rectangle((a,b),w,h,fill=False))
plt.show()
4) Coder la fonction objectif suivante. Si x est une configuration valide,
J(x) la surface du plateau 40x50 non occupée par les pièces de x. Ainsi
J(∅) = 2000.
3) On propose la dynamique markovienne suivante. La chaı̂ne de Markov a
pour matrice de transition

Q(x, y) = pQC(x, y) + (1 − p)QD(x, y)

avec p ∈ (0, 1) et QD, QC des matrices de transition. On conseille de prendre


p = 0.95 ou p = 0.99.
La dynamique destructive QD est simple : si x est une configuration non
vide, on enlève une pièce au hasard dans x ; si x est vide on laisse x.
Vérifier que si x utilise n ≥ 1 pièces, alors x a n voisins dans QD.
X
1(QD(x,y)>0) = n .
y

4) La dynamique QC est constructive : on cherche à rajouter une pièce. Si


x utilise toutes les pièces, on ne fait rien car on a gagné vu que toute la
surface est occupée. Sinon, on choisit une pièce au hasard dans celles qui
restent et on la rajoute à la configuration x en la collant le plus possible :
c’est à dire que si la pièce va sur le plateau on la pousse à gauche, et en bas,
le plus possible pour laisser le moins de vide possible.

2
Montrer que la chaı̂ne Q est irréductible en définissant précisément l’espace
d’états.
5) Coder une exploration markovienne localisée. Faites 10 tentatives de 10
000 pas et donner le minimum et la moyenne des valeurs de J obtenues.
6) Coder un algorithme de Metropolis avec 3 température différentes T0 , T1 =
10T0 , T2 = 10T1 . Pour chaque température faire 10 tentatives de 10 000 pas
et donner le minimum et la moyenne des valeurs de J obtenues. Commenter
vos résultats.
7) Coder une algorithme de recuit simulé avec deux schémas de température:

T0 T0′
T (n) = . T ′ (n) =
log(n) n2

Pour chaque schéma de température faire 10 tentatives de 10 000 pas et


donner le minimum et la moyenne des valeurs de J obtenues. Commenter
vos résultats.

You might also like