Macro VBA d'optimisation

ALEA()

XLDnaute Occasionnel
Bonjour,

J'aurais besoin de votre aide pour un code VBA de recherche dans une grille aléatoire.

Mon niveau VBA m'a tout juste permis de créer l'alea dans la grille.

Je suis incapable de faire le test de recherche et d'optimisation trouvant le max en W1, en générant des grilles aléatoires successives en boucle.
Quand le Max en W1 progresse, la nouvelle grille pourrait être copiée dans un endroit du tableau jusqu'à un nouveau Max supérieur ?

Je joins un exemple.

Merci de votre aide.
 

Pièces jointes

  • optimisation1.xlsm
    16.8 KB · Affichages: 49

vgendron

XLDnaute Barbatruc
Hello
avant d'optimiser, il faut peut etre regarder pour faire le code de la recherche...
et avant de coder... un peu d'algo...
Si j'ai bien compris
1) tirage d'une grille 9*9 de nombres aléatoires compris entre 1 et 70
2) liste de "combinaison" à chercher dans la grille ==>l'ordre d'apparition des nombres ne compte pas...
3) ces combinaisons de 5 éléments peuvent etre en Vertical, Horizontal ou diagonal (vers la gauche ou vers la droite)..


une idée:
1) commencer par lister TOUTES les combinaisons possibles du tableau 9*9
===> 5 possibles par lignes ==>5*9 = 45
===>5 possibles par colonne==>5*9=45
==>25 en diagonale vers la droite
==>25 en diagonale vers la gauche

soit un total de 140 combinaisons==> à mettre dans une table, ou un dictionnaire ou....
puis.. tester la présence des 500 combinaisons ===> OUI si présente.......
 

ALEA()

XLDnaute Occasionnel
Bonjour,

Merci beaucoup pour cette macro. Je vais tester le temps d'exécution avec un nombre supérieur de lignes.

Test fait avec 150 lignes, environ 2 sec ce qui est très rapide.

Par contre, le taux de "oui" est très faible...

Est-il possible de figer dans ma procédure dictionnary alea() les séries déjà trouvées dans la grille (et l'effacer dans la liste pour ne pas la rechercher une 2ème fois)?
Ci-joint une explication en exemple.

=> ou dois-je ouvrir un nouveau sujet pour cette méthode d'aléa spécial? Vous me le dites merci

Bonne journée.
 

Pièces jointes

  • optimisation4.xlsm
    22.8 KB · Affichages: 27
Dernière édition:

vgendron

XLDnaute Barbatruc
Bonjour
Euh.. je ne comprend pas ce que tu veux faire..
ton tableau 9*9 est figé tant que tu ne relances pas la macro "alea"
tes series à droite (colonnes O:S) j'ignore d'ou elles viennent..donc. à priori, elles sont figées..

taux de "oui" est faible.. effectivement.....
tirage de 6 nombres de 1 à 70 ===>70*69*68*67*66*65 combinaisons possibles = 94403509200
parmi lesquelles tu ne tires que 140 combinaisons (pour remplir le tableau.. et encore.. je n'ai pas parlé des doublons...)
ajouté à ca la probabilité de tirer 140 combinaisons (parmi 94403509200) et qu'elles soient communes avec tes 500... forcément... c'est faible....

hier, j'ai lancé une boucle "Tirage nouveau tableau alea", test des 20 combi jusqu'à trouver au moins 1 OUI
ca a tourné pendant 5mn... et toujours rien...
 

ALEA()

XLDnaute Occasionnel
Bonjour

Je voulais dire que si une série est trouvée, elle est effacée dans la liste et la série est figee dans la grille 9x9
La boucle continue mais l'‘alea ne touche plus ces cellules verrouillées dans la grille
Au départ, lalea de remplissage se fait sur 81 cellules puis diminue en sautant ces cellules déjà trouvées et effacées de la liste
Je ne sais pas si c'est plus clair?
Bonne journée
 

vgendron

XLDnaute Barbatruc
bizarre.. le besoin serait finalement de trouver une grille dont TOUTES les combinaisons sont listées à droite...

ce serait pas plus simple de faire une grille PUIS lister les combinaisons dans les colonnes O:S ???

Voir PJ
j'ai mis des boutons
1: Tirage d'un nouveau tablo ==> tirage aléatoire des 81 cases
2: lister les combi du tablo ==> génère la liste complète des 140 combinaisons possibles du tableau
3: Tester la présence des combi listées


1er test à faire:
1 generer nouveau tablo
2 lister combi
3 tester ==> tu vas donc avoir 140 OUI puisque tu testes les combi qui viennent du tableau

2eme test
1 generer nouveau tablo ==> la liste des 140 n'est donc plus à jour
3 tester directement (SANS lister)===> probablilité d'avoir des OUI trèèèèèèèès faible
 

Pièces jointes

  • optimisation4.xlsm
    31.2 KB · Affichages: 40

ALEA()

XLDnaute Occasionnel
Re,
Merci pour ton fichier.
" le besoin serait finalement de trouver une grille dont TOUTES les combinaisons sont listées à droite..."

non, pas toutes, mais si on fige chaque série trouvée, on peut peu à peu des alea en assembler dans la grille?
(c'est difficile, on demande beaucoup à Excel là, on est presque dans l'Intelligence Artificielle) En effet, si on a 300 séries (fixes) en O, il faut en assembler dans un carré de 9X9.......

Merci pour ton travail. C'est super!
 

Statistiques des forums

Discussions
312 104
Messages
2 085 335
Membres
102 865
dernier inscrit
FreyaSalander