gaainversion.java
来自「Java实现的遗传算法工具集:GA Playground」· Java 代码 · 共 86 行
JAVA
86 行
public class GaaInversion {
int gaType;
int inversionType;
double inversionRate;
public GaaInversion (GaaProblem problem) {
gaType = problem.gaType;
inversionType = problem.inversionType;
inversionRate = problem.inversionRate;
}
public String inversion(String chrom) {
String s = doInversion(chrom, inversionRate);
return(s);
}
public String inversion(String chrom, double rate) {
String s = doInversion(chrom, rate);
return(s);
}
public String doInversion(String chrom, double rate) {
int i, pos1, pos2, temp;
String s1, s2, s3, s="";
if (GaaMisc.flip(rate)) {
pos1 =(int) Math.floor((Math.random()*(chrom.length()-1)));
pos2 =(int) Math.floor((Math.random()*(chrom.length()-1)));
if (pos1 > pos2) {
temp = pos2;
pos2 = pos1;
pos1 = temp;
}
if ((pos2-pos1) > 1) {
try{
s1 = chrom.substring(0,pos1);
s2 = chrom.substring(pos1,pos2);
s3 = chrom.substring(pos2);
s2 = invertString(s2);
s = s1.concat(s2);
s = s.concat(s3);
}
catch (Exception e) {
GaaAction.deb.debug("GaaInversion Inversion error: "+e.toString());
}
}
else
s = chrom;
}
else
s = chrom;
return s;
}
String invertString(String txt) {
int i, size;
size = txt.length();
StringBuffer sbfrom = new StringBuffer(txt);
StringBuffer sbto = new StringBuffer(txt);
for (i=0;i<size;i++) {
sbto.setCharAt(i,sbfrom.charAt(size-i-1));
}
return(sbto.toString());
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?