资源简介
用matlab实现的混合蛙跳算法,程序可以运行,有仿真结果图
代码片段和文件信息
//#include “stdafx.h“
#include
#include
#include
#include
#define L 1/*试验次数*/
#define G 100/*迭代次数*/
#define P 200/*个体总数*/
#define M 20/*族群数*/
#define I 10/*一个族群中的个体数*/
#define V 20 /*个体维数*/
#define N 10/*族群内更新次数*/
#define MAX 5.12
#define MIN -5.12
#define D 2.0/*最大步长*/
#define R rand()%100/100.0
typedef struct{
double d[V];
double fitness;
}Individual;
Individual pw[M];/*族群中个体最差位置*/
Individual pb[M];/*族群中个体最好位置*/
Individual px;/*全体中最好位置*/
Individual individual[P];/*全部个体*/
Individual pop[M][I];/*排序后的群组*/
Individual temp[M];
Individual tem;
double PI=3.1415926;
double Tolertance=0.0001;//收敛精度
double PBESTFITNESS[L];
static int kk;
/*选择测试函数为Sphere*/
double fitness(int a)
{
int i;
double sum=0;
for(i=0;i {
sum+=individual[a].d[i]*individual[a].d[i];
}
return sum;
}
/*对每一个个体初始化*/
void init()
{
int ij;
for(i=0;i {
for(j=0;j {
individual[i].d[j]=R*(MAX-MIN)+MIN;
}
individual[i].fitness=fitness(i);
}
}
/*按照适应度降序对全部个体进行排列和分组*/
void sort()
{
int ijk;
for(i=1;i {
for(j=0;j {
if(individual[j].fitness {
tem=individual[j];
individual[j]=individual[j+1];
individual[j+1]=tem;
}
}
}
k=0;
for(j=0;j {
for(i=0;i {
pop[i][j]=individual[k];
k++;
}
}
px=individual[P-1];
for(i=0;i {
pb[i]=pop[i][I-1];
pw[i]=pop[i][0];
}
}
/*对某个群组内的个体重新排序*/
void sortpop(int b)
{
int ij;
for(i=0;i {
for(j=0;j {
if(pop[b][j].fitness {
tem=pop[b][j];
pop[b][j]=pop[b][j+1];
pop[b][j+1]=tem;
}
}
}
}
/*群组内更新*/
void update()
{
int ijkln;
double a;
double b;
for(n=0;n {
for(i=0;i {
a=0.0;
b=0.0;
for(j=0;j {
temp[i].d[j]=R*(pb[i].d[j]-pw[i].d[j]);
if(abs(temp[i].d[j])>D)
{
if(temp[i].d[j]>0)
{
temp[i].d[j]=D;
}
else
{
temp[i].d[j]=-D;
}
}
temp[i].d[j]=pw[i].d[j]+temp[i].d[j];
a=a+temp[i].d[j]*temp[i].d[j];
}
temp[i].fitness=a;
if(a {
pop[i][0]=temp[i];
sortpop(i);
pw[i]=pop[i][0];
pb[i]=pop[i][I-1];
}
else
{
for(k=0;k {
temp[i].d[k]=R*(px.d[k]-pw[i].d[k]);
if(abs(temp[i].d[k]>D))
{
if(temp[i].d[k]>0)
{
temp[i].d[k]=D;
}
else
{
temp[i].d[k]=-D;
}
}
temp[i].d[k]=pw[i].d[k]+temp[i].d[k];
a=a+temp[i].d[k]*temp[i].
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 4419 2010-09-25 09:25 SFLA.cpp
文件 196694 2014-11-05 16:45 Debug\SFLA.exe
文件 189232 2014-11-05 16:45 Debug\SFLA.ilk
文件 12592 2014-11-05 16:45 Debug\SFLA.obj
文件 233752 2014-11-05 16:45 Debug\SFLA.pch
文件 361472 2014-11-05 16:45 Debug\SFLA.pdb
文件 41984 2014-11-05 16:45 Debug\vc60.idb
文件 45056 2014-11-05 16:45 Debug\vc60.pdb
文件 3377 2014-11-05 16:45 SFLA.dsp
文件 516 2014-11-05 16:46 SFLA.dsw
文件 33792 2014-11-05 16:46 SFLA.ncb
文件 48640 2014-11-05 16:46 SFLA.opt
文件 1434 2014-11-05 16:45 SFLA.plg
目录 0 2014-11-05 16:45 Debug
----------- --------- ---------- ----- ----
1172960 14
- 上一篇:三维锥束CT反投影滤波重建matlab程序
- 下一篇:波束形成 MATLAB 实现
评论
共有 条评论