import random # Liste des sujets sujets = ["Le profil des députés en Pays de la Loire", "Les communes miroirs", "Les scrutateurs des bureaux de vote", "Les candidats aux élections législatives", "Les programmes des candidats à la présidentielle", "Le jeu des échelles"] # Choix des équipes choix = [ [0, 3, 4, 1, 5, 2], [4, 1, 5, 3, 0, 2], [3, 4, 0, 2, 5, 1], [5, 4, 3, 1, 0, 2], [0, 1, 3, 4, 5, 2], [4, 5, 1, 3, 0, 2], ] nb_sujets=len(sujets) affectation = list(range(nb_sujets)) max_tries=10 cout_min=None # Optimisation type monté carlo : on fait sur random sampling for i in range(max_tries): # Génération d'une affectation aléatoire random.shuffle(affectation) # On calcule son cout cout = 0 for i in range(nb_sujets): rang=choix[i].index(affectation[i]) # On favorise les premiers choix tout en pénalisant beaucoup plus les derniers choix cout=cout+2**rang # Autre variante (en commentaire ici) : pénalisation linéaire # cout = cout + rang # On garde la solution si elle minimise le cout if cout_min == None or cout < cout_min: cout_min = cout best_affectation = list(affectation) # Affichage du résultat print("cout min:",cout_min) print("affectation finale:") for i in range(nb_sujets): print("equipe ", i+1 ,": ", sujets[best_affectation[i]])
Run
Reset
Share
Import
Link
Embed
Language▼
English
中文
Python Fiddle
Python Cloud IDE
Follow @python_fiddle
Browser Version Not Supported
Due to Python Fiddle's reliance on advanced JavaScript techniques, older browsers might have problems running it correctly. Please download the latest version of your favourite browser.
Chrome 10+
Firefox 4+
Safari 5+
IE 10+
Let me try anyway!
url:
Go
Python Snippet
Stackoverflow Question