所以这是我的代码
IF %FIT% leq %FITLAST% set /a "MUTA=MUTA-1" ELSE set /A "MUTA=MUTA+1"
这适用于AI,它会看到这一代是否比最后一代更健康,并调整重复相同特征或放大它们的可能性。不要担心我在java中做到这一点的AI方面我只是将它移到批处理挑战并且遇到各种语法错误xD
基本上如果这一代不太适合或同样适合最后一代,那么将MUTA减少1(减少重复相同动作的可能性。如果这一代比上一代更合适则将MUTA增加1,这将增加重复同样行动的可能性。
问题在于它将/ 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
)
pause
if %num%<50(
SET DIR=RIGHT
if %num%<(%MUTA%) SET DIR=LEFT
)
即使在那里使用pause命令,它也不会返回任何关闭控制台的东西。我在这里寻找一个答案,纠正我在错过的东西上不可避免的错误语法,而不是重新组织它来解决问题,因为这肯定只是我的语法错误。
答案 0 :(得分:0)
你错了。你应该使用括号:
IF %FIT% leq %FITLAST% (
set /a "MUTA=MUTA-1"
) ELSE (
set /A "MUTA=MUTA+1"
)
要更好地理解if
语句,请从cmdline if /?
在编辑上。您无法使用>
或<
更大/更小,因为您需要使用gtr
,lss
,equ
等,并且在您的数字和括号之间有空格
if %num% lss 50 (
或
if %num% gtr 50 (
请阅读if /?
帮助,其中显示:
其中compare-op可能是以下之一:
EQU - equal
NEQ - not equal
LSS - less than
LEQ - less than or equal
GTR - greater than
GEQ - greater than or equal