Esempio n. 1
0
void cScenarioArmRL::RecordTuple()
{
	tExpTuple& tuple = mTupleBuffer[mNumTuples];
	RecordState(tuple.mStateBeg);
	RecordAction(tuple.mAction);
	++mNumTuples;
}
Esempio n. 2
0
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;
	}
}
Esempio n. 3
0
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;
}
Esempio n. 4
0
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();
}