Université de Montpellier - Master Informatique 1ère année

Programmation orientée agents (FMIN108)

Resp: Jacques Ferber,

TP 8 - Réseau contractuel et communications
sous Warbot (2ème partie)

 

 

1. Le Réseau contractuel

On veut implémenter le protocole d'appel colelctif qui est présenté dans le cours qui se trouve en ligne.

On suppose que les managers sont des Explorer qui cherchent à recruter des Tireurs (heavy ou rocket launchers) pour accomplir leur mission.

1ère question

Implémenter le protocole d'appel collectif vu dans le cours (simplification du réseau contractuel), en supposant que les Explorer lancent un appel d'offre dès qu'ils voient la base ennemie. Ils s'arrêtent devant la base et ils lancent un appel d'offre pour récupérer les n Tireurs (tanks lourds ou lanceurs de missiles) les plus près d'eux (ils comptent jusqu'à n. S'il n'arrivent pas à recruter n agents au bout de k tours (time out) ils abandonnent la tâche, c'est à dire qu'ils reommencent à se déplacer aléatoirement. Faites d'abord un demi-tour et comptez h ticks avant de relancer la possibilité de faire ce protocole).

Pour cela l'Explorer lance un appel d'offre, avec un numéro de tâche, vers les Tireurs de son équipe (performatif: cfp). Les Lanceurs, qui ne sont pas déjà occupés par une tâche, font une proposition avec leur énergie et la distance vis à vis de l'Explorer (performatif: propose si il ne peut pas, performatif refuse). Les Explorateurs choisissent les Tireurs les plus proches ayant la meilleure énergie (à vous de décrire et implémenter la fonction de choix) et ils leur attribuent la tâche (performatif: accept). Quand un Tireur se voit attribuer une tâche, il ne peut accepter d'autres tâches. La tâche est finie pour un Tireur quand il a accompli sa tâche (la base adverse est détruite) ou quand le Tireur lui dit que la tâche est terminée.

Réseau contractuel avec plusieurs demandeurs

Voir ce qui se passe quand plusieurs Explorateurs demandent en même temps (ou presque en même temps) de recruter un grand nombre de Tireurs.Voir que l'on peut atteindre un dead-lock si les Lanceurs ont une engagement trop fort.. Comment alors les "désengager" de leurs tâches?

2. Défense de la base

Implémentez le réseau contractuel pour que la base soit sure d'avoir toujours n Tireurs à côté d'elle pour la défendre.

C'est la base qui initie le protocole. Les Tireurs recrutés restent près de la base, les autres peuvent continuer leurs activités.

3. Attaque combinées

Intégrer à la fois les attaques par Exploreurs et les défenses gérées par (la ou les bases) en même temps et observez les conséquences en fonction du nombre n et n' que vous déterminez.