SET /a var1 = var1 + 1 /a 未被识别为内部或外部命令

所以这是我的代码

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 /?

关于编辑部分。你不能使用><来表示大于或小于,你需要使用gtrlssequ等,并且在数字和括号之间要有空格。

if %num% lss 50 (

或者

if %num% gtr 50 (

请阅读if /?帮助,它显示:

其中比较操作符可以是以下之一:

EQU - 等于NEQ - 不等于LSS - 小于LEQ - 小于或等于GTR - 大于GEQ - 大于或等于

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注