10 #ifndef SEARCHENGINE_H_
11 #define SEARCHENGINE_H_
61 template<
class state_t,
class action_t>
321 template<
class state_t,
class action_t>
323 : goal_test(0), op_system(0), alg_status(
SearchStatus::
not_ready), have_incumbent(false), incumbent_cost(0.0),
324 storage_limit(0), storage_count(0), h_comp_limit(0), h_comp_count(0), succ_func_limit(0),
325 succ_func_count(0), goal_test_limit(0), goal_test_count(0), state_gen_count(0), action_gen_count(0)
329 template<
class state_t,
class action_t>
334 template<
class state_t,
class action_t>
342 template<
class state_t,
class action_t>
350 template<
class state_t,
class action_t>
356 template<
class state_t,
class action_t>
370 if(incumbent_plan.size() > 0) {
371 for(
unsigned i = 0; i < incumbent_plan.size(); i++) {
372 sol_plan.push_back(incumbent_plan[i]);
379 template<
class state_t,
class action_t>
382 storage_limit = limit;
385 template<
class state_t,
class action_t>
388 h_comp_limit = limit;
391 template<
class state_t,
class action_t>
394 succ_func_limit = limit;
397 template<
class state_t,
class action_t>
400 return storage_count;
403 template<
class state_t,
class action_t>
409 template<
class state_t,
class action_t>
412 return succ_func_count;
415 template<
class state_t,
class action_t>
418 return state_gen_count;
421 template<
class state_t,
class action_t>
424 return action_gen_count;
427 template<
class state_t,
class action_t>
434 action_gen_count = 0;
438 template<
class state_t,
class action_t>
443 have_incumbent =
false;
444 incumbent_cost = -1.0;
445 incumbent_plan.clear();
452 template<
class state_t,
class action_t>
455 return goal_test_count;
458 template<
class state_t,
class action_t>
461 if(!goal_test || !op_system) {
467 template<
class state_t,
class action_t>
470 if(storage_limit > 0 && storage_count >= storage_limit)
475 template<
class state_t,
class action_t>
478 if(h_comp_limit > 0 && h_comp_count >= h_comp_limit)
483 template<
class state_t,
class action_t>
486 return incumbent_plan;
489 template<
class state_t,
class action_t>
492 return incumbent_cost;
495 template<
class state_t,
class action_t>
498 return have_incumbent;
501 template<
class state_t,
class action_t>
504 if(succ_func_limit > 0 && succ_func_count >= succ_func_limit)
509 template<
class state_t,
class action_t>
512 goal_test_limit = limit;
515 template<
class state_t,
class action_t>
518 if(goal_test_limit > 0 && goal_test_count >= goal_test_limit)
523 template<
class state_t,
class action_t>
526 action_gen_count += new_gens;
529 template<
class state_t,
class action_t>
535 template<
class state_t,
class action_t>
541 template<
class state_t,
class action_t>
547 template<
class state_t,
class action_t>
virtual ~SearchEngine()
Definition: search_engine.h:330
const TransitionSystem< state_t, action_t > * op_system
The transition system.
Definition: search_engine.h:297
virtual void increaseActionGenCount(double new_gens)
Definition: search_engine.h:524
virtual void resetStatistics()
Definition: search_engine.h:428
void setTransitionSystem(const TransitionSystem< state_t, action_t > *o)
Definition: search_engine.h:343
uint64_t succ_func_count
The number of heuristic computations made during the current search.
Definition: search_engine.h:312
bool foundSolution() const
Definition: search_engine.h:496
uint64_t state_gen_count
The number of state generations during the current search.
Definition: search_engine.h:317
virtual void incrementStateGenCount()
Definition: search_engine.h:530
void setHComputeLimit(uint64_t limit)
Definition: search_engine.h:386
uint64_t getSuccFuncCount() const
Definition: search_engine.h:410
SearchStatus getStatus() const
Definition: search_engine.h:351
uint64_t getStateGenCount() const
Definition: search_engine.h:416
double incumbent_cost
The cost of the last solution.
Definition: search_engine.h:303
bool hitGoalTestLimit()
Definition: search_engine.h:516
Definition: goal_test_function.h:19
double getLastPlanCost()
Definition: search_engine.h:490
uint64_t action_gen_count
The number of state generations during the current search.
Definition: search_engine.h:318
uint64_t h_comp_count
The number of heuristic computations during the current search.
Definition: search_engine.h:309
uint64_t goal_test_limit
The limit on the number of goal tests. 0 for no limit.
Definition: search_engine.h:314
uint64_t goal_test_count
The number of goal tests performed during the current search.
Definition: search_engine.h:315
SearchTermType
Definition: search_engine.h:51
uint64_t succ_func_limit
The limit on how many successor function calls can be performed. 0 for no limit.
Definition: search_engine.h:311
virtual void incrementSuccFuccCalls()
Definition: search_engine.h:542
SearchStatus alg_status
The current search status.
Definition: search_engine.h:299
const GoalTestFunction< state_t > * goal_test
The goal test function.
Definition: search_engine.h:296
uint64_t storage_count
The number of states currently being stored.
Definition: search_engine.h:306
uint64_t getGoalTestCount() const
Definition: search_engine.h:453
virtual void incrementGoalTestCount()
Definition: search_engine.h:536
uint64_t getActionGenCount() const
Definition: search_engine.h:422
bool hitStorageLimit()
Definition: search_engine.h:468
void setGoalTestLimit(uint64_t limit)
Definition: search_engine.h:510
void setGoalTest(const GoalTestFunction< state_t > *g)
Definition: search_engine.h:335
bool hitHCompLimit()
Definition: search_engine.h:476
Definition: transition_system.h:23
Definition: search_engine.h:62
std::vector< action_t > incumbent_plan
The last solution found.
Definition: search_engine.h:302
void setSuccCallLimit(uint64_t limit)
Definition: search_engine.h:392
std::vector< action_t > getLastPlan()
Definition: search_engine.h:484
uint64_t storage_limit
The limit on how many states are stored. 0 for no limit.
Definition: search_engine.h:305
uint64_t getHCompCount() const
Definition: search_engine.h:404
virtual SearchTermType searchForPlan(const state_t &init_state)=0
virtual void incrementHCompCount()
Definition: search_engine.h:548
void setStorageLimit(uint64_t limit)
Definition: search_engine.h:380
virtual bool isConfigured() const
Definition: search_engine.h:459
bool hitSuccFuncLimit()
Definition: search_engine.h:502
uint64_t getStorageCount() const
Definition: search_engine.h:398
SearchTermType getPlan(const state_t &init_state, std::vector< action_t > &sol_plan)
Definition: search_engine.h:357
bool have_incumbent
If an incumbent solution is stored or not.
Definition: search_engine.h:301
uint64_t h_comp_limit
The limit on how many heuristic computations can be performed. 0 for no limit.
Definition: search_engine.h:308
virtual void resetEngine()
Definition: search_engine.h:439
SearchEngine()
Definition: search_engine.h:322