Я использую SCIP 3.0.2 с cplex 12.6 в качестве LP-решателя. Моя модель требует создания столбца. Я уже реализовал это в CPLEX, но поскольку CPLEX может выполнять CG только в корневом узле, я использую SCIP для выполнения Branch-and-Price. В CPLEX оказалось полезным отключить эвситику, сокращение и предварительную обработку / зондирование. Я установил в SCIP следующее:
SCIP_CALL( SCIPsetBoolParam(scip, "lp/presolving", FALSE) );
SCIPsetSeparating(scip, SCIP_PARAMSETTING_OFF, true); //disable cuts
SCIPsetHeuristics(scip, SCIP_PARAMSETTING_OFF, true); //disable heuristics
SCIPsetPresolving(scip, SCIP_PARAMSETTING_OFF, true); //disable presolving
Мой файл параметров выглядит следующим образом:
display/primalbound/active = 1
presolving/maxrounds = 0
separating/maxrounds = 0
separating/maxroundsroot = 0
separating/maxcuts = 0
separating/maxcutsroot = 0
lp/initalgorithm = d
lp/resolvealgorithm = d
lp/fastmip = 1
lp/threads = 1
limits/time = 7200
limits/memory = 2900
limits/absgap = 0
#display/verblevel = 5
#display/freq = 10
Чтобы проверить, что модели совпадают, я решил модель CPLEX в SCIP (без CG) и получил ту же LP-границу, что и модель, созданную с помощью SCIP, но отличную от LP-границы при решении с помощью CPLEX.
Похоже, что SCIP все еще использует некую «магию», которую я еще не отключил. Итак, мой вопрос в том, что мне нужно деактивировать, чтобы получить привязку к LP, полагаясь только на мою модель.
Я уже посмотрел на статистику, и действительно есть некоторые вещи, которые могут помочь решить проблему:
- Ограничения #EnfoLP перечисляет 1 для интеграла (кажется странным, поскольку сокращения отключены?)
- Преобразованная проблема вроде в порядке. Вывод статистики напечатает:
Предрешенная проблема: Название проблемы: t_ARLP Переменные: 969 (806 двоичных, 0 целых, 0 неявных целых чисел, 163 непрерывных) Ограничения: 9311 начальных, 9311 максимальных
и перед началом итераций получаю следующее:
LP Solver: строковое представление базиса недоступно - параметр SCIP lp / rowrepswitch не влияет на преобразованную задачу имеет 897 переменных (806 bin, 0 int, 0 impl, 91 cont) и 9311 ограничений
9311 ограничений типа ‹linear>
предварительное решение: предварительное решение (0 раундов): 0 удаленных переменных, 0 удаленных ограничений, 0 добавленных ограничений, 0 ужесточенных границ, 0 добавленных отверстий, 0 изменений сторон, 0 измененных коэффициентов, 0 последствий, 0 кликов. int, 0 impl, 91 cont) и 9311 ограничений
9311 ограничений типа ‹linear>
Время предварительного растворения: 0.00
Я добавил 72 столбца: 91 исходный + 72 добавленных = всего 163. Вроде бы нормально.
Я добавил предложенные параметры. Кажется, что распространение домена раньше не использовалось, но было сильное ветвление. К сожалению, с параметрами ничего не изменилось.
В дополнение к добавлению параметров я также попытался использовать вместо него SCIP 3.0.1. Это улучшило мою оценку с 670.194 до 699.203, но это все еще сильно отличается от cplex, связанного с 754.348. Я знаю, что решатели различаются по множеству числовых параметров, но я полагаю, что разница слишком велика, чтобы быть вызванной этими параметрами?