int MDFNSS_LoadSM(void *st_p, int, int) { uint8_t header[32]; uint32_t stateversion; StateMem *st = (StateMem*)st_p; smem_read(st, header, 32); if(memcmp(header, "MEDNAFENSVESTATE", 16) && memcmp(header, "MDFNSVST", 8)) return(0); stateversion = MDFN_de32lsb(header + 16); return StateAction(st, stateversion, 0); }
double QLearner::getQValue(const State &state, const Action &action) { std::vector<QTable>::iterator iter; for(iter = QList.begin(); iter != QList.end(); ++iter) { if(state.isEqual(iter->sa.s)) return iter->qvalue; } QTable Q_new(StateAction(state,action), 0.0); // Q_new.sa.s = state; // Q_new.sa.a = action; // Q_new.qvalue = 0.0; QList.push_back(Q_new); return 0.0; }
bool QLearner::load_data(const char* filename) { FILE* file = NULL; file = fopen(filename, "r"); if(!file) { return false; } int QListSize; bool tmp = fscanf(file,"QList Data. x1,x2,action:qvalue\nElement Count: %d\n",&QListSize); //QList.resize(0); int tmpAction; double tmpQValue; State tmpState(0,0); for(int i = 0; i < QListSize; i++) { tmp = fscanf(file,"%d,%d,%d:%lf\n",&tmpState.x1,&tmpState.x2,&tmpAction,&tmpQValue); QList.push_back(QTable(StateAction(tmpState,static_cast<Action>(tmpAction)), tmpQValue)); } return true; }
int MDFNSS_SaveSM(void *st_p, int, int, const void*, const void*, const void*) { uint8_t header[32]; StateMem *st = (StateMem*)st_p; static const char *header_magic = "MDFNSVST"; int neowidth = 0, neoheight = 0; memset(header, 0, sizeof(header)); memcpy(header, header_magic, 8); MDFN_en32lsb(header + 16, MEDNAFEN_VERSION_NUMERIC); MDFN_en32lsb(header + 24, neowidth); MDFN_en32lsb(header + 28, neoheight); smem_write(st, header, 32); if(!StateAction(st, 0, 0)) return(0); uint32_t sizy = st->loc; smem_seek(st, 16 + 4, SEEK_SET); smem_write32le(st, sizy); return(1); }
bool CCsvParser::ParseRecord(std::vector<std::string>& record) { int quote_status = CSV_ENCLOSURE_NONE; while(std::getline(fin, lineData)) { // Parse line to record for (size_t i =0; i < lineData.size(); i++) { quote_status = StateAction(lineData[i], quote_status, record); } // Handle last field if (CSV_ENCLOSURE_ENTER != quote_status) // Record finished { FieldHandler(record); return true; } // Record Cintinued, push <CR><LF> fieldCache.push_back(CR_CHAR); fieldCache.push_back(LF_CHAR); } return false; // File End }