本文整理汇总了C++中CHeap::deleteheap_unsafe方法的典型用法代码示例。如果您正苦于以下问题:C++ CHeap::deleteheap_unsafe方法的具体用法?C++ CHeap::deleteheap_unsafe怎么用?C++ CHeap::deleteheap_unsafe使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CHeap
的用法示例。
在下文中一共展示了CHeap::deleteheap_unsafe方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Search
bool anaPlanner::Search(anaSearchStateSpace_t* pSearchStateSpace, vector<int>& pathIds, int & PathCost,
bool bFirstSolution, bool bOptimalSolution, double MaxNumofSecs)
{
CKey key;
TimeStarted = clock();
searchexpands = 0;
#if DEBUG
fprintf(fDeb, "new search call (call number=%d)\n", pSearchStateSpace->callnumber);
#endif
if (pSearchStateSpace->bReinitializeSearchStateSpace == true) {
//re-initialize state space
ReInitializeSearchStateSpace(pSearchStateSpace);
}
if (bOptimalSolution) {
pSearchStateSpace->eps = 1;
MaxNumofSecs = INFINITECOST;
}
else if (bFirstSolution) {
MaxNumofSecs = INFINITECOST;
}
//ensure heuristics are up-to-date
environment_->EnsureHeuristicsUpdated((bforwardsearch == true));
//the main loop of ana*
int prevexpands = 0;
clock_t loop_time;
// CHANGE MADE TO WHILE LOOP to account for open.empty() == FALSE
while (!pSearchStateSpace->heap->emptyheap() && pSearchStateSpace->eps_satisfied > ana_FINAL_EPS &&
(clock() - TimeStarted) < MaxNumofSecs * (double)CLOCKS_PER_SEC)
{
loop_time = clock();
//decrease eps for all subsequent iterations
/*if(fabs(pSearchStateSpace->eps_satisfied - pSearchStateSpace->eps) < ERR_EPS && !bFirstSolution)
{
pSearchStateSpace->eps = pSearchStateSpace->eps - ana_DECREASE_EPS;
if(pSearchStateSpace->eps < ana_FINAL_EPS)
pSearchStateSpace->eps = ana_FINAL_EPS;
//the priorities need to be updated
pSearchStateSpace->bReevaluatefvals = true;
//it will be a new search
pSearchStateSpace->bNewSearchIteration = true;
//build a new open list by merging it with incons one
BuildNewOPENList(pSearchStateSpace);
}*/
pSearchStateSpace->searchiteration++;
pSearchStateSpace->bNewSearchIteration = false;
//re-compute f-values if necessary and reorder the heap
//if(pSearchStateSpace->bReevaluatefvals)
// Reevaluatefvals(pSearchStateSpace);
//improve or compute path
int retVal = ImprovePath(pSearchStateSpace, MaxNumofSecs);
anaState* state;
CKey key;
CHeap* open = pSearchStateSpace->heap;
//printf("states expanded: %d\t states considered: %d\t time elapsed: %f\n",searchexpands - prevexpands, pSearchStateSpace->heap->currentsize, double(clock() - TimeStarted)/CLOCKS_PER_SEC);
double epsprime = 1.0;
for (int j = 1; j <= open->currentsize;) {
state = (anaState*)open->heap[j].heapstate;
double temp_eps = (double)((pSearchStateSpace->G * 1.0) / (double)(state->g + state->h));
if (temp_eps > epsprime) {
epsprime = temp_eps;
}
double e_val = get_e_value(pSearchStateSpace, state->MDPstate->StateID);
if (e_val <= 1.0) {
open->deleteheap_unsafe(state);
}
else {
key.key[0] = (long)-e_val;
open->updateheap_unsafe(state, key);
++j;
}
pSearchStateSpace->eps_satisfied = epsprime;
}
open->makeheap();
//print the solution cost and eps bound
if (retVal == 1) {
//printf("suboptimality=%f expands=%d g(searchgoal)=%d loop_time=%.3f time_elapsed=%.3f memoryCounter=%d\n", pSearchStateSpace->eps_satisfied, searchexpands - prevexpands, ((anaState*)pSearchStateSpace->searchgoalstate->PlannerSpecificData)->g,double(clock()-loop_time)/CLOCKS_PER_SEC, double(clock() - TimeStarted)/CLOCKS_PER_SEC, MaxMemoryCounter);
printf("suboptimality=%f g(searchgoal)=%d time_elapsed=%.3f memoryCounter=%d\n",
pSearchStateSpace->eps_satisfied,
((anaState*)pSearchStateSpace->searchgoalstate->PlannerSpecificData)->g, double(clock()
- TimeStarted) / CLOCKS_PER_SEC, MaxMemoryCounter);
//.........这里部分代码省略.........