Уважаемые,
Я играю с параметром 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))