テニスをするか否かを決めるエキスパートシステム

 

 

 

 

 

 

 

 

 

 


Production Rule

初期値:shitudo=”mitei”; kaze=”mitei”; kaze=”mitei”; owari=”start”;

miteiは測定していないことを示す)

Rule1: If tenki==”ame”  Then  Keturon(no)

Rule2: If ((tenki==”hare”)&&(shitudo”takai”)) Then  Keturon(no)

Rule3: If ((tenki==”hare”)&&(shitudo”futu”)) Then  Keturon(yes)

Rule4: If ((tenki==”kumori”)&&(kaze”tuyoi”)) Then  Keturon(no)

Rule5: If ((tenki==”kumori”)&&(kaze”yowai”)) Then  Keturon(yes)

Rule6: If ((tenki==”hare”)&&(shitudo”mitei”)) Then  Situmon(shitudo)

Rule7: If ((tenki==”hare”)&&(kaze”mitei”)) Then  Situmon(kaze)

Ruleは上の方が優先的に実行されるよう考えてある)

===

Keturon(zzz)は、Merlinに答えを言わせた( M.Speak(“xxxx”) )後、プロダクションループを抜けるため変数 owari=”end” を行う。

Situmon(yyy)は、yyy=InputBox(“ボックスに表示する言葉”)とする。

===

 

 

 

 

 

 

 

 

 

 

 


==以下のプログラムは〜〜〜.vbsという名前にする。==

 

Set Ag=Wscript.CreateObject("Agent.Control.1")

Ag.Connected=True

Ag.Characters.load "MSAg","Merlin.acs"

set M=Ag.Characters("MSAg")

M.Show

M.MoveTo 200,200

 

tenki="mitei"

situdo= "mitei"

kaze= "mitei"

owari= "start"

 

  M.Speak "テニスしたいんですか?"

  M.Speak "今日の天気を教えて下さい"

  tenki= InputBox ("今日の天気?hare|kumori|ame")

 

  Do While owari="start"

     If tenki="ame" Then

        M.Speak ("今日は雨なのでテニスできません")

        owari="end"

     ElseIf  tenki= "hare" And situdo="takai" Then

        M.Speak ("今日は湿度が高いのでテニスできません")

        owari="end"

     ElseIf  tenki= "hare" And situdo="futu" Then

        M.Speak ("日射病の心配もないのでテニスをしましょう")

        owari="end"

     ElseIf  tenki= "kumori" And kaze="tuyoi" Then

        M.Speak ("今日は風が強いのでテニスできません")

        owari="end"

     ElseIf  tenki= "kumori" And kaze="yowai" Then

        M.Speak ("風もないのでテニスしましょう")

        owari="end"

     ElseIf  tenki="hare" And situdo="mitei" Then

        M.Speak "今日の湿度を教えて下さい"

        situdo= InputBox ("湿度?takai|futu")

     ElseIf  tenki="kumori" And kaze="mitei" Then

        M.Speak "風の強さを教えて下さい"

        kaze= InputBox ("風?tuyoi|yowai")

     End If

  Loop

 

  MsgBox "終了"