亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? pso-tsp.c

?? 本程序是針對多序列比對問題
?? C
?? 第 1 頁 / 共 2 頁
字號:
#include <math.h>#include <stdio.h>#include <string.h>#include <stdlib.h>#define	Nmax 110 //最大的節點數#define Vmax 110  //最大的速度交換子個數#define Max_size 130  // swarm的最大個數#define MaxEdge 150000  //最大的可能的邊的大小struct seq		{int size;int s[Nmax+1];};struct val		{float v[MaxEdge];float min;};struct velocity	{int size;int comp[Vmax][2];};struct particle	{int rank;struct seq x;struct velocity v;float f;                      float fl;struct seq best_x;float best_f;};struct swarm		{int size; struct particle p[Max_size+1];int rank_best;};struct graph 		{int N;float v[Nmax][Nmax];float l_max;float l_min;int n_edge;};struct particle 	best_best; //swarm全局最優struct particle 	extra_best;   //真正的最優struct graph 		G;int			hood; //neighbour的大小struct particle 	init;  //初始的int			iter,iter_min,iter_max;int			same_best; //最優的值出現第幾次int			same_best_thresh;float			same_best_val;int			seed=1; //隨機值的種子struct swarm		sw1;struct val		val;FILE *f_trace;FILE *f_graph; //讀TSPLIB文件struct graph 			graph_min_max(struct graph G);struct val				graph_min_tour(struct graph G);struct graph			read_graph(FILE *file);struct particle 		init_particle(struct graph G);struct swarm			init_swarm(int size, struct graph G);int			        move_slow(struct swarm sw,int swarm_size,float slow,int hood);struct swarm 			reduce_swarm(struct swarm sw);struct swarm			new_swarm(struct swarm sw,int swarm_size);struct velocity			alea_velocity(int N);struct particle			auto_move(struct particle p);struct particle			best_neighbour(struct swarm sw1,struct particle p,int k);struct velocity			coeff_pos_minus_pos(struct particle p1,struct particle p2,float coeff);struct velocity			coeff_times_vel(struct velocity v,float coeff);int						compare_particle(struct particle p1,struct particle p2);float					f(struct particle p,int rank1, int rank2);void					search(struct graph G, struct particle p1, struct particle p2);struct particle			move_towards(struct particle p1,struct particle p3,int move_type);struct particle			pos_plus_vel(struct particle p,struct velocity v,int type);struct particle 		previous_best(struct particle p,int type);float					tax_no_arc(int times,struct graph G);struct velocity			vel_plus_vel(struct velocity v1,struct velocity v2);int				alea(int min,int max);int				alea_diff(int min, int max, int num);float 			MAX(float a,float b);float 			MIN(float a,float b);struct seq 		rotate(struct seq s,int k);struct seq		seq(int k,int N);float   parameter1,  parameter2;void display_position(struct particle p,int type);void display_solution(struct particle p);/* =============================================================================== */void main(){FILE *f_graph;struct particle	best_hood;int				choice;int				density;float			kappa;int				i;int				iter,iter_min,iter_max;char			graph[256];int				max_iter;float			min_tour;float			slow;int				parallel;float			phi;struct particle	solution;int				swarm_size;float			target;int				vmax;float			x;int				xi;slow=0.5;same_best_thresh=2;f_trace=fopen("trace.txt","w");G.l_max=10;G.l_min=1;printf("\n輸入TSPLIB文件名:\n");scanf("%s",&graph);f_graph=fopen(graph,"r");G=read_graph(f_graph);G=graph_min_max(G);val=graph_min_tour(G);min_tour=val.min;x=G.N; xi=x-1;swarm_size=xi;sw1.size=swarm_size;printf("\n Neighbour 大小 ? (最大 = %i) ",sw1.size);printf("\n : ");scanf("%i",&hood);hood=MAX(1,MIN(hood,sw1.size));iter_min=0;        sw1=init_swarm(swarm_size,G);        if(sw1.size<swarm_size)                {                printf("\n 生成swarm時出錯");                goto error_end;                }iterations:printf("\n 輸入 迭代次數  ? (輸入0結束):  ");scanf("%i",&max_iter);if (max_iter==0) return;printf("\n 輸入 參數1 ? : ");scanf("%f",&parameter1);printf("\n 輸入 參數2 ? :  ");scanf("%f",&parameter2);target=min_tour;iter_max=iter_min+max_iter;for (iter=iter_min;iter<iter_max;iter++)        {        printf("\n\n 第 %i 次迭代 , swarm 大小 %i, 可能的最小值 %f",iter,sw1.size,extra_best.f);        if (best_best.f<=extra_best.f)        display_solution(best_best);        else        display_solution(extra_best);        if (extra_best.f<same_best_val)                {                same_best=0;                same_best_val=extra_best.f;                }        else                {                same_best=same_best+1;                }        printf("\n 可能最小值 %f, 已出現 %i 次",same_best_val,same_best);                 sw1=reduce_swarm(sw1);                if (move_slow(sw1,swarm_size,slow,hood)==1)                        {                        sw1=new_swarm(sw1,swarm_size);                        }        for (i=0;i<sw1.size;i++)                {                best_hood=best_neighbour(sw1,sw1.p[i],hood);                if (best_hood.f<best_best.f) best_best=best_hood;                        sw1.p[i]=move_towards(sw1.p[i],best_hood,5);                        if (sw1.p[i].f<best_best.f)                                {                                best_best=sw1.p[i];                                }                if (best_best.f<=G.l_min*G.N || extra_best.f<=G.l_min*G.N )                        {                        printf("\n\n Particle %i. 最小 ",i+1);                        goto end;                        }                if (best_best.f<=target || extra_best.f<=target)                        {                        printf("\n 目標值: %f",target);                        goto end;                        }                }        if (best_best.f<=G.l_min*G.N || extra_best.f<=G.l_min*G.N )                {                printf("\n\n 找到最小 ");                goto end;                }        }end:printf("\n 找到的最小值:");if (best_best.f<=extra_best.f)        {solution=best_best;}else        { solution=extra_best;}display_solution(solution);sw1.p[sw1.size]=extra_best;sw1.size=sw1.size+1;iter_min=iter_max;goto iterations;return;error_end:printf("\n 出錯");}struct graph graph_min_max(struct graph G){int 		i,j;struct graph Gt;Gt=G;Gt.n_edge=0;Gt.l_max=0;Gt.l_min=1000000;for (i=0;i<G.N;i++)        {        for (j=0;j<G.N;j++)                {                if (j!=i)                        {                        Gt.l_max=MAX(G.v[i][j],Gt.l_max);                        if (G.v[i][j]>=0)                                {                                Gt.l_min=MIN(G.v[i][j],Gt.l_min);                                Gt.n_edge=Gt.n_edge+1;                                }                        }                }        }return Gt;}struct val graph_min_tour(struct graph G){int 	i,j;int		lmax;int		n_diff_val;int		nval;int		rank;float	x;struct val val;lmax=G.l_max;if (G.l_max>MaxEdge)        {        printf("\n邊值太大 ");        }for (i=0;i<MaxEdge;i++)        val.v[i]=0;for (i=0;i<G.N;i++)        {        for (j=0;j<G.N;j++)                {                if (i==j) continue;                if(G.v[i][j]>=0)                        rank=G.v[i][j]-G.l_min;                else                        rank=G.l_max+1-G.l_min;                val.v[rank]=val.v[rank]+1;                }        }val.min=0;n_diff_val=0;nval=0;for (i=0;i<G.l_max-G.l_min+1;i++)        if (val.v[i]>0)                {                n_diff_val=n_diff_val+1;                }for (i=0;i<G.l_max;i++)        {                for (j=0;j<val.v[i];j++)                        {                        val.min=val.min+(G.l_min+i);                        nval=nval+1;                        if (nval>=G.N) goto end;                        }        }end:x=G.N*(G.N-1);for (i=0;i<G.l_max-G.l_min+2;i++)        {        if (val.v[i]>0)                val.v[i]=val.v[i]/x;        }return val;}struct graph read_graph(FILE *file){char			bidon[50];char			comment[100];char			edge_weight_format[30];char			edge_weight_type[30];struct graph	Gt;int 			i,j;char			name[20];char			type[20];int index=0,index1=0;float  x[Nmax], y[Nmax];fscanf(file," %s %s\n",bidon,name);fscanf(file," %s %s\n",bidon,type);  fscanf(file," %s %s\n",bidon,comment);  fscanf(file,"%s %i\n",bidon,&Gt.N); // dimension  fscanf(file,"%s %s\n",bidon,edge_weight_type);  fscanf(file,"%s\n",bidon);  printf("\n  %s,  %s, (%s)",name,type,comment);  printf("\n 城市的個數: %i\n",Gt.N);for (i=0;i<Gt.N;i++){ fscanf(file,"%i %f %f\n",&index,&x[i],&y[i]); printf("%f %f\n",x[i],y[i]);}          for (i=0;i<Gt.N;i++)                  {                  for (j=0;j<Gt.N;j++)                          {                         if (i==j)      Gt.v[i][j]=0;                           else{                          Gt.v[i][j]=sqrt((x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j]));                           }                          }                  }          return Gt;}struct particle init_particle(struct graph G){int i;struct particle init;init.rank=-1;init.x.size=G.N;for (i=0;i<G.N;i++)        init.x.s[i]=i;init.x.s[G.N]=0;init.v.size=0;init.f=f(init,-1,-1);init.best_x=init.x;init.best_f=init.f;return init;}struct swarm	init_swarm(int size,struct graph G){int 				i;struct swarm 		swt;float				x,x1;swt.size=size;init=init_particle(G);swt.rank_best=0;for (i=0;i<size;i++)        {        swt.p[i]=init;        swt.p[i].rank=i;        swt.p[i].best_x=swt.p[i].x;        swt.p[i].best_f=swt.p[i].f;        swt.p[i].v=alea_velocity(i+1);        swt.p[i]=pos_plus_vel(swt.p[i],swt.p[i].v,0);        if (swt.p[i].f<swt.p[swt.rank_best].f)                swt.rank_best=i;        }best_best=swt.p[swt.rank_best];extra_best=best_best;same_best_val=extra_best.f;same_best=0;return swt;}int	move_slow(struct swarm sw,int swarm_size, float slow,int hood){int		i;float	slow_thresh2;float	sensibility=8;int		v_size_tot,v_tot,v_tot_min;if (same_best>=same_best_thresh)        {        printf("\n 更新群");        return 1;        }v_tot=0;v_size_tot=0;for (i=0;i<sw.size;i++)        if (sw.p[i].v.size>0) {v_tot=v_tot+1;v_size_tot=v_size_tot+sw.p[i].v.size;}if (v_tot==0)        {        printf("\n更新群");        return 1;        }       v_tot_min=swarm_size*slow+1;      slow_thresh2=swarm_size*slow;if (sw.size<=slow_thresh2 && slow>0)        {        printf("\n更新群");        return 1;        }if (v_tot<v_tot_min)        {        printf("\n 更新群");         return 1;        }return 0;}struct swarm reduce_swarm(struct swarm sw){struct swarm	diff;int				i,j;diff.size=1;diff.p[0]=sw.p[0];for (i=1;i<sw.size;i++)        {        for (j=0;j<diff.size;j++)                {                if (sw.p[i].f==diff.p[j].f)                        {                        if (compare_particle(sw.p[i],diff.p[j])==0)                                goto next_check;                        }                }        diff.p[diff.size]=sw.p[i];        diff.p[diff.size].rank=diff.size;        diff.size=diff.size+1;        next_check:;        }return diff;}struct swarm new_swarm(struct swarm sw,int swarm_size){struct particle	current_best;int				i;int				rank_best;int				type;struct swarm 	swt;for (i=0;i<swarm_size;i++)        {        if (i>=sw.size)                {                swt.p[i]=init;                swt.p[i].rank=i;                }        else                {                 swt.p[i]=previous_best(sw.p[i],0);                }        swt.p[i]=auto_move(swt.p[i]);        swt.p[i].v=alea_velocity(G.N-2);        if (swt.p[i].f<swt.p[i].best_f)                {                swt.p[i].best_f=swt.p[i].f;                swt.p[i].best_x=swt.p[i].x;                }        if (swt.p[i].x.s[0]!=0) swt.p[i].x=rotate(swt.p[i].x,0);        }best_best=swt.p[0];for (i=0;i<swarm_size;i++)        {        if (swt.p[i].f<best_best.f)                        best_best=swt.p[i];        }swt.size=swarm_size;rank_best=best_best.rank;if (rank_best<0) rank_best=0;if (extra_best.f<best_best.f)        {        extra_best.rank=rank_best;        if (extra_best.x.s[0]!=0) extra_best.x=rotate(extra_best.x,0);        swt.p[rank_best]=extra_best;        best_best=extra_best;        }swt.rank_best=rank_best;best_best.v.size=0;swt.p[swt.rank_best].v.size=0;return swt;}struct velocity	alea_velocity(int N){int				i;struct velocity vt;vt.size=N;for (i=0;i<vt.size;i++)        {        vt.comp[i][0]=alea(0,G.N-1);        vt.comp[i][1]=alea_diff(0,G.N-1,vt.comp[i][0]);        }return vt;}struct particle auto_move(struct particle p){int 			i,j,k;struct particle	pt,pt1;struct velocity v;float t;pt=p;        v.size=1;        next_step2:        for (j=0;j<G.N-1;j++)                {                v.comp[0][0]=j;                for (k=j+1;k<G.N;k++)                        {                        v.comp[0][1]=k;                        pt1=pos_plus_vel(pt,v,1);                  search(G,pt,pt1);                        }                }        return pt;}struct particle	best_neighbour(struct swarm sw1,struct particle p,int k)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
青青草国产成人99久久| 成人黄色软件下载| 国产农村妇女精品| 欧美日韩中文国产| 懂色一区二区三区免费观看| 亚洲国产成人av| 中国av一区二区三区| 欧美一级在线免费| 91久久奴性调教| 国产 欧美在线| 久久99久久99精品免视看婷婷| 亚洲免费视频成人| 中文一区在线播放| 精品成人一区二区| 欧美一区二区三区公司| 91国产视频在线观看| 成人av电影在线观看| 韩国av一区二区三区四区| 亚洲成av人片| 一区二区三区加勒比av| 日本一区二区不卡视频| 久久久久久久久久久久久久久99| 欧美高清一级片在线| 色94色欧美sute亚洲13| 成人精品高清在线| 国产99久久久国产精品免费看 | 蜜桃一区二区三区在线观看| 亚洲女爱视频在线| 国产女人18毛片水真多成人如厕| xfplay精品久久| 日韩色视频在线观看| 91精品国产高清一区二区三区蜜臀| 91免费版pro下载短视频| 成人午夜视频免费看| 国产精品自在欧美一区| 狠狠色丁香婷婷综合久久片| 久久爱www久久做| 蜜臀av性久久久久蜜臀aⅴ流畅| 五月天亚洲婷婷| 亚洲午夜av在线| 亚洲成人免费在线| 午夜不卡av在线| 天天av天天翘天天综合网色鬼国产| 亚洲一区二区欧美| 亚洲国产另类av| 亚洲h动漫在线| 天天色图综合网| 麻豆成人av在线| 激情六月婷婷久久| 国产成人午夜电影网| 丰满少妇久久久久久久 | 欧美在线综合视频| 在线免费视频一区二区| 欧美精品乱码久久久久久| 欧美日韩免费不卡视频一区二区三区| 欧美三级视频在线观看| 911精品国产一区二区在线| 欧美乱妇15p| 日韩欧美在线1卡| 久久久久久久久久久久电影| 中文字幕一区在线| 亚洲成人免费视频| 国产在线不卡一区| 99综合电影在线视频| 欧美午夜精品一区| 日韩一区二区精品在线观看| 久久免费午夜影院| 亚洲色图欧美在线| 日韩一区欧美二区| 91福利小视频| 日韩片之四级片| 国产精品伦一区二区三级视频| 中文字幕一区二区三区精华液 | 91视频在线看| 91精品国产色综合久久| 国产日韩欧美综合一区| 亚洲黄色片在线观看| 久久精品噜噜噜成人av农村| www.久久久久久久久| 国产欧美久久久精品影院| 国产欧美一区二区精品性色超碰| 日韩一区二区三区视频| 欧美丰满美乳xxx高潮www| 2024国产精品视频| 一区二区三区高清不卡| 另类的小说在线视频另类成人小视频在线| 国产成人av一区二区三区在线 | 91黄色在线观看| 26uuu精品一区二区在线观看| 一区在线中文字幕| 久色婷婷小香蕉久久| www.欧美日韩| 精品三级在线观看| 一区二区视频在线看| 国内精品写真在线观看| 欧美怡红院视频| 国产精品人成在线观看免费| 日韩高清不卡在线| 色综合天天做天天爱| 久久久久久久久久电影| 婷婷成人激情在线网| 波多野结衣一区二区三区| 日韩亚洲国产中文字幕欧美| 最新国产精品久久精品| 国产一区二区三区免费| 91精品久久久久久久99蜜桃| 亚洲欧美激情在线| 成人禁用看黄a在线| 日韩欧美二区三区| 五月天激情综合网| 一本色道久久综合狠狠躁的推荐| 久久免费视频一区| 免费在线看一区| 欧美色倩网站大全免费| 中文字幕制服丝袜成人av | 欧美日韩精品一区视频| 亚洲日本电影在线| 成人黄色av网站在线| 久久久久久久性| 久久av资源站| 日韩一区二区影院| 五月天中文字幕一区二区| 在线免费观看不卡av| 亚洲欧美激情小说另类| 波多野结衣一区二区三区 | 奇米一区二区三区av| 日韩你懂的在线观看| 亚洲va在线va天堂| 欧美性猛片aaaaaaa做受| 一区二区三区毛片| 欧美最猛性xxxxx直播| 亚洲卡通欧美制服中文| 色狠狠一区二区三区香蕉| 成人欧美一区二区三区黑人麻豆| 成人av电影免费在线播放| 国产精品久久久久久久久久免费看 | 亚洲欧美韩国综合色| 9人人澡人人爽人人精品| 亚洲欧洲色图综合| 972aa.com艺术欧美| 亚洲美女视频在线| 精品视频在线视频| 五月天激情综合网| 91精品国产乱| 国内精品视频一区二区三区八戒 | 精品久久久久久综合日本欧美| 免费高清视频精品| 精品捆绑美女sm三区| 国产精品亚洲第一| 国产精品久久久久永久免费观看| 97久久超碰精品国产| 一区二区视频在线| 欧美日韩一区二区三区四区五区| 日本中文字幕一区二区有限公司| 日韩区在线观看| 国产精品一区二区你懂的| 国产精品久久久久久户外露出| 91在线观看免费视频| 亚洲国产欧美日韩另类综合| 欧美高清性hdvideosex| 久久99精品久久久久久| 国产精品视频一区二区三区不卡| 91在线你懂得| 天天综合日日夜夜精品| 精品第一国产综合精品aⅴ| 成人精品在线视频观看| 亚洲专区一二三| 日韩亚洲电影在线| 风流少妇一区二区| 亚洲午夜影视影院在线观看| 欧美一区二区国产| 风间由美性色一区二区三区| 一区二区三区成人在线视频| 欧美一区二区三区日韩| 成人午夜在线免费| 天天色天天爱天天射综合| 国产日韩欧美激情| 欧美日韩精品三区| 国产一区激情在线| 亚洲一级电影视频| 久久久久久久综合狠狠综合| 在线观看日韩毛片| 久久99精品网久久| 亚洲在线中文字幕| 久久精品一级爱片| 欧洲精品中文字幕| 国产高清不卡二三区| 婷婷六月综合亚洲| 国产精品午夜免费| 欧美一级精品大片| 91原创在线视频| 精品一区二区三区在线观看国产| 亚洲欧美日韩一区二区| 久久久久久久久久电影| 欧美日韩不卡视频| 99精品久久只有精品| 极品尤物av久久免费看| 亚洲国产cao| 亚洲视频香蕉人妖| 久久久久久久电影|