CP-SAT: более высокое значение num_search_workers увеличивает время разрешения - PullRequest
0 голосов
/ 12 марта 2020

Уважаемые,
Я играю с параметром num_search_workers , и я обнаружил странное поведение с or-tool 7.5 на windows.
Я провел следующие тесты на 32-ядерном компьютере и я обнаружил, что 1 поток имеет лучшие показатели.
Знаете ли вы, почему ?:

начать решать, используя 1 поток ... решено за 13,578 с

начать решать, используя 2 потоки ... решены за 45,832 с

начало решения с использованием 4 потоков ... решено за 53,031 с

начало с использованием 8 потоков ... решено за 62,013 с

начало решения с использованием 16 потоков ... решение за 157,5 с

начало решения с использованием 32 потоков ... решение за 807,778 с

начало с использованием 64 потоков ... решение за 386,252 с

модель более или менее похожа на следующую:
считает, что self.suggested_decisions - это словарь BoolVars (переменных решения), подобный проблеме:

model.Add(sum(self.scenario.constants['scaling_factor']*self.suggested_decisions[r][0] for r in self.all_records)>=sum(sum(self.suggested_decisions[r][d]*(int(0.60*self.scenario.constants['scaling_factor']))for r in self.all_records) for d in self.all_decisions))
model.Add(sum(int(self.scenario.dataset['AMOUNT_FINANCED'][r])*self.suggested_decisions[r][0] for r in self.all_records)>=2375361256)
model.Add(sum(self.scenario.constants['scaling_factor']*self.scenario.dataset['Bad'][r]*self.suggested_decisions[r][0] for r in self.all_records)<=sum(self.suggested_decisions[r][0]*int(self.scenario.constants['scaling_factor']*0.038) for r in self.all_records))
model.Maximize(sum(int(self.scenario.dataset[\'AMOUNT_FINANCED\'][r])*self.suggested_decisions[r][0] for r in self.all_records))

1 Ответ

1 голос
/ 12 марта 2020

Добро пожаловать в мир параллелизма.

От 1 до 8 потоков, вам просто не повезло. Связь между рабочими изменяет поиск и замедляет его.

Более 8 потоков, скорее всего, связаны с памятью.

Как говорится, это очень редко.

Может Вы пришлите мне модель?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...