⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 nsga2.c

📁 多目标算法的DSP实现。可以直接在DSP平台上进行多目标优化
💻 C
字号:
# include <stdio.h>
# include <math.h>

# include "malloc.h"
# include "global.h"

# include "rand.c"
# include "list.c"
# include "check_dominance.c"
# include "crowding_distance.c"
# include "initialize.c"
# include "evaluate_objective.c"
# include "non_domination_sort_initialize.c"
# include "tournament_selection.c"
# include "mutation.c"
# include "merge.c"
# include "non_domination_sort.c"

void main()
{
	int i, j;
	population *parent_pop;
	population *child_pop;
	population *mixed_pop;
	parent_pop = (population *)malloc(sizeof(population));
	child_pop = (population *)malloc(sizeof(population));
	mixed_pop = (population *)malloc(sizeof(population));
	parent_pop->ind = (individual *)malloc(POPSIZE*sizeof(individual));
	child_pop->ind = (individual *)malloc(POPSIZE*sizeof(individual));
	mixed_pop->ind = (individual *)malloc(2*POPSIZE*sizeof(individual));
	randomize ();
	printf("hehe!\n");
	initialize_pop (parent_pop);
	evaluate_pop (parent_pop);
	non_domination_sort_and_crowding_distance (parent_pop);
	for (i=1; i<=GEN; i++)
	{
	    printf("%d\n", i);
		selection (parent_pop, child_pop);
		mutation_pop (child_pop);
		evaluate_pop (child_pop);
		merge (parent_pop, child_pop, mixed_pop);
		non_domination_sort (mixed_pop, parent_pop);
//		if (fmod(i, 10.0) == 0)
//		{
//			printf("%d\n", i);
//		}
	}
    for (i=0; i<POPSIZE; i++)
	{
		for (j=0; j<NX; j++)
		{
			printf("%lf  ", parent_pop->ind[i].x[j]);
		}
		printf("\n");
		for (j=0; j<NOBJ; j++)
		{
			printf("%lf  ", parent_pop->ind[i].obj[j]);
		}
		printf("\n");
	    printf("%d  \n", parent_pop->ind[i].rank);
	    printf("%lf  %d\n", parent_pop->ind[i].crowd_dist, i);
		printf("\n");
	}
    free (parent_pop->ind);
    free (child_pop->ind);
    free (mixed_pop->ind);
	free (parent_pop);
    free (child_pop);
    free (mixed_pop);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -