SET / a var1 = var1 + 1 / a не распознается как внутренняя или внешняя команда - PullRequest
0 голосов
/ 31 мая 2018

Так вот мой код

IF %FIT% leq %FITLAST% set /a "MUTA=MUTA-1" ELSE set /A "MUTA=MUTA+1"

Это для ИИ, он видит, является ли это поколение более подходящим, чем последнее, или нет, и корректирует вероятность повторения тех же характеристик или их увеличения.Не беспокойтесь об искусственной стороне искусственного интеллекта. Я сделал это в Java. Я просто перемещаю его в пакет для вызова и у меня возникают всевозможные синтаксические ошибки. 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 вЯ ищу здесь ответ, который исправляет мой неизбежно неправильный синтаксис в том, что я пропустил, вместо того, чтобы реорганизовать его, чтобы решить проблему.s это определенно только мой синтаксис, являющийся неправильным.

1 Ответ

0 голосов
/ 31 мая 2018

Вы используете это неправильно.Вы должны использовать круглые скобки:

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 /?, она показывает:

, где сравнение может быть одним из:

EQU - equal
NEQ - not equal
LSS - less than
LEQ - less than or equal
GTR - greater than
GEQ - greater than or equal
...