import java.util.Random;
import java.util.Arrays;
import java.util.Comparator;
class MyComparator implements Comparator
{
public int compare(Object o1, Object o2)
{
Number n1 = (Number) o1;
Number n2 = (Number) o2;
if(n1.jump > n2.jump)
{
return 1;
}
else if(n1.jump < n2.jump)
{
return -1;
}
else
{
return 0;
}
}
}
class Number
{
public double i;
public int pos;
public double jump = 0;
public Random r = new Random();
public Number(int pos)
{
this.pos = pos;
i = r.nextInt();
}
}
public class Temp
{
public static void main(String[] args)
{
Number[] n = new Number[50];
double total = 0;
for(int i=0; i<50; i++)
{
n[i] = new Number(i);
total += n[i].i;
}
for(int i=0; i<50; i++)
{
n[i].jump = n[i].i/total;
}
Arrays.sort(n, new MyComparator());
for(int i=0; i<50; i++)
{
System.out.print(n[i].pos + ", ");
}
System.out.println();
for(int i=0; i<50; i++)
{
n[i].jump = n[i].i/total;
n[i].jump = 1-n[i].jump;
}
Arrays.sort(n, new MyComparator());
for(int i=0; i<50; i++)
{
System.out.print(n[i].pos + ", ");
}
System.out.println();
}
}
ऊपर के उदाहरण में के अनुपात में बनाने के लिए, कहते हैं कि संख्या वर्ग अपने व्यक्तिगत वर्ग है, मैं फिटनेस, कूद संभावना है माता-पिता के रूप में चुना जा रहा है। सबसे पहले हम पहले की तरह माता-पिता के रूप में चुने जाने की संभावना की गणना करते हैं। इस कदम पर, उच्च फिटनेस उच्च संभावना प्राप्त करेगा। फिर हम 1 से संभावना घटाते हैं। इससे कम फिटनेस व्यक्तिगत उच्च फिटनेस (चयन के लिए छद्म फिटनेस) देता है। अब संभावना का पुनर्मूल्यांकन करें। देखें, पूरी तरह से उलट दिया जा रहा है।
वास्तविक जीवन की समस्या के लिए, MAX_FITNESS को MIN_FITNESS के रूप में जानना बहुत संभावना नहीं है। – user
मुझे निरंतर-संकेतक कैप्स का उपयोग नहीं करना चाहिए था। रूले व्हील/लॉटरी का आकार वर्तमान पीढ़ी की फिटनेस का योग है, इसलिए आपके रूले व्हील के लिए अधिकतमदर्शी वर्तमान पीढ़ी की अधिकतम फिटनेस है। –