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

📄 lang.cfc

📁 遗传规划工具
💻 CFC
字号:
#define PRINT_CASES 1void PrintCases(void) {    int case_num;    int index;        for (case_num = 0; case_num < MAX_NUM_FIT_CASES; case_num++) {        for (index = 0; index < fitness_cases[case_num].length; index++) {            printf("%d", fitness_cases[case_num].string[index]);        }        printf("\t\t %d\n", fitness_cases[case_num].valid);    }}/* Ends in 101 *//*int IsValid(int string[], int length) {    if (length < 3) return FALSE;    if ((string[length-3] == 1) &&         (string[length-2] == 0) &&         (string[length-1] == 1))         return TRUE;    return FALSE;}*//* 4 0s then 4 1s */int IsValid(int string[], int length) {    int i;    int num_zeros = 0;    int num_ones = 0;    int got_3_zeros = 0;        for (i = 0; i < length; i++) {        if (string[i] == 0) {            num_ones = 0;            num_zeros++;            if (num_zeros == 4) got_3_zeros = TRUE;;        }        else {            num_zeros = 0;            num_ones++;            if ((num_ones == 4) && got_3_zeros) return TRUE;        }    }    return FALSE;}/*   (10)*     *//*int IsValid(int string[], int length) {    int match = 1;    int i;        if ((length % 2) != 0) return FALSE;        for (i = 0; i < length; i++) {        if (string[i] != match) return FALSE;        match = (match + 1) % 2;    }    return TRUE;}*//*  pairwise, an even sum of 01s and 10s *//*int IsValid(int string[], int length) {    int last = 2;    int i;    int num = 0;        for (i = 0; i < length; i++) {        if (string[i] == 0) {            if (last == 1) num++;            last = 0;        }        else {            if (last == 0) num++;            last = 1;       }    }        if ((num % 2) == 0) return TRUE;    return FALSE;}*/void Alternate(int case_num, int length) {    int index;    int next = 1;        for (index = 0; index < length; index++) {        fitness_cases[case_num].string[index] = next;        next = (next + 1) %2;    }}/* even 0s and 1s *//*int IsValid(int string[], int length) {    int i;    int num_ones = 0;    int num_zeros = 0;        for (i = 0; i < length; i++) {        if (string[i] == 0) num_zeros++;        else num_ones++;    }        if ((num_zeros % 2) != 0) return FALSE;    if ((num_ones % 2) != 0) return FALSE;    return TRUE;}*//*   #1s - #0s = 3n   *//*int IsValid(int string[], int length) {    int i;    int diff;    int num_ones = 0;    int num_zeros = 0;        for (i = 0; i < length; i++) {        if (string[i] == 0) num_zeros++;        else num_ones++;    }    diff = num_ones - num_zeros;    if (diff < 0) diff = -diff;    if ((diff % 3) == 0) return TRUE;    else return FALSE;}*//* TL3 - no odd 0s after odd 1s *//*int IsValid(int string[], int length) {    int i;    int last = 0;    int cur0 = 0;    int cur1 = 0;    for (i = 0; i < length; i++) {	if (string[i] == 1) {	    if (last == 0) {		if ((cur1 == 1) && (cur0 == 1)) return FALSE;		cur1 = 1;	    }	    else cur1 = (cur1 + 1) % 2;	    last = 1;	}	else {	    if (last == 1) cur0 = 1;	    else cur0 = (cur0 + 1) %2;	    last = 0;	}    }    if ((last == 0) && (cur1 == 1) && (cur0 == 1)) return FALSE;    return TRUE;}*//* TL7- 0*1*0*1* *//*int IsValid(int string[], int length) {    int i;    int state = 0;        for (i = 0; i < length; i++) {	if ((state == 0) && (string[i] == 1)) state = 1;	else if ((state == 1) && (string[i] == 0)) state = 2;	else if ((state == 2) && (string[i] == 1)) state = 3;	else if ((state == 3) && (string[i] == 0)) return FALSE;    }        return TRUE;}*/int Equal(int string1[], int string2[], int length) {    int i;        for (i = 0; i < length; i++) {        if (string1[i] != string2[i])            return FALSE;    }        return TRUE;}int Unique(int case_num) {    int i;        for (i = 0; i < case_num; i++) {        if (fitness_cases[i].length == fitness_cases[case_num].length) {            if (Equal(  fitness_cases[i].string,                         fitness_cases[case_num].string,                        fitness_cases[case_num].length)) {                return FALSE;            }        }    }     return TRUE;}void CreateFitnessCases (Population *pop)/*;*/ /*funcdef*/{    int case_num;    int length;    int index;    int num_valid = 0;    int num_invalid = 0;    long int temp = GetSeed(pop);    int alternate = 0;    /*    SetSeed(pop, (long)43);    */    SetSeed(pop, (long)60);        case_num = 0;    while (case_num < MAX_NUM_FIT_CASES) {        length = RandomInt(MAX_STRING_LENGTH) + 1;        fitness_cases[case_num].length = length;        /*alternate = (num_invalid == (MAX_NUM_FIT_CASES / 2));*/        if (!alternate) {                    for (index = 0; index < length; index++) {                fitness_cases[case_num].string[index] = RandomInt(2);            }        }                else {            Alternate(case_num, length);        }                fitness_cases[case_num].valid = IsValid(fitness_cases[case_num].string,                                                fitness_cases[case_num].length);        if (fitness_cases[case_num].valid) {            if (num_valid < (MAX_NUM_FIT_CASES/2)) {                if (Unique(case_num)) {                    num_valid++;                    case_num++;                }            }        }        else {            if (num_invalid < (MAX_NUM_FIT_CASES/2)) {                if (Unique(case_num)) {                    num_invalid++;                    case_num++;                }            }        }   }      /*PrintCases();*/   SetSeed(pop, (long)temp);}                                                                                                                                                                                                                                                                                                                                         /*                                                            fitness_cases[0].length = 4;    fitness_cases[0].string[0] = INPUT_B;    fitness_cases[0].string[1] = INPUT_B;    fitness_cases[0].string[2] = INPUT_A;    fitness_cases[0].string[3] = INPUT_B;    fitness_cases[0].string[4] = INPUT_X;    fitness_cases[0].string[5] = INPUT_X;    fitness_cases[0].string[6] = INPUT_X;    fitness_cases[0].string[7] = INPUT_X;    fitness_cases[0].valid = TRUE;                    fitness_cases[1].length = 8;    fitness_cases[1].string[0] = INPUT_B;    fitness_cases[1].string[1] = INPUT_A;    fitness_cases[1].string[2] = INPUT_B;    fitness_cases[1].string[3] = INPUT_A;    fitness_cases[1].string[4] = INPUT_B;    fitness_cases[1].string[5] = INPUT_B;    fitness_cases[1].string[6] = INPUT_A;    fitness_cases[1].string[7] = INPUT_B;    fitness_cases[1].valid = TRUE;                    fitness_cases[2].length = 8;    fitness_cases[2].string[0] = INPUT_B;    fitness_cases[2].string[1] = INPUT_B;    fitness_cases[2].string[2] = INPUT_A;    fitness_cases[2].string[3] = INPUT_B;    fitness_cases[2].string[4] = INPUT_B;    fitness_cases[2].string[5] = INPUT_B;    fitness_cases[2].string[6] = INPUT_A;    fitness_cases[2].string[7] = INPUT_B;    fitness_cases[2].valid = TRUE;                    fitness_cases[3].length = 7;    fitness_cases[3].string[0] = INPUT_B;    fitness_cases[3].string[1] = INPUT_B;    fitness_cases[3].string[2] = INPUT_A;    fitness_cases[3].string[3] = INPUT_B;    fitness_cases[3].string[4] = INPUT_B;    fitness_cases[3].string[5] = INPUT_A;    fitness_cases[3].string[6] = INPUT_B;    fitness_cases[3].string[7] = INPUT_X;    fitness_cases[3].valid = TRUE;                    fitness_cases[4].length = 8;    fitness_cases[4].string[0] = INPUT_A;    fitness_cases[4].string[1] = INPUT_A;    fitness_cases[4].string[2] = INPUT_A;    fitness_cases[4].string[3] = INPUT_A;    fitness_cases[4].string[4] = INPUT_B;    fitness_cases[4].string[5] = INPUT_B;    fitness_cases[4].string[6] = INPUT_A;    fitness_cases[4].string[7] = INPUT_B;    fitness_cases[4].valid = TRUE;                    fitness_cases[5].length = 8;    fitness_cases[5].string[0] = INPUT_A;    fitness_cases[5].string[1] = INPUT_B;    fitness_cases[5].string[2] = INPUT_A;    fitness_cases[5].string[3] = INPUT_A;    fitness_cases[5].string[4] = INPUT_B;    fitness_cases[5].string[5] = INPUT_B;    fitness_cases[5].string[6] = INPUT_A;    fitness_cases[5].string[7] = INPUT_A;    fitness_cases[5].valid = FALSE;                    fitness_cases[6].length = 3;    fitness_cases[6].string[0] = INPUT_B;    fitness_cases[6].string[1] = INPUT_A;    fitness_cases[6].string[2] = INPUT_B;    fitness_cases[6].string[3] = INPUT_X;    fitness_cases[6].string[4] = INPUT_X;    fitness_cases[6].string[5] = INPUT_X;    fitness_cases[6].string[6] = INPUT_X;    fitness_cases[6].string[7] = INPUT_X;    fitness_cases[6].valid = FALSE;                    fitness_cases[7].length = 5;    fitness_cases[7].string[0] = INPUT_B;    fitness_cases[7].string[1] = INPUT_B;    fitness_cases[7].string[2] = INPUT_A;    fitness_cases[7].string[3] = INPUT_B;    fitness_cases[7].string[4] = INPUT_B;    fitness_cases[7].string[5] = INPUT_X;    fitness_cases[7].string[6] = INPUT_X;    fitness_cases[7].string[7] = INPUT_X;    fitness_cases[7].valid = FALSE;                    fitness_cases[8].length = 8;    fitness_cases[8].string[0] = INPUT_B;    fitness_cases[8].string[1] = INPUT_B;    fitness_cases[8].string[2] = INPUT_A;    fitness_cases[8].string[3] = INPUT_A;    fitness_cases[8].string[4] = INPUT_B;    fitness_cases[8].string[5] = INPUT_B;    fitness_cases[8].string[6] = INPUT_A;    fitness_cases[8].string[7] = INPUT_A;    fitness_cases[8].valid = FALSE;                    fitness_cases[9].length = 4;    fitness_cases[9].string[0] = INPUT_A;    fitness_cases[9].string[1] = INPUT_A;    fitness_cases[9].string[2] = INPUT_A;    fitness_cases[9].string[3] = INPUT_A;    fitness_cases[9].string[4] = INPUT_X;    fitness_cases[9].string[5] = INPUT_X;    fitness_cases[9].string[6] = INPUT_X;    fitness_cases[9].string[7] = INPUT_X;    fitness_cases[9].valid = FALSE;  */              

⌨️ 快捷键说明

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