Esempio n. 1
0
/*
  今回のレポートでは、人工頭脳の端(AI->neu[3][0])に網膜があり、
  そこから断続的にパルスが発生していて、その信号を中央の視覚受容野(AI->neu[size/2][size/2])
  まで伝搬させるという状況をシミュレートする。
  網膜でのパルス発生の頻度はFREQとしてマクロ定義してある。
*/
int runAI(myAI* AI, double runTime){
    //printf("hi\n");
    double startTime = currentTime();
    double t0 = currentTime();
    printAI(AI);

    while((currentTime() - startTime) < runTime){
        /*神経細胞間で情報を伝達*/
        communicate1(AI);        
        communicate2(AI);

        /*一定時間ごとに網膜からパルスを受け取る*/
        if((currentTime() - t0) > 1.0/FREQ){
            AI->neu[3][0].state = AI->neu[3][0].state | b0000_0001;
            t0 = currentTime();
        }

        clearScreen();
        printAI(AI);
        waitAI();//フレームレートの調節
    }

    return 0;
}
Esempio n. 2
0
/*遺伝的アルゴリズムで使う用の人工知能稼働*/
int runAIforGA(myAI* AI){
    int i//counter
    
    for(i = 0; i < SIZE*SIZE; i++){
        /*神経細胞間で情報を伝達*/
        communicate1(AI);
        communicate2(AI);
        
        /*一定時間ごとに網膜からパルスを受け取る*/
        if((currentTime() - t0) > 1.0/FREQ){
            AI->neu[3][0].state = AI->neu[3][0].state | b0000_0001;
            t0 = currentTime();
        }
        
        clearScreen();
        printAI(AI);
        waitAI();//フレームレートの調節
    }
        
    return 0;
}
Esempio n. 3
0
File: ai.c Progetto: ceppa/socket
int loadIntrusione()
{
	MYSQL_RES *result;
	MYSQL_ROW row;
	int state;
	int i,j,k,n;
	int idRow;
	int out;
	int n_ss;
	int id_sistema;
	char descrizione[30];
	unsigned char enabled;
	int id_digital;
	int id_digital_out;
	int id_ai_sottosistema;
	MYSQL *conn=mysqlConnect();
	if( conn == NULL ) 
	{
		my_printf("%s\n",mysql_error(conn));
		return (1);
	}

// sistemi
	state = mysql_query(conn, "SELECT ai_sistemi.id_sistema,"
			"ai_sistemi.descrizione,ai_sistemi.enabled,"
			"count(ai_sottosistemi.id_ai_sottosistema) AS n_ss "
			"FROM ai_sistemi LEFT JOIN ai_sottosistemi "
			"ON ai_sistemi.id_sistema=ai_sottosistemi.id_ai_sistema "
			"GROUP BY ai_sistemi.id_sistema");

	if( state != 0 )
	{
		my_printf("%s\n",mysql_error(conn));
		return(1);
	}
	result = mysql_store_result(conn);
	NUM_AI_SISTEMI=mysql_num_rows(result);

	if(NUM_AI_SISTEMI==0)
		return;

	my_printf("get_shared_memory_segment: ai_sistemi\n");
	ai_sistemi=(struct ai_system_node *)get_shared_memory_segment
		(NUM_AI_SISTEMI * sizeof(struct system), &SHMAISYSTEMS, "/dev/zero");
	if(!ai_sistemi)
		die("ai_sistemi - get_shared_memory_segment\n");

	idRow=0;
	while( ( row = mysql_fetch_row(result)) != NULL )
	{
		id_sistema=atoi(row[0]);
		if(row[1])
			strcpy(descrizione,row[1]);
		else
			strcpy(descrizione,"");
		enabled=atoi(row[2]);
		n_ss=atoi(row[3]);
		ai_sistemi[idRow].id_sistema=id_sistema;
		strcpy(ai_sistemi[idRow].descrizione,descrizione);
		ai_sistemi[idRow].enabled=enabled;
		ai_sistemi[idRow].n_ss=n_ss;
		ai_sistemi[idRow].ss_active=0;
		ai_sistemi[idRow].active=0;
		ai_sistemi[idRow].ss_nodes=(struct ai_sottosistema *)malloc(n_ss*sizeof(struct ai_sottosistema));
		for(i=0;i<n_ss;i++)
			ai_sistemi[idRow].ss_nodes[i].id_ai_sottosistema=-1;
		idRow++;
	}
	mysql_free_result(result);

// sottosistemi
	state = mysql_query(conn, "SELECT ai_sistemi.id_sistema, "
		"ai_sottosistemi.id_ai_sottosistema, ai_sottosistemi.descrizione, "
		"COUNT( ai_sottosistemi_input_output.id_ai_input_output ) as c "
		"FROM ai_sistemi LEFT JOIN ai_sottosistemi "
		"ON ai_sistemi.id_sistema = ai_sottosistemi.id_ai_sistema "
		"LEFT JOIN ai_sottosistemi_input_output "
		"ON ai_sottosistemi.id_ai_sottosistema = "
			"ai_sottosistemi_input_output.id_ai_sottosistema "
		"WHERE ai_sottosistemi.id_ai_sottosistema IS NOT NULL "
		"GROUP BY ai_sottosistemi.id_ai_sottosistema");

	if( state != 0 )
	{
		my_printf("%s\n",mysql_error(conn));
		return(1);
	}
	result = mysql_store_result(conn);
	while( ( row = mysql_fetch_row(result)) != NULL )
	{
		id_sistema=atoi(row[0]);
		id_ai_sottosistema=atoi(row[1]);
		if(row[2])
			strcpy(descrizione,row[2]);
		else
			strcpy(descrizione,"");
		n=atoi(row[3]);
		
		for(i=0;i<NUM_AI_SISTEMI;i++)
			if(ai_sistemi[i].id_sistema==id_sistema)
				break;

		if(i<NUM_AI_SISTEMI)
		{
			for(k=0;k<ai_sistemi[i].n_ss;k++)
				if(ai_sistemi[i].ss_nodes[k].id_ai_sottosistema==-1)
					break;
			
			if(k<ai_sistemi[i].n_ss)
			{
				ai_sistemi[i].ss_nodes[k].id_ai_sottosistema=id_ai_sottosistema;
				strcpy(ai_sistemi[i].ss_nodes[k].descrizione,descrizione);
				ai_sistemi[i].ss_nodes[k].n_in=n;
				ai_sistemi[i].ss_nodes[k].ai_input_nodes=
					(struct ai_input_node **)malloc(n*sizeof(struct ai_input_node *));
				for(j=0;j<n;j++)
					ai_sistemi[i].ss_nodes[k].ai_input_nodes[j]=0;
			}
		}
	}

// canali

	state = mysql_query(conn, "SELECT ai_sistemi.id_sistema, "
			"ai_input_output.id_digital, ai_input_output.id_digital_out, "
			"ai_sottosistemi_input_output.id_ai_sottosistema "
			"FROM ai_sistemi "
			"LEFT JOIN ai_input_output "
				"ON ai_sistemi.id_sistema = ai_input_output.id_sistema "
			"LEFT JOIN ai_sottosistemi "
				"ON ai_sistemi.id_sistema = ai_sottosistemi.id_ai_sistema "
			"LEFT JOIN ai_sottosistemi_input_output "
				"ON ai_input_output.id_ai_input_output = ai_sottosistemi_input_output.id_ai_input_output "
				"AND ai_sottosistemi.id_ai_sottosistema = ai_sottosistemi_input_output.id_ai_sottosistema ");

	if( state != 0 )
	{
		my_printf("%s\n",mysql_error(conn));
		return(1);
	}

	result = mysql_store_result(conn);
	idRow=0;
	while( ( row = mysql_fetch_row(result)) != NULL )
	{
		id_sistema=atoi(row[0]);
		id_digital=atoi(row[1]);
		id_digital_out=atoi(row[2]);
		id_ai_sottosistema=atoi(row[3]?row[3]:"0");
		addNode(id_sistema,id_digital,id_digital_out,id_ai_sottosistema);
		idRow++;
	}
	mysql_free_result(result);
	printAI();
	mysql_close(conn);
	return(0);
}