-
Sujet pour Solveur
Bonjour à tous,
j'ai une petite question, je souhaiterai savoir si déjà si mon problème est linéaire ou non linéaire et si un solveur assez trivial pouvait être mis en place.
-Il y a 10 joueurs
-Un joueur a une note qui lui est associée
-Une équipe est composée de 5 joueurs
Je souhaiterai minimiser la différence entre le total des notes des joueurs de chaque équipe.
Exemple avec 4 joueurs:
J1: 1 | J2: 1 | J3: 2 | J4: 2
Equipe 1 : J1/J3
Equipe 2 : J2/J4
Merci à vous d'avoir pris le temps d'arriver jusqu'ici.
-
Salut.
Ton problème est linéaire (du 1er degré) mais la solution est discrète.
Le solver Excel est tout à fait capable de faire des optimisations avec des solutions discrètes. :P
Par ailleurs il sait aussi faire des optimisations sur des problèmes non-linéaire et de surcroît avec des contraintes.
Cordialement
-
1 pièce(s) jointe(s)
Bonjour,
Je suis preneur de toute explication pour l'emploi du solveur dans l'optimisation de cette situation.
Autre possibilité
Le problème posé par Pymento m'évoque une situation combinatoire et avec un effectif total de de 10 joueurs et 5 joueurs choisis par équipe, le nombre d'équipes possibles donné par COMBIN(10;5)
soit 252 n'est tout de même pas un problème insurmontable pour Excel. Un tableau de calcul de 252 lignes ne fait pas peur. La question reste d'écrire les 252 combinaisons.
Tant que ce nombre en fonction de l'effectif total d'éléments et de l'effectif d'éléments choisis par combinaisons n'est pas trop élevé, quelques formules permettent de les écrire.
Pour l'exemple de Pymento.
En définissant les noms EffectifTotal (=10) , EffectifChoix(=5), (ce qui permet d'utiliser la feuille pour un autre problème combinatoite ssans retoucher les formules), puis enfin Test par :
Code:
= EffectifTotal + 1 + COLONNE() - EffectifChoix
on pourra vérifier que dans n'importe quelle cellule d'une des cinq colonnes de la plage A : E , test renvoie successivement les valeurs 7, 8, 9, 10, 11.
En laissant la ligne 1 pour des titres éventuels, utiliser 5 colonnes (EffectifChoix) à partir de la colonne A et
ligne 2 dans chacune des cellules de A2 : E2 écrire :
En ligne 3, on utilisera 3 formules légèrement différentes :
en A3
Code:
=SI(B2<Test;A2;A2+1)
en E3
Code:
=SI(E2+1<Test;E2+1;D3+1)
en B3
Code:
=SI(C2<Test;B2;SI(B2+1<Test;B2+1;A3+1))
à recopier en C3 et D3.
[IMG]http://nsm08.casimages.com/img/2013/...6810764302.jpg[/IMG]
Recopier les 5 formules de la plage A3 : E3 vers le bas jusqu'à la ligne 253 incluse.
On a les 252 combinaisons de la combinaison 1; 2 ; 3 ; 4 ; 5 à la combinaison 6 ; 7 ; 8 ; 9 ; 10 .
Avec une table de deux colonnes donnant la liste des joueurs et la liste des notes, on peut (fonction INDEX) écrire la combinaison de chaque équipe sur une plage de largeur identique ,
le total des notes (fonction SOMMEPROD) puis pour chaque équipe la détermination de "l'équipe complémentaire" sur une plage de largeur identique (formule matricielle combinant les fonctions INDEX, PETITE.VALEUR et EQUIV),
le total des notes, la différence entre les scores (fonction ABS) et le minimum de la colonne des différences.
Cette proposition de recherche se trouve sur le classeur joint.
Cordialement
Claude
-
Merci Claude pour votre exhaustivité !
Effectivement en tordant excel on peut arriver à des résultats, mais ma problématique ne s'arrête pas là. J'ai plusieurs contraintes combinatoires à rajouter par la suite. J'ai décidé de ne pas utiliser le solveur, qui dans le contexte me semble limité définitivement.
J'ai opté pour un algorithme génétique en python. Qui fait le travail très bien !
Ou en vb, si on veut rester dans l'environnement excel.
Si vous avez besoin de plus de détails n'hésitez pas je vous ferai un petit topo.