mosesdecoder/moses/Search.cpp

55 lines
1.2 KiB
C++
Raw Normal View History

#include "Manager.h"
#include "SearchCubePruning.h"
#include "SearchNormal.h"
#include "InputType.h"
2014-01-13 18:37:05 +04:00
#include "util/exception.hh"
namespace Moses
{
Search::Search(Manager& manager, const InputType &source)
2013-08-07 17:18:12 +04:00
: m_manager(manager)
, m_source(source)
2015-11-27 15:20:38 +03:00
, m_options(manager.options())
, m_inputPath()
, m_initialTransOpt()
, m_bitmaps(source.GetSize(), source.m_sourceCompleted)
2015-11-27 15:20:38 +03:00
, interrupted_flag(0)
{
m_initialTransOpt.SetInputPath(m_inputPath);
}
Search *
Search::
CreateSearch(Manager& manager, const InputType &source,
2015-08-08 02:00:45 +03:00
SearchAlgorithm searchAlgorithm,
const TranslationOptionCollection &transOptColl)
{
switch(searchAlgorithm) {
case Normal:
return new SearchNormal(manager,source, transOptColl);
case CubePruning:
return new SearchCubePruning(manager, source, transOptColl);
default:
2014-01-15 19:42:02 +04:00
UTIL_THROW2("ERROR: search. Aborting\n");
return NULL;
}
}
bool
Search::
out_of_time()
{
int const& timelimit = m_options.search.timeout;
if (!timelimit) return false;
double elapsed_time = GetUserTime();
if (elapsed_time <= timelimit) return false;
2015-08-08 02:00:45 +03:00
VERBOSE(1,"Decoding is out of time (" << elapsed_time << ","
<< timelimit << ")" << std::endl);
interrupted_flag = 1;
return true;
}
}