当我尝试运行我的代码时,我会得到以下错误:
错误:课堂评估中的getTest1方法不能应用于给定类型;
双拟合= Assess.getTest1(sol1,sol11);^
所需: double[]
发现:双倍
原因:实际的和正式的论点列表的长度不同。
我找不到解决办法。任何帮助都是徒劳无功的。谢谢
double[] sol1={100,100};
double fit = Assess.getTest1(sol1[0],sol1[1]);
boolean successful = false;
int a = 0; // a is to ensure we don't waste time if we keep getting shitty initial pops
double goodFit = 0.001;
while(!successful) {
System.out.println(a++);
double[][] pop1 = initialPop1();
double[][] bestPop1 = findBestPop(pop1, 100);
double[][] modifiedPop1 = crossover1(bestPop1, 100);
double[][] bestModPop1 = findBestPop(modifiedPop1, 25);
double bestFit = 100; // temp stores best fitness of this pop
for(int i = 0; i < bestModPop1.length; i++) {
fit = Assess.getTest1(bestModPop1[i][0],bestModPop1[i][1]);
if(a==2) { goodFit = 0.01; } else if (a==3) { goodFit = 0.1; }
if(fit < goodFit && fit > 0) {
successful = true;
if(fit < bestFit) {
bestFit = fit;
sol1[0] = bestModPop1[i][0];
sol1[1] = bestModPop1[i][1];
}
}
}发布于 2020-10-29 19:50:16
从错误消息中,我们可以推断该方法声明如下:
static double getTest1(double[] x) { ...你有三个选择:
Assess.getTest1(sol1); double[] sol1={100,100}
double fit =Assess.getTest1(新double[] { sol1,sol11 });
静态双getTest1(双){.
然后你就可以像你以前那样称呼它:
双拟合= Assess.getTest1(sol1,sol11);
如果您可以修改getTest1()方法,我会推荐选项3。
https://stackoverflow.com/questions/64598153
复制相似问题