Bonjour à tous!
J'ai eu l'occasion d'étudier la technique d'optimisation du recuit simulé sur un plan mathématique. ( --> donc théorique! ). Or je voulais créer un petit programme pour démontrer l'efficacité pratique de cette méthode et, n'étant pas un pro en programmation, je bloque sur le code!
Je n'arrive pas à traduire mon problème en langage informatique, peut-être que vous pourrez m'y aider...
Voici le projet :
Il s'agit de placer 25 composants éléctroniques dans des places prédéterminées. Les composants sont reliés entre eux d'une facon prédéterminée ( voir schéma plus bas ) et le but de l'optimisation est de trouver la configuration qui minimise les connections entre les composants. La seule "opération" autorisée pour trouver la solution optimale est la permutation de deux composants. La solution optimale est connue à l'avance ( il s'agit uniquement de démontrer l'efficacité du recuit simulé ).
Voici le schéma : les chiffres représentent les composants.
1-2-3-4-5
6-7-8-9-10
11-12-13-14-15
16-17-18-19-20
21-22-23-24-25
Même si les chiffres de sont pas alignés, il faut se représenter un carré comme ci dessous : les 1 représentent les composants ( pas de distinctions entre les composants )
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
J'ai représenté au dessus la solution optimale, ce qui me permet d'expliquer comment les composants sont reliés :
le 1 est relié avec le 6 et le 2, le 2 est relié avec le 1 le 3 et le 7, le 3 est relié avec le 2 le 4 et le 8 etc.
Je précise ( comme dans le titre du topic ) que j'utilise un langage orienté objet!
Alors, je représente les composants et les places disponibles par deux arrays de points ( je représente les composants par des points ). Pour les permutations, je sélectionne au hasard deux indexes de l'array des composants et j'inverse leur contenu.
Mais j'ai un problème pour relier et calculer le coût ( la longueur ) total des connections d'une manière efficace... C'est à dire que la seule technique que j'ai trouvé est de considérer chaque composant et de spécifier ce que j'ai dit plus haut : le composant 1 est relié au 2 et au 6 etc. pour chaque composant! N'y aurait-il pas un moyen de calculer le cout total à l'aide d'un loop? Je n'ai pas trouvé comment...
J'espère avoir été clair, j'ai fait mon possible!
Merci pour votre aide!
-----