bearaboc 发表于 2004-12-11 17:19:48

[求助]逻辑运算符and,or,not的具体使用方法

在所有AI教程中均未看到逻辑运算符and,or,not的具体使用方法,求高手赐教!
卧龙先生将这个帖子固顶,让大家都学学。
[此贴子已经被卧龙先生于2004-12-11 22:35:10编辑过]

卧龙先生 发表于 2004-12-11 20:15:34

【and】操作符号好像AI里不用到。我自己就没有看到过。【not】符号的使用就是对一个事实的取反。   记得我们有一个检测城镇中心是否被攻击的事实 (town-under-attack),这时,当我们需要检测城镇中心不被攻击而进行的动作的时候就可以是使用not符号了:例如:(not(town-under-attack))。【or】符号的使用。我懒得重新写一次了,从AOKAISB上复制来的内容:符号“or”是一个标识,只用在“规测”的“事实”部分,它的用途很广。
请直接看下面的例子,就能理解它的作用了:(defrule
(or                           ;“or”的开始
   (game-time >60)            ;游戏时间大于60秒
   (defend-soldier-count > 20);士兵人口大于20人
)                               ;“or”的结束
=>
(attack-now)                  ;发起进攻
)这个“规测”的执行过程是这样的:如果游戏时间大于60秒或者士兵人口大于20人
时就发起进攻。就是说从“(or”到它后面的“)”中间的内容都可选的,只要其中有一个“事实”
成立了,就执行所在的“动作”。

bearaboc 发表于 2004-12-11 20:56:09

<P 0cm 0pt?>我个人的理解:




<P 0cm 0pt?>  <FONT face="Times New Roman">1</FONT>、逻辑运算符:与(<FONT face="Times New Roman">and</FONT>)、或(<FONT face="Times New Roman">or</FONT>)、非(<FONT face="Times New Roman">not</FONT>),用于同一条规则的多个事实间的逻辑运算。



<P 0cm 0pt?>  <FONT face="Times New Roman">2</FONT>、无需任何逻辑运算符,同一条规则的多个事实之间的连接方式天然解释为<FONT face="Times New Roman">"and"</FONT>。



<P 0cm 0pt?>  <FONT face="Times New Roman">3</FONT>、<FONT face="Times New Roman">and</FONT>使用格式为:



<P 0cm 0pt?>   (<FONT face="Times New Roman">and

</FONT>

<P 0cm 0pt?><FONT face="Times New Roman">                  (facts 1)

</FONT>

<P 0cm 0pt?><FONT face="Times New Roman">                  (facst 2)

</FONT>

<P 0cm 0pt?><FONT face="Times New Roman">       </FONT><FONT face="Times New Roman">      )

</FONT>

<P 0cm 0pt; TEXT-INDENT: 37.5pt?>解释:<FONT face="Times New Roman">facts 1</FONT>至<FONT face="Times New Roman">facst 2 </FONT>必须同时为<FONT face="Times New Roman">true</FONT>时,本事实才为<FONT face="Times New Roman">true,</FONT>否则本事实为<FONT face="Times New Roman">false</FONT>。
<P 0cm 0pt?><FONT face="Times New Roman">       4</FONT>、<FONT face="Times New Roman">or</FONT>使用格式为:



<P 0cm 0pt?>   (<FONT face="Times New Roman">or

</FONT>

<P 0cm 0pt?><FONT face="Times New Roman">                   (facts 1)

</FONT>

<P 0cm 0pt?><FONT face="Times New Roman">                   (facst 2)

</FONT>

<P 0cm 0pt?><FONT face="Times New Roman">       </FONT><FONT face="Times New Roman">      )

</FONT>

<P 0cm 0pt; TEXT-INDENT: 37.5pt?>解释:<FONT face="Times New Roman">facts 1</FONT>至<FONT face="Times New Roman">facst 2 </FONT>必须同时为<FONT face="Times New Roman">false</FONT>时,本事实才为<FONT face="Times New Roman">false,</FONT>否则本事实为<FONT face="Times New Roman">true</FONT>。
<P 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt?>      5、<FONT face="Times New Roman">not</FONT>使用格式为:



<P 0cm 0pt; TEXT-INDENT: 37.5pt?><FONT face="Times New Roman">(not </FONT>
<P 0cm 0pt; TEXT-INDENT: mso-char-indent-count: mso-char-indent-size: 10.5pt? 69pt; 6.57;><FONT face="Times New Roman">       ( facts )

</FONT>

<P 0cm 0pt; TEXT-INDENT: 37.5pt?><FONT face="Times New Roman">)</FONT>
<P 0cm 0pt; TEXT-INDENT: 37.5pt?>解释:             <FONT face="Times New Roman">(not(true))=false</FONT>
                        (not(false))=true
<B>介绍AI脚本技术,加精华。按第四等耕战之功论,奖励魅力100,最后结果:魅力200——操作人:无知者</B>
[此贴子已经被作者于2004-12-12 13:07:12编辑过]

bearaboc 发表于 2004-12-11 21:03:20

附件:必须使用到and的例子(摘自Azking.per)(defrule
(current-age &gt;= castle-age)
(or
(dropsite-min-distance wood &gt; 4)
(and (wood-amount &gt; 300) (building-type-count-total lumber-camp &lt; 5))
)
(building-type-count-total lumber-camp &lt; 20)
(can-build lumber-camp)
=&gt;
(chat-local-to-self "build lumber camp")
(build lumber-camp)
)

卧龙先生 发表于 2004-12-11 21:55:24

是的,and还是有用的。兄弟知道的还真多是否写过程序?

bearaboc 发表于 2004-12-11 22:01:27

卧龙先生缪奖了。未写程序12年了!

无知者 发表于 2004-12-11 22:05:14

看来bearaboc是个高手,欢迎光临。

卧龙先生 发表于 2004-12-11 22:10:15

呵呵,兄弟一下子写了12年的程序呀,厉害。
我是用Delphi的,不过还没有12个月,料兄应该是用VC++的。
其实一下子就看出来了,只有写过程序的人才能怎么快理解的。
欢迎大哥你加入我们的帝国大军团。呵呵
[此贴子已经被作者于2004-12-11 22:26:20编辑过]

小狐 发表于 2004-12-12 15:57:37

12年……老一代电脑人啊

_CCC_大智 发表于 2004-12-12 19:15:27

未不会是主语吧?……是不是 NOT ……

飛揚寒星 发表于 2004-12-12 19:24:33

呵呵,如果<FONT color=#000066><B>bearaboc</B></FONT><FONT color=#000000>兄進步很快的話,可以考慮讓他也擔任AI區的版主。</FONT>
以前有位dreamcn,也是MPS進步得很快,但是好久沒來了,哎,可惜。
[此贴子已经被作者于2005-1-26 23:09:35编辑过]

尼克 发表于 2004-12-13 19:46:34

我記得他..............他沒來也有很多月啦
页: [1]
查看完整版本: [求助]逻辑运算符and,or,not的具体使用方法