• 大小: 6.5KB
    文件类型: .cpp
    金币: 1
    下载: 0 次
    发布日期: 2021-03-27
  • 语言: 其他
  • 标签: 其他  

资源简介


可自定义皇后数量,采用遗传算法求解,已经vs编译通过,可运行

资源截图

代码片段和文件信息

#include 
#include 
#include 

#define Simple 0
#define Multi 1

// 分别定义单亲与普通双亲情况下子代无条件保留的临界值,避免种群早熟而无法收敛的情况
#define Critical 1e-2
#define M_Critical 1e-3
#define debug
#define MAX_QUEENS 1000 // 定义最大皇后数为 1000

int n ;
int goal ; // 种群进化的目标,达到目标即返回程序
clock_t start end ; // 用以计算程序耗费的时间来比较算法优劣
time_t start_time end_time ;

// 定义种群
typedef struct {
int queen[MAX_QUEENS] ; // queen序列保纯个体的  DNA 值
int unitFitness ;       // unitFitness 当前个体的 适应度
int eachFitness[MAX_QUEENS] ;// eachFitness 个体中每个 DNA 的适应度
} Population ; 

Population s_population m_population[10 + MAX_QUEENS / 10] ;
int m_size ;
int m_totFitness ;    // 轮盘赌局式选择的时候计算群体适应度

// 用当前时间初始化随机种子
// 读入
void init ()
{
srand (time(0)) ;
scanf (“%d“ &n) ;
goal = n * (n - 1) ;
m_size = 30 + n / 10 ;
}

// 为种群的qsort排序函数提供比较接口
int compare(const void *aconst void *b)
{
  return ((Population *)b)->unitFitness - ((Population *)a)->unitFitness;
}  

// 定义 p-

评论

共有 条评论