Algorithm 特定遗传算法代价函数

Algorithm 特定遗传算法代价函数,algorithm,genetic,fitness,Algorithm,Genetic,Fitness,我的任务是创建一个遗传算法,这是一个分配问题,目标是将组件分配到两个设备机架中,以最小化互连程度 基本上,我要做的是读取矩阵a,这是组件连接的邻接列表cij表示组件i和组件j之间的连接数。每次都应该是对称的。我们有一个总体,所有的值都存储在2D数组中,这就是我的实现 读入的矩阵A是我们的邻接矩阵,而总体将决定我们如何对项目进行装箱。机架为bin0和bin1,如果population[cij]=0矩阵A读入中的对应元素放入bin0,如果population[cij]=1,则适用相同的规则 现在的问

我的任务是创建一个遗传算法,这是一个分配问题,目标是将组件分配到两个设备机架中,以最小化互连程度

基本上,我要做的是读取矩阵
a
,这是组件连接的邻接列表
cij
表示组件
i
和组件
j
之间的连接数。每次都应该是对称的。我们有一个总体,所有的值都存储在2D数组中,这就是我的实现

读入的矩阵
A
是我们的邻接矩阵,而总体将决定我们如何对项目进行装箱。机架为
bin0
bin1
,如果
population[cij]=0
矩阵
A
读入中的对应元素放入
bin0
,如果
population[cij]=1
,则适用相同的规则

现在的问题是找到人口矩阵中给出最小互连量的行,即不同箱中组件之间的权重之和

这是我们基本案例的图像:

。。。其中,矩阵<代码> A<代码> Read in右边,下面显示了人口数,矩阵中的元素<代码> A <代码>的方式被显示在中间。到目前为止,我还可以计算罚款,这是教授给出的约束条件,我还可以确定每个箱子中有多少个元素,但到目前为止,我无法计算出所描述和图片中所示的成本。到目前为止,这是我的成本函数:

public static int[] calcCost(int[][] matrix, int[][] population){
int cost[] = new int[size];

for(int m=0;m<size;m++){
    for(int i=0; i<size; i++){
        for(int j=0; j<size; j++){
            //System.out.println(m + "\t" + i + "\t" + j);
            if(population[i][j] == 1){
                cost[m] += matrix[i][j];
                }
            }//end for 3
        }// end for 2
    }//end for 1
    //printArrayI(cost);
    return cost;
}
public static int[]calcCost(int[]matrix,int[]population){
整数成本[]=新整数[大小];

对于(int m=0;m我已经解决了这个问题,我只是迭代错误。下面是我找到的解决方案

public static int[] calcCost(int[][] matrix, int[][] population){
int cost[] = new int[size];

for(int m=0;m<size;m++){
    for(int i=0; i<size; i++){
        if(population[m][i] == 0){
            for(int j=0; j<size; j++){
                if(population[m][j] == 1){
                    cost[m] += matrix[i][j];
                    }
                }
            }
        }// end for 2
    }//end for 1
    printArrayI(cost);
    return cost;
}
public static int[]calcCost(int[]matrix,int[]population){
整数成本[]=新整数[大小];

对于(int m=0;m我已经解决了这个问题,我只是迭代错误。下面是我找到的解决方案

public static int[] calcCost(int[][] matrix, int[][] population){
int cost[] = new int[size];

for(int m=0;m<size;m++){
    for(int i=0; i<size; i++){
        if(population[m][i] == 0){
            for(int j=0; j<size; j++){
                if(population[m][j] == 1){
                    cost[m] += matrix[i][j];
                    }
                }
            }
        }// end for 2
    }//end for 1
    printArrayI(cost);
    return cost;
}
public static int[]calcCost(int[]matrix,int[]population){
整数成本[]=新整数[大小];
对于(int m=0;m