ホーム  Download  教科書  背景資料  技術資料  Q & A  

MTA-SDKクイックスタート


 「インストール」手順に従って、システム開発環境MTA-SDKをインストールしましたか?

 確認のために,さっそく動かしてみましょう。電源を入れ、Linuxが起動すると、たぶんWindowsやMacintoshみたいなグラフィックユーザーインターフェースGUIのデスクトップ画面になっているはずです。そこから解説します。

1。システム開発環境の起動と終了

 メニューやボタンでterminalモードに入ってください(terminalウインドウを開く)。



そして、ディレクトリdssに移動してしてください(lsコマンドやcdコマンドを使用する)。
  [student]$ cd dss
念のため、pwdコマンドで現在のディレクトリを確認することもできます。さて、まぎらわしいのですが,extPrologの実際の実行可能ファイル名は"xsheet"です.terminalウインドウでextPrologを起動したいので,以下のコマンドを入力します.
  [student]$ ./xsheet
そしてリターンキーを押すと、extPrologが起動し、2つのウインドウが開きます。



(場合によっては,再起動が必要かも知れません.)

 これがMTAのシステム開発環境です.左側のDialogウインドウは、あなたが作ったユーザモデルを読み込んで実行する場所です。(古い.pタイプのユーザモデルなら,ここで直接プログラミングすることもできます.)プロンプトは[x>]となっているはずです。[ 終了は、右側のMTableウインドウにあるexitボタンで行ないます。終了すれば、Linux環境に戻ります。]

2。動作確認

 何か動かしてみましょう.すでに参考モデルjar.pができあがっていますので、Dialogウインドウの中で
  x> jar.p
を実行すると、なんだか動きます。
「トレースするか」と聞かれたら,n と答えてください.


 このjar.pが何のモデルなのかは聞かないでください(あくまでも動作確認のためです).終了は、MTableウインドウにあるexitボタンで行ないます。終了すれば、Linux環境に戻ります。プログラムが暴走したり、フリーズしたときは、CTRL+Cで強制終了させます。

 ここまでできれば,「MTA-SDKが正常にインストールされた」ことになります.

3。ユーザモデルの作成「例:WGC問題を解く」

 通常は、システム開発環境を起動する前に、テキストエディタでユーザモデルを作成します。「テキストエディタでユーザモデル作成→extProlog(xsheet)を起動する→作成したユーザモデルを読み込んで(コンパイルして)実行する」という手順です。

 Linux環境にあるとき、あなたのLinuxに付属している、日頃使用しているテキストエディタを起動し、ユーザモデルを作成し,保存します(拡張子は".set")。実行可能ファイルxsheetが存在する同じフォルダ(dssまたはtps)に保存します。必ず、ここに保存しなければ動きません。

<WGC問題>

 川に差し掛かると,小さなボートがひとつありました。農夫fは,狼1匹w,山羊1匹g,キャベツ1個cと一緒でした。
・川を渡る際の条件:
(1) ボートを操作できるのは,農夫だけです。川を泳いで渡ることはできません。
(2) ボートには,1回の横断につき1つの物しか積めません。
(3) 狼と山羊だけにすると,狼が山羊を食べてしまいます。
(4) 山羊とキャベツだけにすると山羊がキャベツを食べてしまいます。
農夫は最低何回川を横切れば,どれも失わずに川を渡れるでしょうか?
 この問題のイメージ図は次の通りである。

  最初   f,w,g,c →川→ (対岸)
  最後      →川→ f,w,g,c

 状態(状況)c を、左岸にいるメンバーの集合で表現する。たとえば、{"f","w","c"}とは、こちらの岸に農夫と狼とキャベツがいることを表わしている。反対にいえば、対岸に羊だけがいることになる。まぎらわしいですが,cは「状態」を表わす変数で,"c"はキャベツです.
 この問題の設定は,結局,状況を初期状態 c = {"f","w","g","c"}から、最終状態 c = { }に、どのように移動させればいいかである。また,農夫は,毎回,誰を連れてゆくかの選択をしなければならない.選択の範囲は,A = {"w","g","c", 0} である.0は誰も連れて行かないことを表わしている.
 この問題を解くユーザモデルは、ここにあります。1行目はコメント行で、それ以下の行に、WGC問題そのものの表現がオートマトンの状態遷移関数delta(c,a)や状態評価関数goal(c)で記述されています。

 通常は,このような記述をテキストエディタで作成し,テキストファイルとして保存するわけです.しかし,ここでは取りあえず書いたことにして,画面に表示されたものをダウンロード(あるいはテキストエディタにコピー&貼付け)し,ファイルをwgc80.setという名称で保存します.

 さて、extPrologを起動します.左側のDialogウインドウに,ファイル名wgc80.setを入力し,リターンキーを押すと,コンピュータが勝手にコンパイルし,問題解決システム(wgc80.p)を作成し,求解してくれます(ただし,実行開始時に,4回ほど設定を聞かれますが,y, y, y, n と答えてください).

 注:「WGC問題を解くシステム」の実際の開発手順の詳細は、教科書の第5章に書いてあります。その他,資料紹介ページにも文献があります.

4。モデルの修正(エディタの使い方)

 問題を変更したら、解が変わります。たとえば、上記のユーザモデル wgc80.set は、初期状態が{"f","w","g","c"}です。つまり、全員がこちらの岸にいることを前提としています。しかし、変更して{"f","w","c"}にすることができます。つまり、羊だけが対岸にいる状況です。この状態から出発したら、どんな答えになるでしょうか。

 そのためには、エディタを利用してファイル wgc80.set の内容を書き換えることになります。たぶん、GUIに戻って、ファイル wgc80.set をダブルクリックすると、システム標準のエディタが起動するので、そこで修正します。下から4行目を、
    initialstate()=c < - > c:={"f","w","c"};
に書き換えます。そして、別のファイル名(例えば wgc81.set)にして保存します。

 再びterminalウインドウに戻って、そこでextPrologを起動し、dialogウインドウでwgc81.setを実行すると、コンピュータが勝手に求解してくれます。こんどは、違う答えがでてくるはずです。困ったときは,Ctrl + C で強制終了させます.