Example #1
0
void PrintChromo(int bits[])
{
	printf("I AM PRINTCHROMO!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
	int buffer[(int)(BITLENGTH / GENELENGTH)];
	int numberOfElements = ParseBits(bits, buffer);
	int p;
	for(p = 0; p < numberOfElements; p++)
	{
		PrintGeneSymbol(buffer[p]);
	}
}
Example #2
0
//---------------------------------PrintChromo---------------------------------------
//
// decodes and prints a chromo to screen
//-----------------------------------------------------------------------------------
void PrintChromo(string bits){
	//holds decimal values of gene sequence
	int buffer[(int)(CHROMO_LENGTH / GENE_LENGTH)];

	//parse the bit string
	int num_elements = ParseBits(bits, buffer);

	for (int i=0; i<num_elements; i++)
    {
		PrintGeneSymbol(buffer[i]);
    }
	return;
}
Example #3
0
float AssignFitness(int bits[], float target)
{
	int buffer[(int)(BITLENGTH / GENELENGTH)];
	int numberOfElements = ParseBits(bits, buffer);
	float result = 0.0f;
	
	int i;
	for(i = 0; i < numberOfElements - 1; i += 2)
	{
		switch (buffer[i])
		{
			case 10:
				result += buffer[i + 1];
				break;
			case 11:
				result -= buffer[i + 1];
				break;
			case 12:
				result *= buffer[i + 1];
				break;
			case 13:
				result /= buffer[i + 1];
				break;
			default:
				break;
		}
	}

	if(debug == 0)
	{
		printf("\n result %f \n", result); 
	}
	if(result == (float)target)
	{
		return 999.0f;
	}
	else
	{
		return 1/(float)fabs((double)(target - result));
	}
}
Example #4
0
//---------------------------------AssignFitness--------------------------------------
//
//	given a string of bits and a target value this function will calculate its
//  representation and return a fitness score accordingly
//------------------------------------------------------------------------------------
float AssignFitness(string bits, int target_value)
{

	//holds decimal values of gene sequence
	int buffer[(int)(CHROMO_LENGTH / GENE_LENGTH)];
	int num_elements = ParseBits(bits, buffer);

	// ok, we have a buffer filled with valid values of: operator - number - operator - number..
	// now we calculate what this represents.
	float result = 0.0f;
	for (int i=0; i < num_elements-1; i+=2){
		switch (buffer[i]){
			case 10:
				result += buffer[i+1];
				break;

			case 11:
				result -= buffer[i+1];
				break;

			case 12:
				result *= buffer[i+1];
				break;

			case 13:
				result /= buffer[i+1];
				break;

		}//end switch

	}
	// Now we calculate the fitness. First check to see if a solution has been found
	// and assign an arbitarily high fitness score if this is so.
	if(result == (float)target_value){
		return 999.0f;
	}else{
		return 1/(float)fabs((double)(target_value - result));
    }
}