亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? cagent.cpp

?? 強化學習算法(R-Learning)難得的珍貴資料
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
					interAction = currentEpisode->getAction(episodeIndex);
					mAction->getMultiStepActionData()->duration += interAction->getDuration();
				}
			}
			
			assert(mAction->getDuration() == oldDuration);
		}
	}
}

void CHierarchicalSemiMarkovDecisionProcess::setLoggedEpisode(CEpisode *loggedEpisode)
{
	currentEpisode = loggedEpisode;
}

/** Sends the next Step if the Hierarchical SMDP has executed an action (i.e. he is in the hierarchical ActoinStack).
Before it sends the step, the executed Action from the SMDP is calculated and the new Tuple S-A-S is send to the Listeners.
*/
void CHierarchicalSemiMarkovDecisionProcess::nextStep(CStateCollection *oldState, CHierarchicalStack *actionStack, CStateCollection *newState)
{
	CAction *currentAction = getExecutedAction(actionStack);

	if (currentAction != NULL)
	{
		if (isFirstStep)
		{
			pastState->setStateCollection(oldState);
			isFirstStep = false;
		}
		bool sendStep = !currentAction->isType(EXTENDEDACTION);
		if (! sendStep)
		{
			CExtendedAction *eAction = dynamic_cast<CExtendedAction *>(currentAction);

			sendStep = eAction->getMultiStepActionData()->finished;
		}
		if (sendStep)
		{
			currentState->setStateCollection(newState);
			sendNextStep(currentAction);
			CStateCollectionImpl *buffer = pastState;
			pastState = currentState;
			currentState = buffer;
		}
	}
	if (multiStepData->finished && currentSteps > 0)
	{
		startNewEpisode();
	}
}


void CHierarchicalSemiMarkovDecisionProcess::newEpisode()
{
	startNewEpisode();
}

CAction* CHierarchicalSemiMarkovDecisionProcess::getNextHierarchyLevel(CStateCollection *state, CActionDataSet *actionDataSet)
{
	return getNextAction(state, actionDataSet);
}

/** Returns the action following the SMDP in the hierarchical Action Stack
*/
CAction *CHierarchicalSemiMarkovDecisionProcess::getExecutedAction(CHierarchicalStack *actionStack)
{
	CHierarchicalStack::iterator it = actionStack->begin();
	while (it != actionStack->end() && (*it) != this)
	{
		it ++;
	}
	if (it == actionStack->end())
	{
		return NULL;
	}
	else
	{
		it ++;
		assert(it != actionStack->end());
		return *it;
	}
}

/** Creates a new Agent. A Episode Object is also instantiated automatically and added to the ListenerList, logging can be turned of by
setLoggedEpisode(bool)*/
CAgent::CAgent(CEnvironmentModel *model) : CSemiMarkovDecisionProcess(), CStateModifiersObject(model->getStateProperties())
{
    this->model = model;
    lastAction = NULL;
    
    setParameters(1, 5000);
	keyboardBreaks = false;

	currentEpisode = new CEpisode(model->getStateProperties(), actions);

	addSemiMDPListener(currentEpisode);
	bLogEpisode = true;

	currentState = new CStateCollectionImpl(model->getStateProperties());
	lastState = new CStateCollectionImpl(model->getStateProperties());

	modifiers = new std::list<CStateModifier *>;

	startNewEpisode();
}

CAgent::~CAgent()
{
	delete currentState;
	delete lastState;
	delete currentEpisode;
}

/** Tells the model which action to execute and then saves the new State. 
Send the oldState, the actoin and the newState as S-A-S Tuple to all Listeners (see CSemiMarkovDecisionProcess::sendNextStep(...)). 

There is a special treatment for actions of the type PRIMITIVEACTIONSTATECHANGE, @see CPrimitiveActionStateChanged  
*/
void CAgent::doAction(CAction *l_action) 
{
	CAction *action = l_action;
	
	/*if (action->isType(CONTINUOUSSTATICACTION))
	{
		CContinuousAction *contAction = dynamic_cast<CStaticContinuousAction *>(action)->getContinuousAction(); 
		action = dynamic_cast<CAction *>(contAction);
	}*/

	int index = actions->getIndex(action);
	
	assert(action != NULL && action->isType(PRIMITIVEACTION) && index >= 0);

	if (model->isReset())
	{
		startNewEpisode();
	}

	if (isFirstStep)
	{
		isFirstStep = false;
		model->getState(currentState);
		currentState->newModelState();

		if (DebugIsEnabled())
		{
			DebugPrint('+', "\nNew Episode (%d): ", this->getCurrentEpisodeNumber());
			DebugPrint('+', "start State: ");
			currentState->getState()->saveASCII(DebugGetFileHandle('+'));
			DebugPrint('+', "\n");
		}
	}

	CStateCollectionImpl *bufState = lastState;
	lastState = currentState;
	currentState = bufState;
		
	CPrimitiveAction* primAction = dynamic_cast<CPrimitiveAction*>(action);
	
	model->nextState(primAction);
	model->getState(currentState);
	
	lastAction = action;

	if (DebugIsEnabled())
	{
		DebugPrint('+', "\nNew Step (%d): ", this->getCurrentStep());
		DebugPrint('+', "oldState: ");
		lastState->getState()->saveASCII(DebugGetFileHandle('+'));
		DebugPrint('+', "action: %d ", actions->getIndex(action));
		if (action->getActionData())
		{
			action->getActionData()->saveASCII(DebugGetFileHandle('+'));
		}
		DebugPrint('+', "currentState: ");
		currentState->getState()->saveASCII(DebugGetFileHandle('+'));
		DebugPrint('+', "\n");

	}

	sendNextStep(lastState, action, currentState);
}

void CAgent::setLogEpisode(bool bLogEpisode)
{
	if (this->bLogEpisode != bLogEpisode)
	{
		this->bLogEpisode = bLogEpisode;
		if (bLogEpisode)
		{
			SMDPListeners->push_front(currentEpisode);
		}
		else
		{
			removeSemiMDPListener(currentEpisode);
		}
	}
}

void CAgent::startNewEpisode()
{
	model->resetModel();

	CSemiMarkovDecisionProcess::startNewEpisode();
}

int CAgent::doControllerEpisode(int maxEpisodes, int maxSteps)
{
    setParameters(maxEpisodes, maxSteps);
	return doRun(false);
}

void CAgent::setParameters(int maxEpisodes, int maxSteps)
{
    this->maxEpisodes = maxEpisodes;
	this->maxSteps = maxSteps;
	this->currentEpisodeNumber = 0;
	this->currentSteps = 0;
}

int CAgent::doResume()
{
	return doRun(true);
}

int CAgent::doRun(bool bContinue)
{
	bool keyhit = false;
	RIL_Toolbox_Set_Keypress();
	while (currentEpisodeNumber < maxEpisodes  && !keyhit)
	{
		if (model->isReset() || currentSteps >= maxSteps)
		{
			startNewEpisode();
		}
		if (currentEpisodeNumber == 0)
		{
			currentEpisodeNumber ++;
		}
		do 
		{        
            doControllerStep();
			if (keyboardBreaks) keyhit = RIL_Toolbox_KeyboardHit();
        }
		while (!model->isReset() && currentSteps < maxSteps && (!keyhit));	
    }
	if (keyhit)
	{
		RIL_Toolbox_Reset_Keypress();
		return -1;
	}
	else
	{
		RIL_Toolbox_Reset_Keypress();
        return currentSteps;
	}
}

void CAgent::doControllerStep()
{
	if (model->isReset())
	{
		startNewEpisode();
	}

	if (isFirstStep)
	{	
		isFirstStep = false;
		model->getState(currentState);
		currentState->newModelState();
		if (DebugIsEnabled())
		{
			DebugPrint('+', "\nNew Episode (%d): ", this->getCurrentEpisodeNumber());
			DebugPrint('+', "start State: ");
			currentState->getState()->saveASCII(DebugGetFileHandle('+'));
			DebugPrint('+', "\n");
		}
	}

	CAction *action = getNextAction(currentState);

	assert(action != NULL);

	action->loadActionData(actionDataSet->getActionData(action));

	doAction(action);
}

