gzfun2 发表于 2019-3-7 14:30:57

旗舰版CrossOver,CrossUnder的严重bug

本帖最后由 gzfun2 于 2019-3-7 14:55 编辑

公式1:
b1= A1 && CrossOver(a,b) && C1;

公式2:
t=CrossOver(a,b);
b1=A1 && t && C1;
以上两个等式,是等价的, 但是在测试中偶然发现, 公式1,有时在CrossOver(a,b)不成立的时候,公式1的b1=true; 同样的情况下,换成公式2就没问题,b1=false;
另外如果使用自己实现的CrossOver,写在公式1中也没问题。 a<b && a>b;
希望技术人员好好测试检查一下其中的问题。

小米 发表于 2019-3-7 15:32:48

crossover是序列函数,其运算是需要序列值的,所以不可放在条件下进行运算。
在A && B && C 这类的判断式中,当A不满足时,就不会去判断B以及C了。
所以,在你的语句中,A1是否满足,就相当于一个限制crossover的条件 。

序列函数的运算,可以先声明一个中间变量,将crossover的运算赋值 给中间变量,再将此变量代入原语句中即可。
比如:AA = crossover(a,b);  b1 = A && AA && C1;

gzfun2 发表于 2019-3-8 23:13:31

本帖最后由 gzfun2 于 2019-3-8 23:17 编辑

如果只对序列变量进行判断,也需要中间变量吗? 例如判断 if( a>0) 这样的。 这个坑有点大啊,很多地方都要改,程序不应这样设计啊,对用户来说很不方便。
页: [1]
查看完整版本: 旗舰版CrossOver,CrossUnder的严重bug