Optaplanner: конфигурация динамического завершения

Во-первых, не наследуют от стандартных контейнеров, они не предназначены для наследования (без виртуальных деструкторов и т. д.).

Во-вторых, и в отношении вашей проблемы , это потому, что указатель на функцию-член не совпадает с указателем на функцию. Причина в том, что функция-член имеет скрытый первый параметр, который становится указателем this в функции. Самый простой способ решить эту задачу - сделать функцию static.

Другим решением является использование функции std::bind , которая появилась с C ++ 11:

for_each(this->begin(), this->end(),
    std::bind(&C::transformation, this, std::placeholders::_1));

Если у вас нет , C ++ 11 (даже если вы отметили свой вопрос как таковой), то вы, вероятно, могли бы получить что-то, работающее с std::mem_fun или std::bind1st .

0
задан Pravesh Jain 16 January 2019 в 18:26
поделиться

2 ответа

Проблема была в моем SelectionFilter. Была ошибка, связанная с тем, что метод accept из SelectionFilter всегда возвращал ложь, и, следовательно, фаза локального поиска вообще не развивалась.

После разрешения, конфигурация динамического завершения работает как есть.

0
ответ дан Pravesh Jain 16 January 2019 в 18:26
поделиться

Разве это не так?

  <localSearch>
    <termination>
      <terminationCompositionStyle>OR</terminationCompositionStyle>
      <unimprovedStepCountLimit>4000</unimprovedStepCountLimit>
      <stepCountLimit>10000</stepCountLimit>
    </termination>
  </localSearch>

Если вы не определили CH, по умолчанию будет FIRST_FIT.

0
ответ дан k88 16 January 2019 в 18:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: