Exemplo n.º 1
0
/** Tworzenie czasteczki.. */
void SnowEmitter::createNewParticle(Window* _window) {
	for (usint i = 0; i < getIntRandom(2, (int) (50 * (50.f / (float) delay)));
			++i) {
		float angle = getIntRandom<int>(20, 80);
		float speed = 1.f;
		
		Vector<float> wind(
				cos(TO_RAD(angle)) * speed,
				sin(TO_RAD(angle)) * speed);
		
		Particle part(
				Vector<float>(x, y),
				getIntRandom(6, 14),
				getIntRandom(50, 100),
				oglWrapper::WHITE);
		
		part.velocity = wind;
		part.angle = angle;
		
		part.velocity.y += getIntRandom(150, 350) / 150;
		part.pos.x = x + getIntRandom(-100, (int) w + 100);
		
		particles.push_back(part);
	}
}
Exemplo n.º 2
0
/** \brief This constructor is used when a species is randomly created (!!! NOT USED NOW)
 @version 0.1 (8 parameters)
 @param tmpID species identificator
 @param tmpSequence species sequence (e.g. ABABAABABA)
 @param tmpAmount species initial amount of molecules
 @param acs_double tmpDiffusionEnh Diffusione enhancement parameter
 @param acs_double tmpPrecipitationEnh Precipitation Enhancement parameters
 @param acs_double tmpComplexProb Probability to be a complex
 @param acs_double tmpMaxComplexDegKinetic max complex degradation constant
 @param MTRand& tmp_RandomGenerator random generator
 */
species::species(acs_longInt tmpID, string tmpSequence, acs_longInt tmpAmount, acs_double tmpDiffusionEnh, 
				 acs_int tmpSoluble, acs_double tmpComplexProb, acs_double tmpMaxComplexDegKinetic, 
				 MTRand& tmp_RandomGenerator, acs_double tmpVolume, acs_double tmpK_phospho, acs_int tmpEnergizable, acs_double tmpAlpha)
{
	cout << "four" << endl;

	id = tmpID;
	sequence = tmpSequence;
	amount = tmpAmount;
	numToConc(tmpVolume);
	chargedMols = 0;
	age = 0;
	reborns = 0;
	diffusionEnh =tmpDiffusionEnh;
	soluble = tmpSoluble;
	// RANDOM SELECTION BETWEEN SPECIES AND COMPLEX ACCORDING TO THE COMPLEX CREATION PROBABILITY
	acs_double dice = tmp_RandomGenerator();
	if(dice <= tmpComplexProb) //COMPLEX
	{
		complexDegradationEnh = getDoubleRandom(0.0, tmpMaxComplexDegKinetic, tmp_RandomGenerator);
		complexCuttingPoint = getIntRandom(2, sequence.length(), tmp_RandomGenerator) - 1;
		
	}else{ //SPECIES
		complexDegradationEnh = 0;
		complexCuttingPoint = 0;
	}
	evaluated = 0;
	K_phospho = tmpK_phospho;
	energizable = tmpEnergizable;
	concentrationFixed = false;
    firstConcentration = 0; // 0 because the species is created during on run
    lastSpeciesEvaluated = 0;
    alpha = tmpAlpha;
}
Exemplo n.º 3
0
int main(int, char const**)
{
    // Create the main window
    sf::RenderWindow window(sf::VideoMode(800, 600), "SFML window");

    /**
     * Bruit de base
     */
    
    sf::Image imagebruitRandom;
    sf::Texture textureBruitRandom;
    sf::Sprite spriteBruitRandom;
    imagebruitRandom.create(800, 600);
    
    for(int i = 0; i < 800; i++)
        for(int j = 0; j < 600; j++)
            if(getIntRandom(0,1) == 1)
                imagebruitRandom.setPixel(i,j, sf::Color::White);
    
    textureBruitRandom.loadFromImage(imagebruitRandom);
    spriteBruitRandom.setTexture(textureBruitRandom);

    /*-----------------------*/
 
    /**
     * Le background
     */
    
    sf::Image backgroundMouvement = imagebruitRandom;
    sf::Texture textureBackgroundMouvement;
    sf::Sprite spriteBackgroundMouvement;
    
    /*------------------------*/
    
    /**
     * Le texte
     */
    
    sf::Text texteEcrit;
    sf::Font fontTexte;
    fontTexte.loadFromFile("/Users/nicolasserf/Desktop/ProjetPersonnel/monPremierBruit/monPremierBruit/sansation.ttf");
    
    texteEcrit.setCharacterSize(100);
    texteEcrit.setColor(sf::Color::White);
    texteEcrit.setString("SALOPE");
    texteEcrit.setFont(fontTexte);
    texteEcrit.setPosition(250, 300);
    
    /*-------------------------*/
    
    /**
     * Texture texte "bruité"
     */
    
    sf::RenderTexture texteBruite;
    texteBruite.create(800, 600);
    texteBruite.draw(texteEcrit);
    texteBruite.display();
    texteBruite.draw(spriteBruitRandom, sf::BlendMultiply);
    texteBruite.display();
    
    sf::Sprite spriteTexteBruite;
    spriteTexteBruite.setTexture(texteBruite.getTexture());
    
    /*-------------------------*/
    
    /**
     * Texture background "bruité"
     */
    
    texteEcrit.setColor(sf::Color::Black); //on va écrire en noir sur fond blanc
    sf::RenderTexture backgroundBruite;
    backgroundBruite.create(800, 600);
    backgroundBruite.clear(sf::Color::White); //Fond blanc
    backgroundBruite.draw(texteEcrit);
    backgroundBruite.display();
    
    /*------------------------*/
    
    /**
     * Réunion du texte bruité et du background bruité
     */
    
    sf::Sprite regroupe;
    
    bool stop = true;

    while (window.isOpen())
    {
        if(stop)
        {
        backgroundMouvement = rotation(backgroundMouvement);
        textureBackgroundMouvement.loadFromImage(backgroundMouvement);
        spriteBackgroundMouvement.setTexture(textureBackgroundMouvement);
        
        backgroundBruite.draw(spriteBackgroundMouvement, sf::BlendMultiply);
        backgroundBruite.display();
        regroupe.setTexture(backgroundBruite.getTexture());
        
        backgroundBruite.draw(spriteTexteBruite, sf::BlendAdd);
        backgroundBruite.display();
        
        regroupe.setTexture(backgroundBruite.getTexture());
        }
        
        sf::Event event;
        while (window.pollEvent(event))
        {
            // Close window: exit
            if (event.type == sf::Event::Closed) {
                window.close();
            }

            // Escape pressed: exit
            if (event.type == sf::Event::KeyPressed && event.key.code == sf::Keyboard::Escape) {
                window.close();
            }
            
            if (event.type == sf::Event::KeyPressed && event.key.code == sf::Keyboard::A) {
                if(stop == false)
                    stop = true;
                else
                    stop = false;
            }
        }

        // Clear screen
        window.clear();
        //window.draw(spriteTexteBruite);
        window.draw(regroupe);
        // Update the window
        window.display();
        
        if(stop){
        backgroundBruite.clear(sf::Color::White);
        backgroundBruite.draw(texteEcrit);
        backgroundBruite.display();
        }
    }

    return EXIT_SUCCESS;
}
Exemplo n.º 4
0
/**
 * 学習処理
 * const char * path:保存先フォルダ
 */
