/* 今回のレポートでは、人工頭脳の端(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; }
/*遺伝的アルゴリズムで使う用の人工知能稼働*/ 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; }
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); }