void cScenarioArmRL::RecordTuple() { tExpTuple& tuple = mTupleBuffer[mNumTuples]; RecordState(tuple.mStateBeg); RecordAction(tuple.mAction); ++mNumTuples; }
void cScenarioBallRL::NewCycleUpdate() { if (EnableTraining()) { // finish recording tuple from previous cycle RecordState(mCurrTuple.mStateEnd); RecordEndFlags(mCurrTuple); mCurrTuple.mReward = CalcReward(mCurrTuple); // do something with the tuple if (!mFirstCycle) { mTupleBuffer[mNumTuples] = mCurrTuple; ++mNumTuples; if (mNumTuples == static_cast<int>(mTupleBuffer.size())) { Train(); double exp_rate = GetExpRate(); double exp_temp = GetExpTemp(); auto& ctrl = mBall.GetController(); ctrl->SetExpRate(exp_rate); ctrl->SetExpTemp(exp_temp); printf("\n"); printf("Exp Rate: %.3f\n", exp_rate); printf("Exp Temp: %.3f\n", exp_temp); } } // start recording new tuple mCurrTuple.mStateBeg = mCurrTuple.mStateEnd; RecordAction(mCurrTuple.mAction); mCurrTuple.mActionLikelihood = GetActionLikelihood(); ClearFlags(mCurrTuple); RecordBegFlags(mCurrTuple); mFirstCycle = false; } }
void TFixedFilterDBFrame::SaveConfig(DCMapConfigWrapper cfg) { RecordState(); //cfg.section("FixedFilter"); String No = IntToStr(m_iFilterNo); cfg["Table"+No] << Table; cfg["Field"+No] << Field; cfg["ParamName"+No] << ResourceSelBtn->Caption; cfg["DBOperator"+No] << m_iRefOp; cfg["StrOperator"+No] << m_iStrOp; cfg["NumOperator"+No] << m_iNumOp; cfg["Enabled"+No] << UseCheck->Checked; cfg["DBParam"+No] << LastItem; cfg["StrParam"+No] << StringEdit->Text; cfg["NumParam"+No] << NumEdit->Value; cfg["CustomParam"+No] << ComboEdit->Text; cfg["FilterMode"+No] << m_iMode; }
void TFixedFilterDBFrame::SetupData() { RecordState(); // Get table field & id IDCMapDataStorage* src = m_pCore->GetDataSourceTyped<IDCMapDataStorage>(WideToString(Table).c_str()); m_ListDataSrc.reset(); m_iColID=-1; m_bStringData=false; m_bCustom=false; if(src) // get field id, type, etc { m_iColID = src->ColumnID(WideToString(Field).c_str()); DCMapDataType type = src->ColumnDataType(m_iColID); m_bStringData = (type == DCMDT_String) || (type == DCMDT_CLOB) || (type == DCMDT_WideString) || (type == DCMDT_WideCLOB); if(type == DCMDT_Reference) { m_ListDataSrc.init(m_pCore,src->ColumnDataLinkage(m_iColID)); } } else if(Field == "str")m_bStringData=true; else if(Field == "custom")m_bCustom=true; else if(m_pCore->GetDataSourceTyped<IDCMapDataStorage>(WideToString(Field).c_str())) { m_ListDataSrc.init(m_pCore,Field.c_str()); } DBValueComboBox->Visible = false; NumEdit->Visible = false; StringEdit->Visible = false; ComboEdit->Visible = false; OperatorComboBox->Visible=true; String PreOp = OperatorComboBox->Text; //OperatorComboBox->Items->Clear(); if(m_ListDataSrc) { DeleteStringsObjects(DBValueComboBox->Items); DBValueComboBox->Items->Clear(); DBValueComboBox->Items->Add(g_pLocalStrings->GetStringW("NoDBItem")); if(m_ListDataSrc->SelectAll()) do { DBValueComboBox->Items->AddObject(m_ListDataSrc->GetWideName(), new TDataRefObject(m_ListDataSrc->GetID())); } while(m_ListDataSrc->Next()); if(DBValueComboBox->Items->Count > DBValueComboBox->DropDownCount) DBValueComboBox->Style = csDropDown; else DBValueComboBox->Style = csDropDownList; DBValueComboBox->Visible = true; DBValueComboBox->ItemIndex = DBValueComboBox->Items->IndexOf(LastItem); if(DBValueComboBox->ItemIndex < 0) DBValueComboBox->ItemIndex = 0; OperatorComboBox->Items->Text = "=\n<>\n"; OperatorComboBox->ItemIndex = m_iRefOp; } else if(m_bStringData) { StringEdit->Visible = true; OperatorComboBox->Items->Text = "=\n<>\n>=\n<=\n>\n<\nCNT\nNCT"; OperatorComboBox->ItemIndex = m_iStrOp; } else if(m_bCustom) { ComboEdit->Visible = true; OperatorComboBox->Visible=false; } else { NumEdit->Visible = true; OperatorComboBox->Items->Text = "=\n<>\n>=\n<=\n>\n<"; OperatorComboBox->ItemIndex = m_iNumOp; } m_eTable = OP_RESOURCE; if(Table == "planets") m_eTable = OP_PLANETS; else if(Table == "players") m_eTable = OP_PLAYERS; if(m_eTable == OP_RESOURCE) { if(Table == "Growth") m_eResource = RT_Growth; else if(Table == "Credits") m_eResource = RT_Credits; else if(Table == "MiningBase") m_eResource = RT_MiningBase; else if(Table == "CreditsBase") m_eResource = RT_CreditsBase; else if(Table == "MiningSecond") m_eResource = RT_MiningSecond; else if(Table == "CreditsSecond") m_eResource = RT_CreditsSecond; else if(Table == "Organics") m_eResource = RT_Organics; else if(Table == "Energy") m_eResource = RT_Energy; else if(Table == "Minerals") m_eResource = RT_Minerals; else if(Table == "Temperature") m_eResource = RT_Temperature; else if(Table == "Size") m_eResource = RT_Size; else if(Table == "Y") m_eResource = RT_X; else if(Table == "X") m_eResource = RT_Y; else if(Table == "Sector") m_eResource = RT_Sector; else if(Table == "Expression") m_eResource = RT_Expression; else if(Table == "Open") m_eResource = RT_Open; } SetupFilter(); }