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


C++ PriorityQueue::saveOrderedQueueAsVector方法代码示例

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


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

示例1: selectAction

//function is fed with a priority queue of action-values 
//generates Boltzmann distribution of these action-values
//and selects an action based on probabilities 
float selectAction(PriorityQueue<float, double>& a_queue, unsigned long iterations)
{
	typedef std::vector<std::pair<float, double>> VecPair ; 
	
	//turn priority queue into a vector of pairs
	VecPair vec = a_queue.saveOrderedQueueAsVector();
	
    //sum for partition function 
	double sum = 0;
	
	// calculate partition function by iterating over action-values
	for (VecPair::iterator iter = vec.begin(), end = vec.end(); iter < end; ++iter)
	{
		sum += std::exp((iter->second) / temperature(iterations));
	}
	
	//compute Boltzmann factors for action-values and enqueue to vec
	for (VecPair::iterator iter = vec.begin(); iter < vec.end(); ++iter)
	{
		iter->second = std::exp(iter->second / temperature(iterations)) / sum;
	}
	
	//calculate cumulative probability distribution
	for (VecPair::iterator iter = vec.begin()++, end = vec.end(); iter < end; ++iter)
	{
	//second member of pair becomes addition of its current value
	//and that of the index before it
	iter->second += (iter-1)->second;
	}
	
	//generate RN between 0 and 1
	double rand_num = static_cast<double>(rand()) / RAND_MAX;
	
	// choose action based on random number relation to priorities within action queue
	for (VecPair::iterator iter = vec.begin(), end = vec.end(); iter < end; ++iter)
	{
		if (rand_num < iter->second)return iter->first;
	}
	
	return -10; //note that this line should never be reached	
}
开发者ID:philj56,项目名称:robot-swing,代码行数:44,代码来源:Main.cpp


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