テニスをするか否かを決めるエキスパートシステム
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 "終了"