restore_bplatform_bin_file ()
{
    int rr;
    /* 0 */
    read_fm( rr, 1 );
    read_fm(vnbs,1);
    read_fm(ttms,1);
    read_fm(vad(1),vnbs+1);
    restore_alloc ( vad(vnbs+1) );
    read_fm(mmts[1],vad(vnbs+1));
    read_fm(vtt(1),vnbs);
    read_fm(tmbs[1],ttms);
    mtt(vnbs+1,0);            /* !!! */
    mad(vnbs+2,max_mem);      /* !!! */
    /* 1 */
    read_fm( rr, 1 );
    read_fm(sym,1);
    read_fm(stri[1],sym);
    read_fm(lexi[1],sym);
    read_fm(edit[1],sym);
    read_fm(prio[1],sym);
    read_fm(righ[1],sym);
    read_fm(clos[1],sym);
    read_fm(arity[1],sym);
    /* 2 */
    read_fm( rr, 1 );
    read_fm(hcod[1],max_sym);
    /* 3 */
    read_fm( rr, 1 );
    read_fm(rul,1);
    read_fm(ant[1],rul);
    read_fm(cns[1],rul);
    read_fm(rth[1],rul);
    read_fm(num[1],rul);
    read_fm(trl[1],rul);
    read_fm(lsb[1],rul);
    read_fm(pvd[1],rul);
    read_fm(sts[1],rul);
    /* 4 */
    read_fm( rr, 1 );
    read_fm(rttm,1);
    read_fm(rtmb[1],rttm);
    /* 7 */
    read_fm( rr, 1 );
    read_fm(the,1);
    read_fm(tru[1],the);
    read_fm(tna[1],the);
    read_fm(tnm[1],the);
    read_fm(ttc[1],the);
    read_fm(tft[1],the);
    /* 8 */
    read_fm( rr, 1 );
    read_fm(tttm,1);
    read_fm(ttmb[1],tttm);
    /* 9 */
    read_fm( rr, 1 );
    read_fm(ttdi,1);
    read_fm(tdir[1],ttdi);
}
Ejemplo n.º 2
0
	//Create from random
	DNA(int iLength){
		std::random_device rdt;
		std::mt19937 mtt(rdt());

		//random value within ascii characters
		std::uniform_int_distribution<int> distt(32, 128);

		//Populate this new array with random char values
		for (int i = 0; i < iLength; ++i){
			cGenes.push_back((char)distt(mtt));
		}

		//Init fitness and mutation values
		fFitness = 0.0f, fMutation = 0.01f;
	};
Ejemplo n.º 3
0
	//Mutate genes
	void Mutate(){
		std::random_device rdt;
		std::mt19937 mtt(rdt());

		//random value 0 - 1
		std::uniform_real_distribution<double> distt(0, 1);

		//random char value
		std::uniform_int_distribution<int> distt2(32, 128);

		for (int i = 0; i < cGenes.size(); ++i) {
			double t = distt(mtt);
			if (t < fMutation) {
				cGenes[i] = distt2(mtt);
			}
		}
	};
Ejemplo n.º 4
0
	//Create from parents
	DNA(std::shared_ptr<DNA> parent1, std::shared_ptr<DNA> parent2){
		std::random_device rdt;
		std::mt19937 mtt(rdt());

		//random value within gene size
		std::uniform_int_distribution<int> distt(0, parent1->GetGeneSize());

		/*Set a midpoint for deciding which parent to take gene from.
		Alternatively this could be done by doing 50/50 chance
		on each gene */
		int m = distt(mtt);

		//Begin filling cGenes array TODO: Ensure genes pushed in correct order
		for (int i = 0; i < parent1->GetGeneSize(); ++i){
			if (i > m){
				cGenes.push_back(parent1->GetGeneAt(i));
			} else {
				cGenes.push_back(parent2->GetGeneAt(i));
			}
		}

		//Initiate fitness and mutation
		fFitness = 0.0f, fMutation = 0.01f;
	};