我正試圖在java中實現roullete輪。在Java中用roullete輪定義概率
我創建了兩種方法。一個是創造roullete輪和另一個旋轉roullete輪。
我應該怎麼做,以實施probalibities。我的方法沒有這樣做。 我的方法來創建roullete輪是完全錯誤的。
例如,如果我得到:
50%的染色體與健身86
35%的染色體與健身88
15%,染色體與健身90
我怎樣才能確保這15%的人有更多機會被選中?
public void createRolette(Population population) throws Exception {
int swap;
for (int i=0; i<populationSize; i++){
population.getIndividual(i);
Simulator.allocateTask(i);
rouletteId.add(i);
rouletteFit.add(calcFitness(i));
}
for (int i = 0; i < rouletteFit.size() - 1; i++) {
for (int j = 0; j < rouletteFit.size() - i - 1; j++) {
if (rouletteFit.get(j) > rouletteFit.get(j+1))
{
swap = rouletteFit.get(j);
rouletteFit.set(j, rouletteFit.get(j+1));
rouletteFit.set(j+1, swap);
swap = rouletteId.get(j);
rouletteId.set(j, rouletteId.get(j+1));
rouletteId.set(j+1, swap);
}
}
}
System.out.println(rouletteId.toString());
System.out.println(rouletteFit.toString());
}
public int rotateRolette(Population population) {
Integer SelectedIndv = (int)(Math.random()* (rouletteId.size())); // faz a escolha entre 0 e o numero maximo de elementos;
return rouletteId.get(SelectedIndv);
}