Programmation branch and bound en C/C++
Fermé
ania_10
Messages postés
1
Date d'inscription
samedi 7 janvier 2006
Statut
Membre
Dernière intervention
7 janvier 2006
-
7 janv. 2006 à 09:32
mamiemando Messages postés 33650 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 30 avril 2025 - 15 avril 2008 à 19:18
mamiemando Messages postés 33650 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 30 avril 2025 - 15 avril 2008 à 19:18
bonjour tout le monde
voila, je dois faire un tp qui consiste à programmer l'algorithme du branch and bound (separation et evaluation) utilisé pour resoudre des problemes lineaire en nombres entiers en C ou C++
est ce que quelqu'un sait comment faire?
merci
voila, je dois faire un tp qui consiste à programmer l'algorithme du branch and bound (separation et evaluation) utilisé pour resoudre des problemes lineaire en nombres entiers en C ou C++
est ce que quelqu'un sait comment faire?
merci
A voir également:
- Programmation branch and bound en C/C++
- Application de programmation - Guide
- Disk boot failure insert system disk and press enter - Guide
- Mettre en veille un programme - Guide
- Partition find and mount - Télécharger - Récupération de données
- Spybot search and destroy français gratuit - Télécharger - Antivirus & Antimalwares
4 réponses
salut ania
on est à la recherche de la même chose
état initial , état final n'est pas ?
mais si je trouve quoi que ce soit je te tiendrais au courant.
on est à la recherche de la même chose
état initial , état final n'est pas ?
mais si je trouve quoi que ce soit je te tiendrais au courant.
mamiemando
Messages postés
33650
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
30 avril 2025
7 846
29 janv. 2006 à 21:20
29 janv. 2006 à 21:20
Moi je l'ai fait dans ma jeunesse et le plus simple c'est encore de faire un appel récursif à ta fonction d'exploration de l'arbre de recherche.
Bien penser à lui passer en paramètre la valeur de la solution optimale f(s*) (borne inférieure) trouvée jusqu'ici et le vecteur solution courant s. Ne pas perdre de vue que l'ordre dans lequel on affecte les variable peut avoir une grande influence sur la rapidité de l'algo(utiliser une heuristique pour bien la choisir)
Idéalement trouver un critère de coupure pour accélerer la recherche.
Attention à ne pas se planter avec les pointeurs. Il ne faut pas perdre de vue que lorsqu'on appelle une fonction en C (ou en C++), les paramètres passés à la fonction sont une copie des variables, ce qui permet d'éviter de se prendre la tête sur comment allouer la solution courante.
Ca doit donner un code qui a à peu près cette structure (à vérifier !).
Bonne chance
Bien penser à lui passer en paramètre la valeur de la solution optimale f(s*) (borne inférieure) trouvée jusqu'ici et le vecteur solution courant s. Ne pas perdre de vue que l'ordre dans lequel on affecte les variable peut avoir une grande influence sur la rapidité de l'algo(utiliser une heuristique pour bien la choisir)
Idéalement trouver un critère de coupure pour accélerer la recherche.
Attention à ne pas se planter avec les pointeurs. Il ne faut pas perdre de vue que lorsqu'on appelle une fonction en C (ou en C++), les paramètres passés à la fonction sont une copie des variables, ce qui permet d'éviter de se prendre la tête sur comment allouer la solution courante.
Ca doit donner un code qui a à peu près cette structure (à vérifier !).
//solution est une structure décrivant le vecteur solution à //caractériser. Dans cette structure il faut pouvoir savoir à tout //moment quelle variable n'ont pas encore été affectée (ie n'ont pas //été soumises à une séparation dans les noeud de recherche //supérieur) solution branch_and_bound(){ solution s_opt=solution_vide; int f_s_opt=+infini; //pour un pb de minimisation solution s=solution_vide; explorer noeud(f_s_opt,&s_opt,s); return s_opt; } void explorer noeud(int *f_s_opt,solution *s_opt,solution s){ tester critère de coupure sur s pour chaque variable non affectée si{ choisir variable candidate si pour chaque valeur xi de di (domaine de la variable si){ explorer(f_s_opt,s*,s <- s(si = xi)) } } si (f(s)<f(s*)){ free(s_opt); *s_opt=s; *f_s_opt=f(s); } }
Bonne chance
alias_bella
Messages postés
2
Date d'inscription
mardi 15 avril 2008
Statut
Membre
Dernière intervention
15 avril 2008
15 avril 2008 à 14:46
15 avril 2008 à 14:46
Bonjour à tous;
Je voudrais savoir si l'un de vous n'aurait pas déja programmé Branch and bound en C#.Net ou visual C++.Net; et plus particulièrement une aplication sut un probleme d'ordonnancement de tâches avec plusieurs processeurs.
Merci beaucoup à tous ceux qui pourrait m'accorder un peu de leur temps.
Je voudrais savoir si l'un de vous n'aurait pas déja programmé Branch and bound en C#.Net ou visual C++.Net; et plus particulièrement une aplication sut un probleme d'ordonnancement de tâches avec plusieurs processeurs.
Merci beaucoup à tous ceux qui pourrait m'accorder un peu de leur temps.
mamiemando
Messages postés
33650
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
30 avril 2025
7 846
15 avril 2008 à 19:18
15 avril 2008 à 19:18
Il serait plus logique d'utiliser une API C++ genre COIN-OR ou CPLEX. Sinon tu recodes ton propre branch and bound.