Java 一种用变量代替二进制数字作为总体的遗传算法
所以我知道bog标准遗传算法使用一个字符串/二进制数字数组作为总体,然后从中创建一系列染色体。运行后,具有最高适应度的染色体被认为是最理想的解决方案。我的问题是,我可以使用数组引用来替换二进制字符串/数组吗 例如,我正在尝试创建一个算法,该算法可以自动化飞机排队等待一条跑道。有两种输入:希望起飞的飞机和希望降落的飞机。不需要太多细节,当飞机飞行时,它会在后面产生扭曲的空气(),这对后续飞机来说是极其危险的。飞机的重量/大小与其产生的尾迹湍流大小成正比。为了防止它危及其他飞机,每架飞机之间都有一段规定的等待时间,这取决于领先飞机的大小。这方面的示例如下所示:Java 一种用变量代替二进制数字作为总体的遗传算法,java,algorithm,optimization,computer-science,genetic-algorithm,Java,Algorithm,Optimization,Computer Science,Genetic Algorithm,所以我知道bog标准遗传算法使用一个字符串/二进制数字数组作为总体,然后从中创建一系列染色体。运行后,具有最高适应度的染色体被认为是最理想的解决方案。我的问题是,我可以使用数组引用来替换二进制字符串/数组吗 例如,我正在尝试创建一个算法,该算法可以自动化飞机排队等待一条跑道。有两种输入:希望起飞的飞机和希望降落的飞机。不需要太多细节,当飞机飞行时,它会在后面产生扭曲的空气(),这对后续飞机来说是极其危险的。飞机的重量/大小与其产生的尾迹湍流大小成正比。为了防止它危及其他飞机,每架飞机之间都有一段
Succeeding Aircraft Lead Aircraft Wake Turbulence Gap (NM)
------------------- ------------- --------------------------
H H 4
M H 5
S H 6
L H 7
H M 3
...
其中H=重,M=中,S=小,L=轻,NM=海里
这些数据将保存在一个单独的数组中,该数组可由fitness函数调用。我想知道的是,我是否能做出一个有效的遗传算法,主要利用交叉,因为我看不到一种方法,我可以使用变异
人口会是这样的:
input: N001,N002,N003,N004,N005,...,N###
以“,”分隔的字符串或一维数组
每个基因(即N001)将指2D阵列中的一个位置,在该位置将存储尾迹湍流类别(H、M、S、L)及其所需动作(起飞或着陆)。(即dataArray[001][1]=尾流湍流类别)
为了计算适合度,我得出以下结论:
input = "N001.N002.N003.N004.N005.N006. ... Nnnn";
String [] aircraft = input.split(".");
double totalWeight = 0;
for (i = 0; i <= aircraft.length; i++) {
priority = Array[i+1][1];
action1 = Array[i][2];
action2 = Array[i+1][2];
wakeTurb1 = Array[i][3];
wkaeTurb2 = Array[i+1][3];
if(priority == 1) {
totalWeight = totalWeight + 2^i;
}
if(action1 == 0 && action2 == 0) {
wakeTurbVal = tAftT[wakeTurb2][wakeTurb1]; }
else if(action1 == 0 && action2 == 1) {
wakeTurbVal = lAftT[wakeTurb2][wakeTurb1]; }
else if(action1 == 1 && action2 == 1) {
wakeTurbVal = lAftL[wakeTurb2][wakeTurb1]; }
else if(action1 = 1 && action2 == 0) {
wakeTurbVal = tAftL[wakeTurb2][wakeTurb1]; }
totalWeight = totalWeight + wakeTurbVal;
}
input=“N001.N002.N003.N004.N005.N006…Nnnn”;
字符串[]飞机=输入。拆分(“.”);
双倍总重量=0;
对于(i=0;i)来说,这是一个有趣的问题,但是因为它不属于堆栈溢出的范围(在这个问题上有两个悬而未决的接近投票)。例如,如果你可以编辑你的问题,并用你的编码尝试来丰富它,那么这将是一个很好的问题。看看MOEA框架(www.moeaframework.org)。它提供了极好的优化选项,并允许在遗传算法中使用二进制以外的变量。您的问题也可能更适合多目标方法。