В чем заключается ошибка этой программы и исправление ее
#include<stdio.h> #include<conio.h> #include<stdlib.h> #include<math.h> #include<complex.h> #define chrom_len 14 #define chromosome_number 20 typedefstructChrom // creating the chrom structure { short int bit[chrom_len]; float fit; float modulus; int condition; }chrom; structchrom_ele { short int bit1[chrom_len/2]; int val1; }chrom1; void* init_pop(chrompopcurrent[chromosome_number]); void *pickchroms(chrompopcurrent[chromosome_number]); void *crossover(chrompopcurrent[chromosome_number]); void *mutation(chrompopnext[chromosome_number]); int x(chrom_elepopcurrent); float y(int x1,int x2); float modulus_calc(int x1,int x2); void final_output(chrompopcurrent[chromosome_number]); void final_top(chrompopcurrent[chromosome_number]); float mod,min_vol; void main() // the main function { inti,j,pop_number,value,itr,z; chrompopcurrent[chromosome_number]; // we make 4 chromes of popcurrent chrompopnext[chromosome_number]; float vol,SA,CF,SF; clrscr(); printf("\n------------------****----Genetic Alogorithm----****----------------------------"); // introduction to the program printf("\n\t--------Fitness finction is f(x1,x2)=0.785*x1*x1*x2----------- "); printf("\nEnter volume:"); scanf("%f",&vol); printf("\nEnter Surface area:"); scanf("%f",&SA); printf("\nEnter Safety Factor(SF Generaly 1.2)"); scanf("%f",&SF); mod=SF*(vol/SA); printf("\nMod is :%f",mod); printf("\nEnter value of Contraction factor(CF in %) :"); scanf("%f",&CF); min_vol=(vol*CF)/100; printf("\nMinimum volume is %f",min_vol); printf("\nPlease Enter the number of iteration :"); scanf("%d",&itr); printf("\nStep 1: Initial Population:"); init_pop(popcurrent); for(z=0;z<itr;z++) //repeat the procedure itr times { clrscr(); printf("\n\n--------------------Iteration Number is-->%d-----------------------------",(z+1)); for(i=0;i<chromosome_number;i++) { popnext[i]=popcurrent[i]; } pickchroms(popnext); // for picking best chrom crossover(popnext); // for making crossover mutation(popnext); // mutate the chromosome for(i=0;i<chromosome_number;i++) { popcurrent[i]=popnext[i]; } flushall(); // flush the input buffer } printf("\nPress any key to end ! "); final_output(popcurrent); getche(); // wait for a character from the keyboard to end } //end of main int x(chrom_elepopcurrent) //x function that evaluate the value of a given chrom { int z=0,k; int temp=0; for(k=0;k<(chrom_len/2);k++) { if(k==0) { temp=1; } else { temp=pow(2,k); } z+=(popcurrent.bit1[k]*temp); } z=(popcurrent.bit[0]*1)+(popcurrent.bit[1]*2)+(popcurrent.bit[2]*4)+(popcurrent.bit[3]*8)+(popcurrent.bit[4]*16); return(z); //return the value of z } // end x function float y(int x1,int x2) // the y function that we look for it's maximum value takes x value { float y; y=(0.785*x1*x1*x2); return(y); } // end of y function float modulus_calc(int x1,int x2) { float mod; mod=(x1*x2)/(2*x1+4*x2); return (mod); } void *init_pop(chrompopcurrent[chromosome_number]) { inti,j,random; chrom_ele pop1[chromosome_number]; chrom_ele pop2[chromosome_number]; for(j=0;j<chromosome_number;j++) // loop of j to choose chromes from [0] to [3] { for(i=0;i<chrom_len;i++) // loop of i to choose the gen of the chrom from [0] to [5] { random=rand(); // creating random value random=(random%2); // make the random value o or 1 only popcurrent[j].bit[i]=random; // initialising the bit[i] of chrom[j] with random } // end of for(i) } // end of for(j) for(i=0;i<chromosome_number;i++) { for(j=chrom_len/2;j>=0;j--) { pop1[i].bit1[j]=popcurrent[i].bit[j]; } } int
Что я уже пробовал:
Я пытаюсь запустить программу, но она не может работать из-за ошибки
Patrice T
Какое сообщение об ошибке, где?
W∴ Balboos, GHB
Если это не ошибка компилятора, откройте для себя красоту отладчика!
Richard MacCutchan
Исправить ошибку.
jeron1
Кроме того, похоже, что вы вставили не весь код.