Démarrage rapide
Prérequis
# Debian/Ubuntu
sudo apt install cmake g++ libboost-all-dev libconfig++-dev flex bison libzmq3-dev
Compilation
mkdir build && cd build
cmake .. -DBUILD_TESTS=ON -DBUILD_EXAMPLES=ON
make -j$(nproc)
Options CMake
Option |
Défaut |
Description |
|---|---|---|
|
|
Compile les tests |
|
|
Compile les exemples |
|
|
Compile |
|
|
Compile |
Premier agent
#include <gagent/core/Agent.hpp>
#include <gagent/core/Behaviour.hpp>
#include <gagent/core/AgentCore.hpp>
#include <gagent/env/Environnement.hpp>
#include <iostream>
using namespace gagent;
// Behaviour : affiche "hello" toutes les secondes, 3 fois
class HelloBehaviour : public Behaviour {
int count_ = 0;
public:
HelloBehaviour(Agent* ag) : Behaviour(ag) {}
void action() override {
std::cout << "Hello from agent! (" << ++count_ << "/3)\n";
sleep(1);
}
bool done() override { return count_ >= 3; }
};
class HelloAgent : public Agent {
public:
void setup() override {
addBehaviour(new HelloBehaviour(this));
}
};
// Environnement minimal
class MyEnv : public Environnement {
public:
void init_env() override {}
void link_attribut() override {}
void event_loop() override {}
};
int main() {
AgentCore::initAgentSystem();
HelloAgent agent;
agent.init();
AgentCore::syncAgentSystem();
return 0;
}
Exemple d’échange ACL
Voir Messagerie entre agents pour un exemple complet d’échange REQUEST/INFORM entre deux agents.
Lancer les tests
cd build/tests
./two_agents_acl # échange FIPA ACL (3 cycles REQUEST/INFORM)
./test_acl # tests unitaires ACLMessage (66 assertions)
./test_request # protocole FIPA Request (16 assertions)
./test_contract_net # protocole Contract Net (9 assertions)
./test_subscribe_notify # protocole Subscribe-Notify (9 assertions)
./test_concurrent_send # thread-safety PushCache (3 assertions)
# Tests d'intégration plateforme (agentplatform doit tourner)
../platform/agentplatform &
./test_platform # AMS + DF (24 assertions)
kill %1
Visualisation web
# Lancer votre simulation
./mon_application &
# Démarrer le serveur de visualisation
./view/agentview # → http://localhost:8080
Voir Visualisation web — agentview pour la documentation complète.