void CAgent::setKeyboardBreak(bool keyboardBreaks)
{
	this->keyboardBreaks = keyboardBreaks;
}

bool CAgent::getKeyboardBreak()
{
	return keyboardBreaks;
}

void CAgent::addAction(CPrimitiveAction *action)
{
	CSemiMarkovDecisionProcess::addAction(action);
}

void CAgent::addStateModifier(CStateModifier *modifier)
{
	lastState->addStateModifier(modifier);
	currentState->addStateModifier(modifier);

	currentEpisode->addStateModifier(modifier);

	CStateModifiersObject::addStateModifier(modifier);
}

void CAgent::removeStateModifier(CStateModifier *modifier)
{
	lastState->removeStateModifier(modifier);
	currentState->removeStateModifier(modifier);

	currentEpisode->removeStateModifier(modifier);

	CStateModifiersObject::removeStateModifier(modifier);
}

CEpisode *CAgent::getCurrentEpisode()
{
	return currentEpisode;
}

CStateCollection *CAgent::getCurrentState()
{
	return currentState;
}

CEnvironmentModel *CAgent::getEnvironmentModel()
{
	return model;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91麻豆产精品久久久久久 | 欧美精品一区二区三区视频| 色婷婷综合久久久久中文| 国产麻豆视频一区| 麻豆精品精品国产自在97香蕉| 日韩精品福利网| 三级不卡在线观看| 午夜精品影院在线观看| 亚洲午夜电影网| 亚洲网友自拍偷拍| 无码av中文一区二区三区桃花岛| 亚洲狠狠丁香婷婷综合久久久| 亚洲欧洲精品一区二区三区不卡| 亚洲欧洲精品一区二区三区| 亚洲男女一区二区三区| 亚洲欧美另类综合偷拍| 亚洲精品高清在线观看| 亚洲四区在线观看| 一卡二卡欧美日韩| 亚洲男人的天堂网| 日日噜噜夜夜狠狠视频欧美人| 亚洲午夜一区二区| 亚洲综合在线视频| 亚洲精品国久久99热| 自拍视频在线观看一区二区| 国产精品―色哟哟| 国产精品网站在线播放| 欧美国产精品一区二区三区| 国产欧美日韩麻豆91| 国产午夜精品一区二区三区嫩草| 国产视频亚洲色图| 欧美精品一区二区三区久久久| 欧美一区永久视频免费观看| 成人美女在线视频| 成人av在线资源网| hitomi一区二区三区精品| 99精品视频在线播放观看| 一本久久a久久免费精品不卡| 97精品国产97久久久久久久久久久久 | 日本一区二区三区dvd视频在线| 欧美一级在线视频| 精品福利av导航| 国产三级精品三级在线专区| 国产精品伦理一区二区| 亚洲精品免费电影| 日韩电影在线观看网站| 老司机精品视频一区二区三区| 极品少妇一区二区三区精品视频| 国产精品中文有码| 99久久精品免费精品国产| 色猫猫国产区一区二在线视频| 在线免费不卡电影| 91精品久久久久久久99蜜桃| 精品福利在线导航| 亚洲天堂免费在线观看视频| 一区二区理论电影在线观看| 麻豆成人久久精品二区三区红| 国产一区二区三区精品视频| 99久久99久久久精品齐齐| 欧美性xxxxxxxx| 精品久久国产字幕高潮| 国产精品久久久一本精品| 亚洲一区免费观看| 美女久久久精品| a4yy欧美一区二区三区| 欧美日韩的一区二区| 精品第一国产综合精品aⅴ| 欧美韩国日本不卡| 性做久久久久久免费观看| 国产精品影视在线观看| 日本高清视频一区二区| 欧美大片在线观看一区二区| 2022国产精品视频| 亚洲精品一卡二卡| 国产麻豆视频一区| 欧美日韩一本到| 久久精品在线观看| 水蜜桃久久夜色精品一区的特点| 国产精品香蕉一区二区三区| 在线观看视频一区二区欧美日韩| 日韩精品在线一区| 亚洲精品ww久久久久久p站| 久久不见久久见中文字幕免费| 色女孩综合影院| 国产亚洲一二三区| 日韩电影在线一区二区三区| 99精品视频一区二区三区| 精品久久人人做人人爰| 亚洲国产精品一区二区久久| 国产一区在线看| 欧美日韩免费观看一区二区三区| 国产欧美精品一区二区色综合 | 久久久天堂av| 一区二区三区中文字幕| 懂色av一区二区三区免费观看| 337p亚洲精品色噜噜狠狠| 亚洲欧美日韩国产手机在线| 国产91精品久久久久久久网曝门| 4438成人网| 五月婷婷久久综合| 91色在线porny| 国产精品家庭影院| 国模娜娜一区二区三区| 欧美一区二区三区四区高清 | 国产精品一区二区在线观看不卡| 欧美精品在线一区二区| 樱花草国产18久久久久| 岛国av在线一区| 国产日韩三级在线| 国产一区二区三区精品欧美日韩一区二区三区| 欧美日韩免费在线视频| 亚洲靠逼com| 99久久久国产精品免费蜜臀| 国产精品美女久久久久aⅴ| 国产夫妻精品视频| 国产亚洲一区二区三区四区| 精品系列免费在线观看| 7777精品伊人久久久大香线蕉 | 日韩视频免费观看高清完整版 | 精品99久久久久久| 蜜桃精品在线观看| 91精品国产综合久久久久| 亚洲自拍都市欧美小说| 色香蕉久久蜜桃| 亚洲欧美日韩一区二区| 成人美女视频在线观看18| 国产亚洲制服色| 高清视频一区二区| 国产欧美视频在线观看| 极品尤物av久久免费看| 欧美成人综合网站| 男人的天堂久久精品| 91精品啪在线观看国产60岁| 亚洲一区二区精品视频| 91精彩视频在线观看| 亚洲图片激情小说| 欧美三级电影网| 亚洲黄色性网站| 欧美精品在线一区二区| 免费的国产精品| 国产亚洲欧美中文| 成人av第一页| 亚洲一二三级电影| 日韩视频免费观看高清完整版在线观看| 日韩二区三区在线观看| 久久婷婷色综合| 成人听书哪个软件好| 亚洲天堂2016| 欧美日本精品一区二区三区| 男人操女人的视频在线观看欧美| 26uuuu精品一区二区| 成人激情av网| 亚洲男女一区二区三区| 在线成人av网站| 国产在线观看一区二区| 国产精品高潮呻吟| 欧美三日本三级三级在线播放| 日本少妇一区二区| 国产午夜精品久久久久久免费视| 91丨porny丨最新| 日韩精品亚洲一区| 国产性天天综合网| 欧美性大战xxxxx久久久| 久久成人久久鬼色| 亚洲色图在线播放| 日韩一级片网站| 成人av网在线| 性感美女久久精品| 久久先锋影音av鲁色资源| 99久久er热在这里只有精品66| 日韩国产欧美在线播放| 久久久精品tv| 欧美日韩久久不卡| 麻豆国产欧美日韩综合精品二区| 国产免费成人在线视频| 欧美久久久久久久久久 | 欧美另类一区二区三区| 国产福利一区二区三区视频 | 国产精品剧情在线亚洲| 欧美精品乱人伦久久久久久| 高清国产一区二区三区| 亚洲韩国一区二区三区| 久久免费电影网| 欧美性生活影院| 国产精品中文有码| 午夜精品久久久久久久久| 国产午夜精品福利| 日韩一区二区精品| 91高清视频免费看| 国产91丝袜在线播放九色| 五月天国产精品| 国产喂奶挤奶一区二区三区| 69堂精品视频| 色婷婷av一区二区三区软件| 国产精品一二一区| 奇米精品一区二区三区四区 | 成人app下载| 日韩中文字幕区一区有砖一区| 久久久久久一级片| 欧美一区二区成人|