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

📄 utility.c

📁 遗传算法的简单程序
💻 C
字号:
//一些不重要的函数 
/*-------------------------------------------------------------------*/ 
/* utility.c - utility routines, contains copyright,  repchar, skip  */ 
/*-------------------------------------------------------------------*/ 
#include "external.h"
 
void copyright() 
{ 
    void repchar(), skip(); 
    int iskip; 
    int ll = 59; 
    iskip = (LINELENGTH - ll)/2; 
    skip(outfp,1); 
    repchar(outfp," ",iskip); 
	repchar(outfp,"-",ll); 
	skip(outfp,1); 
    repchar(outfp," ",iskip); 
    fprintf(outfp,"|        SGA-C (v1.1) - A Simple Genetic Algorithm  |\n"); 
    repchar(outfp," ",iskip); 
    fprintf(outfp,"|     (c) David E. Goldberg 1986, All Rights Reserved  |\n"); 
    repchar(outfp," ",iskip); 
    fprintf(outfp,"|        C version by Robert E. Smith, U. of Alabama  |\n"); 
    repchar(outfp," ",iskip); 
    fprintf(outfp,"|    v1.1 modifications by Jeff Earickson, Boeing Company  |\n"); 
    repchar(outfp," ",iskip); 
	repchar(outfp,"-",ll); 
	skip(outfp,2); 
} 

void repchar (outfp,ch,repcount)  /* Repeatedly write a character to stdout */ 
FILE *outfp; 
char *ch; 
int repcount; 
{ 
    int j; 
    for (j = 1; j <= repcount; j++) 
		fprintf(outfp,"%s",ch); 
} 

void skip(outfp,skipcount)           /* Skip skipcount lines */ 
FILE *outfp; 
int skipcount; 
{ 
    int j; 
    for (j = 1; j <= skipcount; j++) 
		fprintf(outfp,"\n"); 
}
 
/* interpret bits i thru j of a individual as an integer      */ 
/* j MUST BE greater than or equal to i AND j-i < UINTSIZE-1  */ 
/* from is a chromosome, represented as an array of unsigneds */ 
int ithruj2int(i,j,from) 
int i,j; 
unsigned *from; 
{ 
    unsigned mask, temp; 
    int bound_flag; 
    int iisin, jisin; 
    int i1, j1, out; 
    if(j < i) 
    { 
        fprintf(stderr,"Error in ithruj2int: j < i\n"); 
        exit(-1); 
    } 
    if(j-i+1 > UINTSIZE) 
    { 
        fprintf(stderr,"Error in ithruj2int: j-i+1 > UINTSIZE\n"); 
        exit(-1); 
    } 
    iisin = i/UINTSIZE; 
    jisin = j/UINTSIZE; 
    i1 = i - (iisin*UINTSIZE); 
    j1 = j - (jisin*UINTSIZE); 
        if(i1 == 0) 
        { 
                iisin = iisin-1; 
                i1 = i - (iisin*UINTSIZE); 
        }; 
        if(j1 == 0) 
        { 
                jisin = jisin-1; 
                j1 = j - (jisin*UINTSIZE); 
        }; 
    /* check if bits fall across a word boundary */ 
    if(iisin == jisin) 
        bound_flag = 0; 
    else 
        bound_flag = 1; 
    if(bound_flag == 0) 
    { 
        mask = 1; 
        mask = (mask<<(j1-i1+1))-1; 
        mask = mask<<(i1-1); 
        out = (from[iisin]&mask)>>(i1-1); 
        return(out); 
    } 
    else 
    { 
        mask = 1; 
        mask = (mask<<j1)-1; 
        temp = from[jisin]&mask; 
        mask = 1; 
        mask = (mask<<(UINTSIZE-i1+1))-1; 
        mask = mask<<(i1-1); 
        out = ((from[iisin]&mask)>>(i1-1)) | (temp<<(UINTSIZE-i1+1)); 
        return(out); 
    } 
} 

⌨️ 快捷键说明

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