Je n'arrive pas à trouver de littérature sur les algorithmes qui peuvent être utilisés pour résoudre un problème d'affectation généralisée plusieurs à plusieurs (GAP), c'est-à-dire des modèles où non seulement plus de tâches peuvent être assignées à un agent, mais plusieurs agents peuvent également être assigné à une tâche (les AP un à un et un à plusieurs sont discutés dans un article de Pentico). Je ne connais pratiquement rien des problèmes d'affectation, mais j'ai rencontré un problème comme celui-ci au cours de mes recherches et j'aimerais en savoir plus sur la façon de les résoudre. Est-il possible qu'un tel BAP plusieurs à plusieurs soit connu sous un autre nom, ou y a-t-il une raison différente pour laquelle si peu de documentation à ce sujet peut être trouvée?
Pentico, D. Problèmes d'affectation: enquête sur le Golden Anniversary . Journal européen de recherche opérationnelle (2007); 176 (2): 774-793.
la source
Réponses:
Votre problème ne semble pas être "que la somme des" agents "doit fournir exactement une portion discrète d'énergie ou rien pour chaque demande ...", non? Ou tu ne m'as pas compris. Je vais donc essayer de mieux décrire mon problème, aussi parce que j'ai trouvé une solution.
Dans mon problème, j'ai un ensemble d'agents où chacun a un budget de certaines ressources, qui peuvent partager le coût des tâches, qui devraient être "exécutées" 1 fois ou non (plusieurs-à-plusieurs-affectation sans avoir besoin de "exécuter" chaque tâche). Cela signifie: la somme des solutions partielles d'agents pour la tâche x doit être inférieure ou égale au coût de la tâche x. L'objectif est de trouver l'ensemble de tâches ayant le plus de valeur que les agents peuvent payer.
Je travaille avec un logiciel gams, je le décris donc dans le style gams: définir un agent, t le coût du paramètre de tâches (t), la valeur (t) des ressources du paramètre (a)
variable positive y (a, t) (non-int), partie de l'agent a pour le coût de la tâche t objectif:
Au moment où j'écrivais, j'avais une solution mais je ne savais pas comment séparer les solutions de tâches partielles. Mais maintenant, j'ai découvert que je peux construire une contrainte avec un
variable binaire
z(t)
taskcost_bin_constraint z(t) =e= sum(a, y(a,t)) / cost(t);
sum(a, y(a,t)) / cost(t)
dans la formulation de l'équation est quelque chose entre 0 et 1 et par cette contrainte,z
est 0 pour tous moins de 1 et 1 pour 1. avec cettaskcost_bin_constraint
objectif serait:Je me demandais mais cela fonctionne et me donne de meilleures solutions sous la contrainte, pour construire une tâche complète ou non.
Peut-être que vous pouvez également ajouter une telle contrainte? Une contrainte pour répondre exactement aux demandes, exprimée dans une expression avec une valeur entre 0 et 1.
la source
Il existe un algorithme de recuit déterministe qui résout le problème d'affectation un à un ou de manière équivalente le problème de partition de la matrice dyadique.
Cependant, au lieu d'utiliser des valeurs entières [0, 1], on peut utiliser des valeurs fractionnaires (de sorte que l'algorithme reste le même) ou même l'étendre pour gérer plus d'une affectation (en ajoutant une boucle interne et, par conséquent, la matrice devient un tableau hyper-dimensionnel ou tenseur)
Le document est ici: http://www.researchgate.net/publication/2382666_Pairwise_Data_Clustering_by_Deterministic_Annealing/file/d912f50c75945d835b.pdf
la source