当前位置: 首页>>代码示例>>C++>>正文


C++ Parm::incrementNumAccepted方法代码示例

本文整理汇总了C++中Parm::incrementNumAccepted方法的典型用法代码示例。如果您正苦于以下问题:C++ Parm::incrementNumAccepted方法的具体用法?C++ Parm::incrementNumAccepted怎么用?C++ Parm::incrementNumAccepted使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Parm的用法示例。


在下文中一共展示了Parm::incrementNumAccepted方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: runChain

void Mcmc::runChain(void) {

	// get initial likelihood
	modelPtr->updateAllFlags();
	double oldLnL = modelPtr->lnLikelihood();
	
	for (int n=1; n<=numCycles; n++)
		{
		// pick a parameter to change
		Parm* parm = modelPtr->pickParmAtRandom();
		
		// propose a new state for the parameter
		double lnProposalRatio = parm->change();
		
		// calculate the prior ratio 
		double lnPriorRatio = parm->lnPriorRatio();
		
		// calculate the likelihood
		modelPtr->updateQ(parm);
		double lnL = modelPtr->lnLikelihood();
		double lnLikelihoodRatio = lnL - oldLnL;
		
		// calculate the acceptance probability of the proposed state
		double r = safeExp( lnLikelihoodRatio + lnPriorRatio + lnProposalRatio );
		
		// accept or reject the proposed state as the next state of the chain
		bool acceptState = false;
		if (ranPtr->uniformRv() < r)
			acceptState = true;
			
		// print information to the screen
		if ( n % printFrequency == 0 )
			{
			std::cout << std::setw(5) << n << " -- ";
			std::cout << std::fixed << std::setprecision(8) << oldLnL << " -> " << lnL;
			if (acceptState == true)
				std::cout << " -- Accepted change to " << parm->getName() << std::endl;
			else
				std::cout << " -- Rejected change to " << parm->getName() << std::endl;
			}
		
		// update the state of the chain
		if (acceptState == true)
			{
			parm->incrementNumAccepted();
			oldLnL = lnL;
			modelPtr->keep(parm);
			}
		else 
			{
			modelPtr->restore(parm);
			modelPtr->restoreQ(parm);
			}

		// print out current chain state
		if ( n == 1 || n % sampleFrequency == 0 || n == numCycles )
			printChainState(n, oldLnL);
			
		// print summary of chain
		if ( n % summarizeFrequency == 0 )
			treeSummary->printSummary();
		}
		
	treeSummary->print();
	modelPtr->printAcceptanceInfo();
}
开发者ID:mlandis,项目名称:posselreg,代码行数:66,代码来源:Mcmc.cpp


注:本文中的Parm::incrementNumAccepted方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。