这是我写的c++的头文件
#ifndef ANTCOLONYOPTIMIZATION_H_INCLUDED
#define ANTCOLONYOPTIMIZATION_H_INCLUDED
#include "iostream"
#include<Eigen/Dense>
using namespace std;
////////////////////////变量定义////////////////////////////
//任务数组,数组的下标表示任务的编号,数组的值表示任务的长度。比如:tasks[0]=10表示第一个任务的任务长度是10.
int *tasks;
//任务的数量,
const int taskNum=100;
//处理节点的数组。数组的下标表示处理节点的编号,数组值表示节点的处理速度
int *nodes;
//处理节点的数量
const int nodeNum=10;
//蚁群迭代的次数
int iteratorNum;
//每次迭代中蚂蚁的数量。每只蚂蚁都是一个任务调度者,每次迭代中的每一只蚂蚁都需要完成所有任务的分配,这也就是一个可行解。
int antNum;
//任务处理时间矩阵,它是一个二维矩阵。比如:timeMatrix[i][j]就表示第i个任务分配给第j个节点所需的处理时间。
//timeMatrix[i][j]=task[i]/nodes[j]
MatrixXd timeMatrix;
//pheromoneMatrix:信息素矩阵 pheromoneMatrix[i][j]=0.5就表示任务i分配给节点j这条路径上的信息素浓度为0.5
MatrixXd pheromoneMatrix;
//maxPheromoneMatrix:pheromoneMatrix矩阵的每一行中最大信息素的下标
int maxPheromoneMatix[taskNum];
//criticalPointMatrix 在一次迭代中,采用随机分配策略的蚂蚁的临界编号。
int criticalPointMatrix[taskNum];
//p:每完成一次迭代后,信息素衰减的比例。
int p=0.5;
//q:蚂蚁每次经过一条路径,信息素增加的比例。
int q=2;
//初始化任务集合
tasks=new int[taskNum];
for(int i=0;i<taskNum;i++){
std::uniform_int_distribution<int> dis1(10,100);
tasks[i]=dis1;
}
nodes=new int[nodeNum];
for(int i=0;i<nodeNum;i++){
std::uniform_int_distribution<int> dis1(10,100);
nodes[i]=dis1;
}
////////////////////////变量定义////////////////////////////
/***
蚁群算法
*/
void aca(){
//初始化任务执行时间矩阵
initTimeMatrix(tasks,nodes);
//初始化信息素矩阵
initPheromoneMatrix(taskNum,nodeNum);
//迭代搜索
acaSearch(iteratorNum,antNum);
}
#endif // ANTCOLONYOPTIMIZATION_H_INCLUDED
然后其中的
tasks=new int[taskNum];
for(int i=0;i<taskNum;i++){
std::uniform_int_distribution<int> dis1(10,100);
tasks[i]=dis1;
}
nodes=new int[nodeNum];
for(int i=0;i<nodeNum;i++){
std::uniform_int_distribution<int> dis1(10,100);
nodes[i]=dis1;
}
这块,变量tasks、i、nodes都会报这个错误。
错误如图所示