これは数時間で作業していたので、私はこのオブジェクトの配列を作成すると、ランダムな入力が与えられたメモリ配列は配列の残りの部分を同じ出力を持っています:下のコードを見てください。配列の問題を持つオブジェクトのJava配列
ビークラス:
private class Bee{
private int status;
private float[] memory;
private double quality;
private int visits;
private Bee(int status, float[] memory, double quality, int visits){
this.status = status;
this.memory = memory;
this.quality = quality;
this.visits = visits;
}
}
個々の蜂の品質の印刷時に、そのメモリはすべて同じまま、まだ異なっています。
for(int i = 0; i < this.bees.length; i++){
System.out.println(this.bees[i].memory[0]+" "+this.bees[i].memory[1]);
System.out.println(this.bees[i].quality);
}
サンプル出力:
3.4968524 8.354554
1581.5435920638447
3.4968524 8.354554
82.46318172154176
3.4968524 8.354554
66.25267691464408
品質はメモリ働いていないが、なぜ私は理解していませんか?
何か助力や提案をいただければ幸いです。
EDIT:
for(int i = 0; i < totalNumberbees; i++){
int beestatus;
if(i < numberInactive){
beestatus = 0;//inactive
indexesOfInactivebees[i] = i;
} else if(i < (numberInactive + numberScout)){
beestatus = 2;//scout
} else{
beestatus = 1;//active
}
float[] randomMemory = GenerateRandomMemory();
this.bees[i] = new Bee(beestatus, randomMemory, MeasureQuality(randomMemory), 0);
}
private float[] GenerateRandomMemory(){
float[] result = new float[this.functionData.vars.length];
result = this.functionData.vars;
for(int i = 0; i < result.length; i++){
float r1 = new Random().nextFloat()*10;
result[i] = r1;
}
return result;
}
ここではGenerateRandomClassと、コードの残りの部分を初期化蜂です。
GenerateRandomMemoryとMeasureQualityを投稿してください。 – Krrose27
すべてのBeeオブジェクトに対して同じ配列float [] randomMemoryを使用していますか? –