Problème d'ordonnancement : casse tete
miki
-
tafiscobar Messages postés 1281 Statut Contributeur -
tafiscobar Messages postés 1281 Statut Contributeur -
Bonjour,
J'essaie de resoudre un problème qui me cause pas mal de soucis..il s'agit d'un problème de planification. Concretement voici le problème :
- j'ai une liste doublement chainée composée d'elements de
la forme STRUCT Element { string nomElem;
int debut;
int duree;
}
Ces elements sont classés par ordre croissant dans la liste (par "debut") (ordonnancement). On me fourni ensuite un ensemble d'elements avec une deadline pour l'ensemble de ces elements et je dois les inserer dans la liste. Noter ici que les nouveaux elements peuvent s'inserer n'importe en respectant le deadline (en debut,milieu,fin de la liste). Etant donné que les elements doivent etre classés par ordre croissant, il faut prevoir le cas ou on soit obligé de trouver un "trou" entre 2 elements ou de decaler des elements existants pour avoir assez de place pour inserer l'element qui arrive. Le hic,c'est que lorsqu'on arrive pas à inserer TOUS les nouveaux elements,il faut stoper l'operation et remettre la liste dans l'etat initial (suppression des nouveaux elements supprimés). Bien sur ,entre temps,il y'a eu certainement des operations de decalage et la suppression pure et simple des nouveaux elements ne peut pas remettre la liste dans l'etat initial......
Quelqu'un aurait il une idée pour gerer cette situation ??
Merci à tous..
J'essaie de resoudre un problème qui me cause pas mal de soucis..il s'agit d'un problème de planification. Concretement voici le problème :
- j'ai une liste doublement chainée composée d'elements de
la forme STRUCT Element { string nomElem;
int debut;
int duree;
}
Ces elements sont classés par ordre croissant dans la liste (par "debut") (ordonnancement). On me fourni ensuite un ensemble d'elements avec une deadline pour l'ensemble de ces elements et je dois les inserer dans la liste. Noter ici que les nouveaux elements peuvent s'inserer n'importe en respectant le deadline (en debut,milieu,fin de la liste). Etant donné que les elements doivent etre classés par ordre croissant, il faut prevoir le cas ou on soit obligé de trouver un "trou" entre 2 elements ou de decaler des elements existants pour avoir assez de place pour inserer l'element qui arrive. Le hic,c'est que lorsqu'on arrive pas à inserer TOUS les nouveaux elements,il faut stoper l'operation et remettre la liste dans l'etat initial (suppression des nouveaux elements supprimés). Bien sur ,entre temps,il y'a eu certainement des operations de decalage et la suppression pure et simple des nouveaux elements ne peut pas remettre la liste dans l'etat initial......
Quelqu'un aurait il une idée pour gerer cette situation ??
Merci à tous..
4 réponses
j'ai trouvé une solution : c'est de journaliser les decalages successives des Elements dans un fichier et lorsque la planif ne marche pas,je restaure les Listes initiales à partir du fichier de journalisation.
Mais le problème de cette solution,qui marche parfaitement bien,c'est les accès disques pour l'ecriture et surtout pour la lecture,trop importants pour une application temps réel. Il me faut donc trouver une solution qui marche de la meme facon, mais tout en gardant les journalisations en memoire (j'avoue ne pas savoir comment le faire pour le moment). Si t'a une idée de comment je pourai garder ces infos de decalage en memoire,fais moi signe.
C'est comme trouver une solution pour garder en memoire les lignes qu'on devait ecrire dans un fichier de log.
Bien sur,je suis preneur pour toute autre solution..
Bon week end a toi et à bientot.
Mais le problème de cette solution,qui marche parfaitement bien,c'est les accès disques pour l'ecriture et surtout pour la lecture,trop importants pour une application temps réel. Il me faut donc trouver une solution qui marche de la meme facon, mais tout en gardant les journalisations en memoire (j'avoue ne pas savoir comment le faire pour le moment). Si t'a une idée de comment je pourai garder ces infos de decalage en memoire,fais moi signe.
C'est comme trouver une solution pour garder en memoire les lignes qu'on devait ecrire dans un fichier de log.
Bien sur,je suis preneur pour toute autre solution..
Bon week end a toi et à bientot.
merci