Précédent   Forum des professionnels en informatique > Autres langages > Algorithmes
Algorithmes Forum d'entraide sur l'algorithmique, l'intelligence artificielle, le traitement numérique d'images et les mathématiques. Avant de poster : Cours d'algorithmique
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/12/2011, 15h53   #1
Membre Expert
 
Avatar de haskouse
 
Homme Mustapha EL HASSAK
Ingénieur développement logiciels
Inscription : août 2009
Messages : 627
Détails du profil
Informations personnelles :
Nom : Homme Mustapha EL HASSAK
Âge : 26
Localisation : Maroc

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : Finance

Informations forums :
Inscription : août 2009
Messages : 627
Points : 1 514
Points : 1 514
Par défaut Répartition de tâches. Quel algorithme ?

Bonjour,

J'ai le problème suivant :
un ensemble de personne qui doivent faire un ensemble de tâche, sachant que chaque tâche demande un nombre différents d'heure. Par exemple :

Personne1, Personne2, Personne3
puis
Tâche1(2H), Tâche2(5H), Tâche3(6H), Tâche4(1H), Tâche5(3H)

Si je suppose que ces 3 personnes peuvent effectuer n'importe laquelle de ces 5 tâches, je voudrais créer un algorithme qui permet de faire la meilleur répartition des tâches de façon à ce que chacun de ces 3 personnes travaille sur au moins deux tâches et au plus trois tâches, et que la somme des heures travaillée par chacun des employé soit proches (voir égales).

Je ne sais pas si j'ai bien expliqué mon problème.

En fait je veux savoir quel genre d'algorithme faut-il utiliser pour résoudre ce genre de problème ? J'ai fait des recherches et j'ai pu lire quelques trucs sur les algorithmes génétiques, algorithme de la colonnie de fourmi ...

Est ce que quelqu'un pourrait me guider ?
Merci par avance.
__________________
Le savant qui enseigne le bien aux gens et ne le met pas en pratique, est semblable à la torche qui éclaire en se brûlant. "Mohammed le Messager d’Allah" (que la paix et le salut d'Allah soient sur lui)

Mes articles publiés
haskouse est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2012, 02h54   #2
Membre régulier
 
Nehmé Bilal
Inscription : septembre 2008
Messages : 241
Détails du profil
Informations personnelles :
Nom : Nehmé Bilal
Âge : 29
Localisation : Canada

Informations forums :
Inscription : septembre 2008
Messages : 241
Points : 81
Points : 81
Le problème que tu essaies de résoudre est un problème d'optimisation. Deux approches sont possibles:
1- Programmation mathématique
2- Algorithmes heuristiques

Avec la programmation mathématique tu peux modéliser mathématiquement ton problème sous forme d'une fonction objective et d'une liste de contraintes. Par la suite, il suffit de passer le modèle mathématique à un solveur de programme mathématique tel que CPLEX qui utilisent des méthodes exactes tel que l'algorithme du simplexe et le "Branch & Bound" pour résoudre ton problème. Pour pouvoir utiliser cette méthode il va falloir que tu apprennes les principes de base de la programmation mathématique.

Sinon les méthodes heuristiques te permet aussi de résoudre ton problème. N'importe laquelle des métaheuristiques comme l'algorithme génétique, colonies de fourmis, recherche local itérée ou autre, te prémetra de résoudre ton problème mais il va falloir que tu apprennes à les utiliser. Des librairies qui implémentent ces métahreuristiques sont disponible sur le net mais pour savoir les utiliser il va falloir que tu comprennes les principes de bases. Je te conseille de passer par un livre. Mon préféré est "Metaheuristics search concepts" mais il est en anglais.

La différence entre les deux est que:
- Les méthodes de programmation mathématique sont généralement des méthodes exactes et déterministes et trouvent la solution optimale au problème dans un temps qui dépend de la taille du problème.
- Les méthodes heuristiques ne trouvent pas nécessairement la solution optimale à ton problème mais sont généralement plus rapides que les méthodes exactes et permet souvent de trouver des tres bonnes solutions rapidement. Par contre, pour qu'elles soient efficaces, ces méthodes nécessitent beaucoup plus d'effort que les méthodes exactes au niveau du codage et de l'adaptation de ces méthodes pour ton problème.

L'optimisation est un domaine très large et ce petit résumé est loin d'être complet.
Nehmé est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 08/01/2012, 13h00   #3
Expert Confirmé Sénior
 
Inscription : janvier 2007
Messages : 8 740
Détails du profil
Informations personnelles :
Âge : 54

Informations forums :
Inscription : janvier 2007
Messages : 8 740
Points : 9 963
Points : 9 963
Citation:
Envoyé par Nehmé Voir le message
ce petit résumé est loin d'être complet.
Certes, mais il est très clair

Note : à mettre dans les "A Lire" ??
__________________
"Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

Consultant indépendant.
Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
C, Fortran, XWindow/Motif, Java

Je ne réponds pas aux MP techniques
souviron34 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2012, 15h02   #4
Membre chevronné
 
Inscription : février 2010
Messages : 580
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Secteur : Finance

Informations forums :
Inscription : février 2010
Messages : 580
Points : 727
Points : 727
Bonjour,

Ce genre de problème quand il y a des millions de tâches doit effectivement être traité avec un algorithme optimisé, car sinon il est impraticable dans un temps raisonnable.
Or ici pour ce cas où tu n'auras jamais des millions de tâches. Je te propose l'algorithme glouton en choisissant par exemple d'attribuer en priorité les taches les plus longues.
Jimmy_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h50.


 
 
 
 
Partenaires

Hébergement Web