/*--------------------------------------------------- * Time march use Runge-Kutta method * ------------------------------------------------*/ void RKtvd3(int ik, double dt) { int nc; void flux(double **rhs); void fluxchem(double **rhs); void updateq(int nc, double **q, double **qs, double **RHS, double dt, int ik); void updateqs(int nc, double **q, double **qs, double **RHS, double dt, int ik); void chemsource(int nc, double **q, double **qs, double *tem, double **RHS); nc = config1.Nc; if(config1.gasModel == 0) { /* Perfect Gas Solver */ flux(rhs); updateq(nc, U.q, U.qs, rhs, dt, ik); } else { /* Real Gas Solver */ fluxchem(rhs); if(config1.reacModel!= 0) chemsource(nc, U.q, U.qs, U.tem, rhs); updateqs(nc, U.q, U.qs, rhs, dt, ik); } }
int qlearning(){ /* Q値の構造体 */ Qvalue qv, *pqv; pqv = &qv; /* Q値の初期化 */ initqvalue(pqv); printqvalue(pqv); /* 学習の本体 */ int i=0; int s=0; /* 状態 */ int t=0; /* 時刻 */ for(i=0; i < GENMAX; ++i){ s = 0; for(t=0; t < 3; ++t){ /* 行動選択 */ s = selecta(s, pqv); /* Q値の更新 */ pqv->qvalue[s] = updateq(s, pqv); } printf("*** Learnnig count = %d ***\n", i); printqvalue(pqv); } return 0; }