所以这是我的代码
IF %FIT% leq %FITLAST% set /a "MUTA=MUTA-1" ELSE set /A "MUTA=MUTA+1"
这是为AI设计的,它会检查这一代是否比上一代更适合,并调整重复相同特征或放大这些特征的可能性。别担心AI方面的问题,我已经用Java实现了这个功能,现在只是为了挑战将其移植到批处理脚本中,结果遇到了各种语法错误 xD
基本上,如果这一代的适应度低于或等于上一代,那么MUTA减1(减少重复相同行为的可能性)。如果这一代的适应度高于上一代,那么MUTA加1,这将增加重复相同行为的可能性。
问题在于它将/a视为一个独立的命令,显然无法识别,因为/a只是SET语法的一部分。
编辑:这个问题已经解决 ^^^^
好的,我希望你能帮助我解决扩展代码中遇到的问题:
IF "%FIT%" leq "%FITLAST%" (set /a "MUTA=MUTA-1") ELSE (set /A "MUTA=MUTA+1")if %num%>50( SET DIR=DOWN if %num%>(50+%MUTA%) SET DIR=UP)pauseif %num%<50( SET DIR=RIGHT if %num%<(%MUTA%) SET DIR=LEFT)
这段代码不会返回任何结果,即使有pause命令,控制台也会直接关闭。我在这里寻找的是纠正我必然错误的语法,而不是重新组织代码来解决问题,因为这肯定只是我的语法错误。
回答:
你使用的方式不对。你应该使用括号:
IF %FIT% leq %FITLAST% (set /a "MUTA=MUTA-1") ELSE (set /A "MUTA=MUTA+1")
要更好地理解if
语句,请在命令行中运行if /?
关于编辑部分。你不能使用>
或<
来表示大于或小于,你需要使用gtr
、lss
、equ
等,并且在数字和括号之间要有空格。
if %num% lss 50 (
或者
if %num% gtr 50 (
请阅读if /?
帮助,它显示:
其中比较操作符可以是以下之一:
EQU - 等于NEQ - 不等于LSS - 小于LEQ - 小于或等于GTR - 大于GEQ - 大于或等于