3.1 基本構造

TAGにおけるエージェントの基本的な構造と,エージェントとの対話方法について説明します.教科書p.43 "3.1 エージェントの言葉 ACL" の内容に相当します.

概要

%0 user user Simple Simple user->Simple Q&A about "Designer?"

メッセージの流れ

useruserSimpleSimplerequest-informationalt[success]inform[error]sorry

プログラム

Simple.groovy

class Simple extends TAG {
    def loop(msg) {
        println msg
        if (msg._p=='request-information' && msg.question=='Designer?') {
            reply(msg, [_p:'inform', answer:'工大太郎'])
        } else {
            reply(msg, [_p:'sorry', msg:msg])
        }
    }
}

動作方法

課題

  1. [_p:'request-information', question:'Busy?']を送信してみましょう.[_p:'sorry', msg:[_p:'request-information', question:'Busy?', _f:'user'], _f:'Simple']が返信されます.なぜこの返信なのかを考えてみましょう.
  2. [_p:'request-information', question:'Busy?']を受信したら,[_p:'inform', answer:'No', _f:'Simple']と返すようにプログラムを変更してみましょう.
    1. エディタペインのプログラムを変更します.
    2. 変更を反映するには,エージェントを再起動します.
      • エージェントペインの Save&restart をクリックすると,エディタペインで変更された全てのエージェントが再起動し,変更を反映します.
      • (今回は使いませんが)restart all をチェックして Save&restart をクリックすると,変更されていないエージェントを含む全てのエージェントが再起動します.
    3. メッセージを送信して動作確認してみましょう.