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

📄 petrolslave.c

📁 比较完整的遗传算法的源代码
💻 C
字号:
#include <stdlib.h>#include <pvm3.h>#include "petrol.h"char *appName;static void SendMessage(int tid, int message);static void GetIndividuals(Individual **pop, int *howmany, int *location);static void SendIndividualsFitness(Individual *pop, int *howmany,				   int *location, int parent);static void Cleanup(Individual **pop, int howmany);void main(int argc, char **argv) {  int         parent, howmany, location, n;  Individual *pop;  strcreate(&appName, argv[0]);  parent = pvm_parent();  while (TRUE) {    pvm_recv(parent, PETROL_WORK);    SendMessage(parent, PETROL_WORK_REQUEST);    pvm_recv(parent, PETROL_WORK_INDIVIDUALS);    GetIndividuals(&pop, &howmany, &location);        for (n = 0; n < howmany; n++) {      (pop + n)->fitness = Fitness(pop + n);    }    SendIndividualsFitness(pop, &howmany, &location, parent);    Cleanup(&pop, howmany);  }}void SendMessage(int tid, int message) {  pvm_initsend(PvmDataDefault);  pvm_send(tid, message);}void GetIndividuals(Individual **pop, int *howmany, int *location) {  int         n;  Individual *i;  pvm_upkint(location, 1, 1);  pvm_upkint(howmany, 1, 1);  *pop = (Individual *)malloc(sizeof(Individual) * (*howmany));  for (n = 0; n < *howmany; n++) {    i = *pop + n;        pvm_upkint(&(i->chromLen), 1, 1);    i->chrom = (int *)malloc(sizeof(int) * i->chromLen);    pvm_upkint(i->chrom, i->chromLen, 1);  }}void SendIndividualsFitness(Individual *pop, int *howmany, int *location, 			    int parent) {  int         n;  Individual *i;  pvm_initsend(PvmDataDefault);  pvm_pkint(location, 1, 1);  pvm_pkint(howmany, 1, 1);  for (n = 0; n < *howmany; n++) {    i = pop + n;    pvm_pkdouble(&(i->fitness), 1, 1);  }  pvm_send(parent, PETROL_WORK_DONE);}void Cleanup(Individual **pop, int howmany) {  int         n;  Individual *i;  for (n = 0; n < howmany; n++) {    i = *pop + n;    free(i->chrom);  }  free(*pop);}

⌨️ 快捷键说明

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