A voir également:
- Programmation branch and bound en C/C++
- Spybot search and destroy - Télécharger - Antivirus & Antimalwares
- Application de programmation - Guide
- Find and mount - Télécharger - Récupération de données
- Disk boot failure insert system disk and press enter - Guide
- Mettre en veille un programme - Guide
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.
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
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.