int learningNeuralNetworkPP(const char * path) {
	if (state < 1) {
		printf("Not create neural network.\n");
		return -1;
	}
	/*処理開始*/
	start_time = gettimeofday_sec();
	int i, j;
	x = (double *) malloc(sizeof(double) * input.pattern * input.num);
	d = (double *) malloc(sizeof(double) * input.pattern * output.num);

	/*ログ用変数*/
	int log_count = 0;/*ログをテキストに書きだした回数*/
	int save_count = 0;/*ログを書きだすべきかどうか(0ならば書き出し、それ以外は無視)*/
	/*ログユニットのメモリを確保(隠れ層)*/
	logerH.num = getIntRandom(0, hidden[0].num - 1);
	logerH.bias = (double *) malloc(sizeof(double) * array_size);
	logerH.d = (double *) malloc(sizeof(double) * array_size);
	logerH.w = (double *) malloc(sizeof(double) * input.num * array_size);
	logerH.z = (double *) malloc(sizeof(double) * array_size);
	/*ログユニットのメモリを確保(出力層)*/
	logerO.num = getIntRandom(0, output.num - 1);
	logerO.bias = (double *) malloc(sizeof(double) * array_size);
	logerO.d = (double *) malloc(sizeof(double) * array_size);
	logerO.w = (double *) malloc(sizeof(double) * hidden[numLayer - 3].num * array_size);
	logerO.z = (double *) malloc(sizeof(double) * array_size);

	/*ニューラルネットワークの処理*/
	int num = 0;/*入力するパターン番号*/
	int start;/*読み込み開始ライン*/
	for (i = 0; i < times; i++) {
		printf("learning times %d-th.\n", i);
		/*ログ処理*/
		if (i % logFre == 0) {
			/*データをログに格納*/
			logerH.bias[save_count] = hidden[0].bias[logerH.num];
			logerH.d[save_count] = 0.0;
			logerH.z[save_count] = hidden[0].z[logerH.num];
			for (j = 0; j < input.num; j++) {
				logerH.w[input.num * save_count + j] = hidden[0].w[input.num * logerH.num + j];
			}
			logerO.bias[save_count] = output.bias[logerO.num];
			logerO.d[save_count] = input.d[output.num * num + logerO.num];
			logerO.z[save_count] = output.z[logerO.num];
			for (j = 0; j < hidden[numLayer - 3].num; j++) {
				logerO.w[hidden[numLayer - 3].num * save_count + j] =
						output.w[hidden[numLayer - 3].num * logerO.num + j];
			}
			save_count++;
			if (save_count == array_size && i != 0) {
				/*書き出し処理*/
				saveLogUnit(path, "hidden.csv", array_size, &logerH, log_count * array_size, array_size, input.num);
				saveLogUnit(path, "output.csv", array_size, &logerO, log_count * array_size, array_size,
						hidden[numLayer - 3].num);
				log_count++;
				save_count = 0;
			}
		}

		/*画像の学習が一定数終わったら新しい画像へ入れ替え*/
		if (data_type == 1 && array_size < NUM_IMAGES && i != 0 && i % (array_size / 2) == 0) {
			loadLineReset();
			DataSetTrainMNIST(input.pattern, x, d);
			setInput(output.num, &input, x, d);
		} else if (data_type == 0 && array_size < image_list.imageNum && i != 0 && i % (array_size / 2) == 0) {
			start = getIntRandom(0, image_list.imageNum - array_size);
			inputToImageData(&image_list, start, input.pattern, x, d);
			setInput(output.num, &input, x, d);
		}

		/*入力値を決定*/
		num = getIntRandom(0, input.pattern - 1);

		/*dropoutの判定*/
		if (dropout > 0) {
			setInputLayerDropout(&input);
			for (j = 0; j < numLayer - 2; j++) {
				setDropout(&hidden[j]);
			}
		}

		/*出力処理(中間層)*/
		for (j = 0; j < numLayer - 2; j++) {
			if (j > 0) {
				hiddenToOtherLayer(&hidden[j - 1], &hidden[j], 1.0);
			} else {
				inputToHiddenLayer(num, &input, &hidden[j], 1.0, 1.0);
			}
		}
		/*出力処理(出力層)*/
		hiddenToOtherLayer(&hidden[numLayer - 3], &output, 1.0);

		/*学習処理(出力層)*/
		learningOutputLayer(num, &input, &hidden[numLayer - 3], &output);
		/*学習処理(中間層)*/
		for (j = (numLayer - 3); j > -1; j--) {
			if (numLayer == 3) {
				learningFirstHiddenLayer(num, &input, &hidden[j], &output);
			} else if (j == (numLayer - 3)) {
				learningHiddenLayer(&hidden[j - 1], &hidden[j], &output);
			} else if (j > 0) {
				learningHiddenLayer(&hidden[j - 1], &hidden[j], &hidden[j + 1]);
			} else {
				learningFirstHiddenLayer(num, &input, &hidden[j], &hidden[j + 1]);
			}
		}

		/*dropoutを初期化*/
		if (dropout > 0) {
			resetInputLayerDropout(&input);
			for (j = 0; j < numLayer - 2; j++) {
				resetDropout(&hidden[j]);
			}
		}
	}

	/*残りのログデータを保存*/
	if (save_count != 0 || times == 1) {
		saveLogUnit(path, "hidden.csv", array_size, &logerH, log_count * array_size, save_count, input.num);
		saveLogUnit(path, "output.csv", array_size, &logerO, log_count * array_size, save_count,
				hidden[numLayer - 3].num);
	}

	/*ログユニットのメモリを解放(隠れ層)*/
	free(logerH.bias);
	free(logerH.d);
	free(logerH.w);
	free(logerH.z);
	/*ログユニットのメモリを解放(出力層)*/
	free(logerO.bias);
	free(logerO.d);
	free(logerO.w);
	free(logerO.z);

	/*ニューラルネットワークを保存*/
	printf("->Writing Neural Network\n");
	if (saveNeuralNetwork(path, numLayer, &input, &hidden, &output, dropout) < 0) {
		printf("ERROR:Not writed save data in %s.\n", path);
		/*エンターを押して終了を後で追加*/
		return -1;
	}

	/*処理終了*/
	free(x);
	free(d);
	end_time = gettimeofday_sec();
	return 1;
}