人工知能:課題

提出期限は2001年1月6日です!


配布したプリントはこちら


課題

OPS5を用いた例題を作成し,シミュレーションを行う. 作成した例題の説明および,行ったシミュレーション結果をレポートにまとめること. 例題はサンプルプログラムを参照して作成してください.

OPS5のダウンロード先

http://www.vector.co.jp/soft/dos/prog/se023100.html

ファイル構成


OPS5起動方法

  1. ops5ex28.lzh を展開.
  2. DOSプロンプトを起動し,上記のアーカイブを展開したフォルダに移動.
  3. コマンドラインから OPS5 を起動.

実行例

以下に,講義時に行った例題を再掲し,コメントを付けて紹介する.

基本コマンド

OPS5> (p テスト (a) --> (remove 1) (write a がありました (crlf)))
		# ルールの入力.
		# ルールの意味「もし,WM(作業記憶:Working Memory)
		# 内に要素aが存在するならば,そのWMEを削除し画面に
		# メッセージを出力する」

OPS5> pm	# 登録されているルールの確認
(p テスト
    (A)
-->
    (REMOVE 1)
    (WRITE A がありました (CRLF)))

OPS5> (make a)	# WMへの要素aの追加
OPS5> wm	# WM内に存在する要素の確認
1 [NIL] (A)

OPS5> run	# ルールの実行
A がありました	# 実行結果
OPS5> wm	# WMから要素aが削除されているため,何も表示されない
OPS5>

例題:数を数える

WM の中に (a) と言う WME がいくつあるか報告するには,どうすればよいのか? 例えば、次のような3つの規則で実現が可能である. これをOPS5で表現すると下記のようになる.
 (p 最初は1
    (a)		# 条件部「要素aが存在するならば」
 -->
    (remove 1)	# 実行部「数える対象である要素aを削除し,かつ,
    (make count 1))	# カウンタを用意し,初期値を代入する.」

  (p 要素があれば数える
    (a)		# 条件部「要素aが存在し,かつ,
    (count )	# countが存在するならば」
 -->
    (remove 1)	# 実行部「その要素aを削除し,かつ,
    (modify 2 count (compute  + 1)))	# countに1を加える.」

 (p 答えを返す
    (count )	# 条件部「countが存在するならば」
 -->
    (remove 1)	# 実行部「その要素countを削除し,かつ,
    (write 要素 a は  個ありました (crlf)))	# countの値を出力する.」
上記の3つのルールを入力後,要素aをWMに追加し,ルールを実行すると 要素aを数えてくれる.
OPS5> (make a)
OPS5> (make a)
OPS5> (make a)
OPS5> run
要素 A は 3 個ありました
OPS5> 

実行結果のファイルへの出力方法(例:log.txtに書き出す場合)

OPS5> (openfile dump log.txt out)       # dumpはファイル識別名です
OPS5> (default dump write)              # dumpにOPS5の出力を書き出す
OPS5> (run)
OPS5> (closefile dump)                  # ファイルクローズ
上記のように実行結果を log.txt に書き出すと,OPS5.exeのある フォルダ上にそのファイルが保存される.

その他のコマンド及びマニュアルの所在

前述の例題およびOPS5の基本的な使用方法は,ops5ma27.lzhに含まれている beginer.doc に記載されている. また,OPS5に実装されているコマンド等のマニュアルはops5ex28.lzh内のRefer.doc に記載されている.

実行例2(例題:数を数える)

例題数を数えるを用いて,実行結果をファイルに出力するまでの手順を示す.
  1. 例題を作成する.
    ここでは「数を数える」を例題として採用する.ソースファイルはここ(count.ops)注意:ファイルの拡張子は .ops とすること
  2. 実行スクリプトを作成する.
    作成したソースファイルを読み込み,実行するには,以下のような作業が必要である.
      OPS5> (watch 2)	# 実行ルールとWMEの削除と追加に関するトレース
      OPS5> (openfile dump log.txt out)	# 結果出力用ファイル log.txt の指定
      OPS5> (default dump write)	# 出力の書き出し開始
      OPS5> (@ count.ops)	# ソースファイル読み込み
      OPS5> pm	# ルールの確認
      OPS5> (make a)	# 複数回WMEaを作成
      OPS5> run	# 実行
      OPS5> (closefile dump)	# 出力の書き出し終了
    
    これらの実行手順をスクリプト(example.ops)として作成し,保存する.
  3. スクリプトの実行
    • 方法1:OPS5起動し,を手順2で作成したスクリプトを入力する.
    • 方法2:スクリプトファイルを startup.ops という名前でOPS5本体のあるフォルダに保存すると,OPS5を起動したときに自動実行される.
  4. 実行結果の参照
    作成したスクリプトを実行すると,OPS5本体のあるフォルダ上に「 Log.txt 」というファイルが作成されている.このファイルに先ほどのトレース結果が書き出されているので,これを参考に正しく実行できているかを確認し,レポートを作成してください.

質問は當間まで.