Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何确保突变步骤后我的体能保持在范围内?_Java_Benchmarking_Evolutionary Algorithm_Mutation - Fatal编程技术网

Java 如何确保突变步骤后我的体能保持在范围内?

Java 如何确保突变步骤后我的体能保持在范围内?,java,benchmarking,evolutionary-algorithm,mutation,Java,Benchmarking,Evolutionary Algorithm,Mutation,我使用sphere benchmark函数测试具有不相关一步变异的进化策略代码,如下所示: public class cromosome { private double[] variable = new double[2]; private double[] stepSize = new double[2]; private double fitness=0; } //=========================method set fitness======

我使用sphere benchmark函数测试具有不相关一步变异的进化策略代码,如下所示:

public class cromosome {
 private double[] variable = new double[2];
    private double[] stepSize = new double[2];
    private double fitness=0;
    }

//=========================method set fitness=========================================
    public void setFitness() {
        for (int i=0; i<variable.length; i++) {
            fitness += variable[i]*variable[i];  
        } 
        System.out.println("fitness=  " + fitness);
    }
public class cromosome{
私有双精度[]变量=新双精度[2];
私有双精度[]步长=新双精度[2];
私人双适应度=0;
}
//=====================================方法集适应度=========================================
公众健康(英文){

对于(int i=0;i您使用的是r.nextGaussian()。此变量的价差大于1。这意味着您有时会得到低于-1或高于1的值。这可能是问题的根源。 要修复此问题,请添加验证,例如:

double a = r.nextGaussian();
if(a < -1){a = -1;}else if(a > 1){a = 1;}
double a=r.nextGaussian();
如果(a<-1){a=-1;}如果(a>1){a=1;}
在此之后,以与现在相同的方式处理它

double a = r.nextGaussian();
if(a < -1){a = -1;}else if(a > 1){a = 1;}