資源簡介
用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 實現
評論
共有 條評論