📄 global.h
字号:
// 定义一个全局的宏
# ifndef _GLOBAL_H_
# define _GLOBAL_H_
# define PI 3.14159265358979 // pi 的值
# define INF 1.0e14 // 无穷大
# define MIN 0.0 // 自变量的最小值
# define MAX 1.0 // 自变量的最大值
# define NX 6 // 自变量的维数
# define NOBJ 2 // 目标函数的个数
# define POPSIZE 10 // 群体规模
# define GEN 10 // 进化的代数
# define PC 0.9 // 交叉概率
# define PM 0.1 // 变异概率
# define MUC 20 // 交叉分布指数
# define MUM 20 // 变异分布指数
//# define NULL ((void *)0) // 空指针
// 个体
typedef struct
{
double x[NX]; // 自变量
double obj[NOBJ]; // 目标函数值(适应度)
int rank; // 分布等级
double crowd_dist; // 拥挤距离
}
individual;
// 群体
typedef struct
{
individual *ind; // 个体指针
}
population;
// 双向链表
typedef struct list
{
int index; // 索引号
struct list *prior; // 前向指针
struct list *next; // 后向指针
}
list;
void randomize ();
void warmup_random (double seed);
void advance_random ();
double randomperc ();
int rand_integer (int low, int high);
double rand_real (double low, double high);
void initialize_pop (population *pop);
void initialize_ind (individual *ind);
void evaluate_pop (population *pop);
void evaluate_ind (individual *ind);
void evaluate_objective (double *x, double *obj);
void non_domination_sort_and_crowding_distance (population *new_pop);
//void insert (list *node, int index);
//list* del (list *node);
//int check_dominance (individual *a, individual *b);
//void crowding_distance_list (population *pop, list *lst, int front_size);
//void crowding_distance_index (population *pop, int c1, int c2);
//void crowding_distance (population *pop, int *obj_array, int front_size);
//void quicksort (population *pop, int *array, int obj_array_size);
//void q_sort (population *pop, int *array, int low, int high);
void selection (population *old_pop, population *new_pop);
individual* tournament (individual *ind1, individual *ind2);
void crossover (individual *parent1, individual *parent2, individual *child1, individual *child2);
void crossover_real (individual *parent1, individual *parent2, individual *child1, individual *child2);
void mutation_pop (population *pop);
void mutation_ind (individual *ind);
void mutate_ind_real (individual *ind);
void merge (population *pop1, population *pop2, population *pop3);
void copy_ind (individual *ind1, individual *ind2);
void non_domination_sort (population *mixed_pop, population *new_pop);
void crowding_sort_descend (population *mixed_pop, population *new_pop, int count, int front_size, list *elite);
# endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -