SCIP с использованием старого кода

Я новичок в SCIP. Я хочу использовать SCIP в качестве отраслевой и ценовой основы. Я уже закодировал проблему на C ++, а также реализовал генерацию цен или столбцов как функцию. Фактически я реализовал алгоритм BP для корневого узла, связав Cplex.dll с проектом, и теперь мне нужно закодировать дерево ветвления, и я решил использовать SCIP для этой цели. Я хочу знать, как быстрее всего я могу решить свою проблему с помощью SCIP и старых кодов, которые у меня есть? Или, может быть, использование GCG - лучший и быстрый способ? Я прочитал документацию GCG, но не понимаю, стоит ли мне снова вводить цену самостоятельно или нет? На самом деле я не понимаю разницы между этими двумя (SCIP и GCG). Спасибо.


person math2014    schedule 28.11.2016    source источник
comment
Просматривали ли вы раздел "Начало работы" в документации по SCIP? На странице запуска новых проектов перечислены доступные примеры кодирования. В вашем случае (создание столбцов на C ++) пример VRP может быть отправной точкой.   -  person Gregor    schedule 29.11.2016


Ответы (1)


В GCG не нужно ничего реализовывать самостоятельно. Это универсальный решатель для филиалов и цен. Вы должны предоставить компактную формулировку, то есть модель, которая после применения переформулировки Данцига-Вульфа приводит к основной проблеме, которую вы решаете. Переформулировка также обеспечивает MIP-формулировку проблемы ценообразования, поэтому GCG может решить ее в качестве суб-MIP для ценообразования. Однако есть возможность подключить к GCG решатель ценообразования, которому будет передаваться MIP ценообразования (с целевой функцией, соответствующей текущему раунду ценообразования). Затем решатель цен может решить эту проблему с помощью любого алгоритма, ориентированного на конкретную проблему, и передать решения обратно в GCG.

В SCIP, с другой стороны, вы создаете основную проблему, которую хотите решить, и внедряете систему ценообразования, которая получает двойные значения от LP и решает соответствующую проблему ценообразования. Вероятно, это очень похоже на то, что у вас уже есть.

Кроме того, если вы хотите использовать ветвь и цену, вам понадобится правило ветвления. GCG поставляется с некоторыми общими, в SCIP вам придется реализовать их самостоятельно (поскольку решения о ветвлении должны учитываться в вашей процедуре ценообразования).

В целом, SCIP - это структура для ветвления и цены, то есть он обеспечивает управление деревом, решение LP, обновления и т. Д., Но вам нужно реализовать некоторые вещи самостоятельно, например, считыватель, ценообразование и правила ветвления. GCG - это универсальный решатель, поэтому вы можете просто подключить компактную модель, которая переформулирована и решена в общем виде. Переформулировка либо предоставляется вами через входной файл, либо вы можете попытаться позволить GCG обнаружить подходящую структуру. Не нужно ничего реализовывать. Он уже предоставляет некоторые полезные функции, такие как первичная эвристика, которая использует переформулировку, автоматическое управление тем, какая проблема ценообразования решается, когда и многое другое. С другой стороны, возможности его дальнейшего расширения, например, с помощью решателя ценообразования и правил ветвления, ограничены по сравнению с SCIP, поскольку вы должны придерживаться структуры, определенной GCG.

Я бы сказал, что использование SCIP и добавление вашей цены, вероятно, является более простым способом и более похожим на то, что у вас уже есть (вам не нужно формулировать компактную модель). Если у вас уже есть представление о том, как должно работать ваше ветвление, его также не должно быть слишком сложно реализовать в SCIP.

person Gerald    schedule 29.11.2016
comment
: Большое спасибо, но как пользователь может изменить формулировку через входной файл? Я не могу найти об этом в документации. - person math2014; 11.12.2016
comment
Пожалуйста, проверьте эту страницу и ссылки на ней: or.rwth-aachen .de / gcg / doc / FILEFORMATS.html - person Gerald; 12.12.2016