91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

資源簡介

基于并行遺傳算法的TSP問題C++代碼,本代碼改編自《Parallel Genetic Algorithms: A Typical MPI Application》,添加了豐富的代碼注釋。

資源截圖

代碼片段和文件信息

/*
??MPI?based?TSP?Problem
??
??本代碼改編自:Parallel?Genetic?Algorithms:?A?Typical?MPI?Application。?見pga.pdf
??
??由于測試需要添加了Linux的信號處理函數(shù),需要安裝有MPICH/openmpi庫的Linux系統(tǒng)下編譯:
??mpicxx?-g?pga.cpp?-o?pga
??
??城市坐標文件:cities.txt
??
??運行:mpirun?-n?4?./pga?
??
??您也可以把Linux信號處理部分的代碼注釋掉,這樣可以在Windows系統(tǒng)的編譯(需要安裝Windows版MPICH2,或微軟的MPI庫)
??
*/

#include?
#include?
#include?
#include?
#include?
#include?
#include?

#include?
#include?
#include?
#include?

#include?
using?namespace?std;

#define?POP_SIZE????1000
#define?MAX_Gen?????3000
#define?MUTATIONFACTOR??0.035
#define?EXCHANGEPERIOD??10


#define?CITYNO????25
#define?DATAFILE?“cities.txt“??//?城市地理坐標文件

/*
????0.8147????0.7577
????0.9058????0.7431
????0.1270????0.3922
????0.9134????0.6555
????0.6324????0.1712
????0.0975????0.7060
????0.2785????0.0318
????0.5469????0.2769
????0.9575????0.0462
????0.9649????0.0971
????0.1576????0.8235
????0.9706????0.6948
????0.9572????0.3171
????0.4854????0.9502
????0.8003????0.0344
????0.1419????0.4387
????0.4218????0.3816
????0.9157????0.7655
????0.7922????0.7952
????0.9595????0.1869
????0.6557????0.4898
????0.0357????0.4456
????0.8491????0.6463
????0.9340????0.7094
????0.6787????0.7547
*/


typedef?struct?scity?
{
float?x_coord;???//?x
float?y_coord;???//?y
}?city;

struct?
{
float?value;
int???index;
}?in?out;


MPI_Datatype?MPI_City;
typedef?int?path[CITYNO];
city?cities[CITYNO];


int?rank?size;

void?random_shuffle(path?p);

float?Fitness(path?p);

int?comparepaths(const?void?*p1?const?void?*p2);

void?crossover(path?p1?path?p2);

void?Do_Crossover(path?p1?path?p2?path?np1?path?np2);

void?printpath(path?p);

void?mutate(path?p);

void?select_crossover_choices(int?*p?float?*fits);

void?random_crossover_choices(int?*p?float?*fits);

int?find_pid_by_name(?char*?ProcName?vector&?pid_x);


void?handler(int?sig)
{
printf(“Get?a?signal?num?is?%d?!\n“?sig);
printf(“Ding!Ding!Ding!Ding!Ding!?\n“);\


if(0?==?rank)
{
????//pga并行計算的0號進程,發(fā)送給另一個進程solver?一個ALARM信號:
????
????//通過進程名獲取進程pid
????vector?pid;
????????????
????????????int?rv?=?find_pid_by_name(“solver“?pid);
????????????if(!rv)?
????????????{
?????????????????for(int?i?=?0;?i??????????????????{
??????????????????????printf(“pid[%d]=%d\n“?i?pid[i]);??//?如果solver也是MPI并行從小,那么同名的進程可能不止一個。
??????????????????????kill(pid[i]?SIGALRM);??????????????//?向名為solver的進程發(fā)送一個SIGALRM信號
??????????????????????printf(“pga?send?an?alarm?to?solver?%d\n“pid[i]);
?????????????????}
????????????}
????????}
????????
????????
????????//?對外發(fā)送完信號后,發(fā)送給自己一個暫停的信號?
????????pid_t?pidme?=?getpid();
kill(19?pidme); ?


sleep(20);?

kill(18?pidme);?????//睡眠20秒后,開始續(xù)算

}


int?main(int?argc?char?**argv)
{

city?acity;

int?lenc[2];

MPI_Aint?locc[2];
MPI_Datatype?typc[2];
MPI_Aint?baseaddr;

/

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

?????文件????????525??2018-06-21?16:37??MPI-GA-TSP\src\cities.txt

?????文件?????274297??2018-07-31?14:49??MPI-GA-TSP\src\pga

?????文件??????13873??2018-07-31?16:19??MPI-GA-TSP\src\pga.cpp

?????文件?????118106??2018-05-07?13:35??MPI-GA-TSP\src\pga.pdf

?????目錄??????????0??2018-07-31?16:18??MPI-GA-TSP\src

?????目錄??????????0??2018-07-31?16:12??MPI-GA-TSP

-----------?---------??----------?-----??----

???????????????406801????????????????????6


評論

共有 條評論