void cal_Fitness() { double fit = 0; for (int i = 1; i < DNA.length; i++) { fit += Math.sqrt(Math.pow((city[DNA[i - 1]][0] - city[DNA[i]][0]), 2) + Math.pow((city[DNA[i - 1]][1] - city[DNA[i]][1]), 2)); } fit += Math.sqrt(Math.pow((city[DNA[0]][0] - city[DNA[DNA.length - 1]][0]), 2) + Math.pow((city[DNA[0]][1] - city[DNA[DNA.length - 1]][1]), 2)); fitness = 1 / fit; }解释这段代码
时间: 2023-09-29 20:08:05 浏览: 46
这段代码实现的是计算一条路径的适应度值(fitness),即一条路径的优劣程度。这个路径是由一个数组DNA表示的,数组中的每个元素表示一个城市的编号,表示这个路径依次经过的城市。
具体地,这个函数计算了路径的总长度fit,它通过遍历DNA数组中的每个元素,计算每一个城市与它前一个城市之间的距离,然后累加起来。最后还要计算最后一个城市与第一个城市之间的距离,并将所有的距离相加。这样就得到了路径的总长度fit。
最后,这个函数计算适应度值fitness,它是1/fit。这样,路径总长度越短,适应度值就越大,表示这个路径越优秀。
相关问题
删除下列代码中的注释#include <iostream> #define MVNum 100//最大顶点数 using namespace std; typedef struct{ int vexs[MVNum];//顶点表 int arcs[MVNum][MVNum];//邻接矩阵 int vexnum,arcnum; }AMGraph; void Create_V(AMGraph &G,int name){ int pos=++G.vexnum; G.vexs[pos-1]=name;//存入点名 for(int i=1;i<=pos;i++){//点所在的行列清零 G.arcs[i-1][pos-1]=0; G.arcs[pos-1][i-1]=0; } } void Create_Arc(AMGraph &G,int h,int k){ G.arcs[h-1][k-1]=G.arcs[k-1][h-1]=1;//点与对称点都归1 } void Out_Graph(AMGraph G){ cout<<"0 ";//开头输出0 for(int i=1;i<G.vexnum;i++) cout<<G.vexs[i-1]<<" ";//输出所有点名 cout<<G.vexs[G.vexnum-1]<<endl; for(int i=1;i<=G.vexnum;i++){//输出所有弧 cout<<G.vexs[i-1]<<" "; for(int j=1;j<G.vexnum;j++){ cout<<G.arcs[i-1][j-1]<<" "; } cout<<G.arcs[i-1][G.vexnum-1]<<endl; } } void Calculate(int m,int n){ AMGraph G; G.vexnum=G.arcnum=0; for(int i=1;i<=m;i++) Create_V(G,i);//构造前n个顶点 for(int i=1;i<=n;i++){//构造n条边 int h,k; cin>>h>>k;//输入左右顶点 Create_Arc(G,h,k);//构造边 } int new_point;//新顶点 cin>>new_point; Create_V(G,new_point);//新顶点入图 Out_Graph(G);//输出图 } int main(){ int m,n; while(cin>>m>>n&&m!=0&&n!=0){//每次处理一行数据 Calculate(m,n); } return 0; }
以下是删除了注释的代码:
#include <iostream>
#define MVNum 100
using namespace std;
typedef struct{
int vexs[MVNum];
int arcs[MVNum][MVNum];
int vexnum,arcnum;
}AMGraph;
void Create_V(AMGraph &G,int name){
int pos=++G.vexnum;
G.vexs[pos-1]=name;
for(int i=1;i<=pos;i++){
G.arcs[i-1][pos-1]=0;
G.arcs[pos-1][i-1]=0;
}
}
void Create_Arc(AMGraph &G,int h,int k){
G.arcs[h-1][k-1]=G.arcs[k-1][h-1]=1;
}
void Out_Graph(AMGraph G){
cout<<"0 ";
for(int i=1;i<G.vexnum;i++) cout<<G.vexs[i-1]<<" ";
cout<<G.vexs[G.vexnum-1]<<endl;
for(int i=1;i<=G.vexnum;i++){
cout<<G.vexs[i-1]<<" ";
for(int j=1;j<G.vexnum;j++){
cout<<G.arcs[i-1][j-1]<<" ";
}
cout<<G.arcs[i-1][G.vexnum-1]<<endl;
}
}
void Calculate(int m,int n){
AMGraph G;
G.vexnum=G.arcnum=0;
for(int i=1;i<=m;i++) Create_V(G,i);
for(int i=1;i<=n;i++){
int h,k;
cin>>h>>k;
Create_Arc(G,h,k);
}
int new_point;
cin>>new_point;
Create_V(G,new_point);
Out_Graph(G);
}
int main(){
int m,n;
while(cin>>m>>n&&m!=0&&n!=0){
Calculate(m,n);
}
return 0;
}
public classArrayDemo{ public static voidmain(Stringargs门) [intb00= H11(2213 33introwSum=0:int sum=0for(inti=0;i<b.length;i++) !for(int j=0;j<blij.length;j++) [rowSum+=bilj] System.out.println("row"+i+" sum="+rowSum);sum+=rowSum;rowSum=0 System.out.println("sum="+sum), 运行结果为: (5 分)
代码中存在语法错误,应该是这样的:
```java
public class ArrayDemo {
public static void main(String[] args) {
int[][] b = {{2,2,1},{3,3},{2,3,1,3}};
int rowSum = 0;
int sum = 0;
for (int i = 0; i < b.length; i++) {
for (int j = 0; j < b[i].length; j++) {
rowSum += b[i][j];
}
System.out.println("row" + i + " sum=" + rowSum);
sum += rowSum;
rowSum = 0;
}
System.out.println("sum=" + sum);
}
}
```
这段代码的运行结果是:
```
row0 sum=5
row1 sum=6
row2 sum=9
sum=20
```
这个程序中定义了一个二维数组`b`,然后使用两个嵌套的循环遍历这个数组,计算每行的元素之和并输出。最后,程序计算所有行的元素之和并输出。这个程序实现了数组的遍历和求和操作。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)