Bin Puzzle
Bin Puzzle
Bin 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
pieces=[(14,27),(8,36),(8,9),(6,14),(34,5),(18,9),(22,9),(22,9),(18,21),(18,15)]
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
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