2014-10-30 2 views
-3

Я пытаюсь разработать релаксационный обработчик для нелинейной задачи. Я хочу взять пример TSP и изменить его. Итак, во-первых, я хочу создать проблему с TSP с помощью ipopt.Пример построения TSP с IPOPT

Я скачал scipoptsuite 3.1.0 и Ipopt 3.11.9. У меня есть встроенный scip с ipopt, и я также создаю пример TSP из его стандартного make-файла. Однако стандартный make-файл для примера TSP не создает его с поддержкой ipopt.

Как создать пример TSP с поддержкой IPOPT?

Спасибо

Update Окт 31, 2014:

Так что я попытался IPOPT = правда, и это выглядит как вещи работают, но есть проблема во время выполнения. И теперь я потерян.

Вызов Марка:

[email protected]:~/scipoptsuite-3.1.0/scip-3.1.0/examples/TSP$ make clean 
rm -f obj/O.linux.x86_64.gnu.opt/*.o 
rmdir obj/O.linux.x86_64.gnu.opt 
rm -f bin/sciptsp.linux.x86_64.gnu.opt.spx 
[email protected]:~/scipoptsuite-3.1.0/scip-3.1.0/examples/TSP$ make -j10 IPOPT=true 
-> compiling obj/O.linux.x86_64.gnu.opt/cppmain.o 
-> compiling obj/O.linux.x86_64.gnu.opt/ConshdlrSubtour.o 
-> compiling obj/O.linux.x86_64.gnu.opt/ProbDataTSP.o 
-> compiling obj/O.linux.x86_64.gnu.opt/ReaderTSP.o 
-> compiling obj/O.linux.x86_64.gnu.opt/GomoryHuTree.o 
-> compiling obj/O.linux.x86_64.gnu.opt/EventhdlrNewSol.o 
-> compiling obj/O.linux.x86_64.gnu.opt/HeurFarthestInsert.o 
-> compiling obj/O.linux.x86_64.gnu.opt/HeurFrats.o 
-> compiling obj/O.linux.x86_64.gnu.opt/Heur2opt.o 
-> linking bin/sciptsp.linux.x86_64.gnu.opt.spx 
[email protected]:~/scipoptsuite-3.1.0/scip-3.1.0/examples/TSP$ ./bin/sciptsp -f ../../bin/t.pip 
SCIP version 3.1.0 [precision: 8 byte] [memory: block] [mode: optimized] [LP solver: SoPlex 2.0.0] [GitHash: 577ee45] 
Copyright (c) 2002-2014 Konrad-Zuse-Zentrum fuer Informationstechnik Berlin (ZIB) 

External codes: 
    Readline 6.3   GNU library for command line editing (gnu.org/s/readline) 
    SoPlex 2.0.0   Linear Programming Solver developed at Zuse Institute Berlin (soplex.zib.de) [GitHash: 568f354] 
    cppad-20140000.1  Algorithmic Differentiation of C++ algorithms developed by B. Bell (www.coin-or.org/CppAD) 
    ZLIB 1.2.8   General purpose compression library by J. Gailly and M. Adler (zlib.net) 
    GMP 5.1.3   GNU Multiple Precision Arithmetic Library developed by T. Granlund (gmplib.org) 
    ZIMPL 3.3.2   Zuse Institute Mathematical Programming Language developed by T. Koch (zimpl.zib.de) 
    Ipopt 3.11.9   Interior Point Optimizer developed by A. Waechter et.al. (www.coin-or.org/Ipopt) 

reading user parameter file <sciptsp.set> 

read problem <../../bin/t.pip> 
============ 

original problem has 6 variables (0 bin, 5 int, 0 impl, 1 cont) and 1 constraints 

solve problem 
============= 

Segmentation fault 

[email protected]:~/scipoptsuite-3.1.0/scip-3.1.0/examples/TSP$ cat bin/t.pip 
Maximize 
obj: x1^3*x2^5*x3^3*x4^3 + x4*x5^2 - x3^4*x4^2*x1^3 - x4^5 
Bounds 
1 <= x1 <= 10 
1 <= x2 <= 10 
1 <= x3 <= 10 
1 <= x4 <= 10 
1 <= x5 <= 10 
Integers 
x1 
x2 
x3 
x4 
x5 
End 

Что делать говорит, что следует делать:

[email protected]:~/scipoptsuite-3.1.0/scip-3.1.0/examples/TSP$ make clean 
rm -f obj/O.linux.x86_64.gnu.opt/*.o 
rmdir obj/O.linux.x86_64.gnu.opt 
rm -f bin/sciptsp.linux.x86_64.gnu.opt.spx 
[email protected]:~/scipoptsuite-3.1.0/scip-3.1.0/examples/TSP$ make -j10 IPOPT=true -n 
mkdir -p obj/O.linux.x86_64.gnu.opt 
echo "-> compiling obj/O.linux.x86_64.gnu.opt/cppmain.o" 
g++ -Isrc -DWITH_SCIPDEF -I../../src -DNDEBUG -DROUNDING_FE -DNPARASCIP -DWITH_ZLIB -DWITH_GMP -DWITH_READLINE -Ilib/ipopt.linux.x86_64.gnu.opt/include/coin -O3 -fomit-frame-pointer -mtune=native  -std=c++0x -pedantic -Wno-long-long -Wall -W -Wpointer-arith -Wcast-align -Wwrite-strings -Wshadow -Wno-unknown-pragmas -Wno-unused-parameter -Wredundant-decls -Wdisabled-optimization -Wctor-dtor-privacy -Wnon-virtual-dtor -Wreorder -Woverloaded-virtual -Wsign-promo -Wsynth -Wcast-qual -Wno-unused-parameter -Wno-strict-overflow -Wno-strict-aliasing -m64 -c src/cppmain.cpp -o obj/O.linux.x86_64.gnu.opt/cppmain.o 
echo "-> compiling obj/O.linux.x86_64.gnu.opt/ConshdlrSubtour.o" 
g++ -Isrc -DWITH_SCIPDEF -I../../src -DNDEBUG -DROUNDING_FE -DNPARASCIP -DWITH_ZLIB -DWITH_GMP -DWITH_READLINE -Ilib/ipopt.linux.x86_64.gnu.opt/include/coin -O3 -fomit-frame-pointer -mtune=native  -std=c++0x -pedantic -Wno-long-long -Wall -W -Wpointer-arith -Wcast-align -Wwrite-strings -Wshadow -Wno-unknown-pragmas -Wno-unused-parameter -Wredundant-decls -Wdisabled-optimization -Wctor-dtor-privacy -Wnon-virtual-dtor -Wreorder -Woverloaded-virtual -Wsign-promo -Wsynth -Wcast-qual -Wno-unused-parameter -Wno-strict-overflow -Wno-strict-aliasing -m64 -c src/ConshdlrSubtour.cpp -o obj/O.linux.x86_64.gnu.opt/ConshdlrSubtour.o 
echo "-> compiling obj/O.linux.x86_64.gnu.opt/ProbDataTSP.o" 
g++ -Isrc -DWITH_SCIPDEF -I../../src -DNDEBUG -DROUNDING_FE -DNPARASCIP -DWITH_ZLIB -DWITH_GMP -DWITH_READLINE -Ilib/ipopt.linux.x86_64.gnu.opt/include/coin -O3 -fomit-frame-pointer -mtune=native  -std=c++0x -pedantic -Wno-long-long -Wall -W -Wpointer-arith -Wcast-align -Wwrite-strings -Wshadow -Wno-unknown-pragmas -Wno-unused-parameter -Wredundant-decls -Wdisabled-optimization -Wctor-dtor-privacy -Wnon-virtual-dtor -Wreorder -Woverloaded-virtual -Wsign-promo -Wsynth -Wcast-qual -Wno-unused-parameter -Wno-strict-overflow -Wno-strict-aliasing -m64 -c src/ProbDataTSP.cpp -o obj/O.linux.x86_64.gnu.opt/ProbDataTSP.o 
echo "-> compiling obj/O.linux.x86_64.gnu.opt/ReaderTSP.o" 
g++ -Isrc -DWITH_SCIPDEF -I../../src -DNDEBUG -DROUNDING_FE -DNPARASCIP -DWITH_ZLIB -DWITH_GMP -DWITH_READLINE -Ilib/ipopt.linux.x86_64.gnu.opt/include/coin -O3 -fomit-frame-pointer -mtune=native  -std=c++0x -pedantic -Wno-long-long -Wall -W -Wpointer-arith -Wcast-align -Wwrite-strings -Wshadow -Wno-unknown-pragmas -Wno-unused-parameter -Wredundant-decls -Wdisabled-optimization -Wctor-dtor-privacy -Wnon-virtual-dtor -Wreorder -Woverloaded-virtual -Wsign-promo -Wsynth -Wcast-qual -Wno-unused-parameter -Wno-strict-overflow -Wno-strict-aliasing -m64 -c src/ReaderTSP.cpp -o obj/O.linux.x86_64.gnu.opt/ReaderTSP.o 
echo "-> compiling obj/O.linux.x86_64.gnu.opt/GomoryHuTree.o" 
g++ -Isrc -DWITH_SCIPDEF -I../../src -DNDEBUG -DROUNDING_FE -DNPARASCIP -DWITH_ZLIB -DWITH_GMP -DWITH_READLINE -Ilib/ipopt.linux.x86_64.gnu.opt/include/coin -O3 -fomit-frame-pointer -mtune=native  -std=c++0x -pedantic -Wno-long-long -Wall -W -Wpointer-arith -Wcast-align -Wwrite-strings -Wshadow -Wno-unknown-pragmas -Wno-unused-parameter -Wredundant-decls -Wdisabled-optimization -Wctor-dtor-privacy -Wnon-virtual-dtor -Wreorder -Woverloaded-virtual -Wsign-promo -Wsynth -Wcast-qual -Wno-unused-parameter -Wno-strict-overflow -Wno-strict-aliasing -m64 -c src/GomoryHuTree.cpp -o obj/O.linux.x86_64.gnu.opt/GomoryHuTree.o 
echo "-> compiling obj/O.linux.x86_64.gnu.opt/EventhdlrNewSol.o" 
g++ -Isrc -DWITH_SCIPDEF -I../../src -DNDEBUG -DROUNDING_FE -DNPARASCIP -DWITH_ZLIB -DWITH_GMP -DWITH_READLINE -Ilib/ipopt.linux.x86_64.gnu.opt/include/coin -O3 -fomit-frame-pointer -mtune=native  -std=c++0x -pedantic -Wno-long-long -Wall -W -Wpointer-arith -Wcast-align -Wwrite-strings -Wshadow -Wno-unknown-pragmas -Wno-unused-parameter -Wredundant-decls -Wdisabled-optimization -Wctor-dtor-privacy -Wnon-virtual-dtor -Wreorder -Woverloaded-virtual -Wsign-promo -Wsynth -Wcast-qual -Wno-unused-parameter -Wno-strict-overflow -Wno-strict-aliasing -m64 -c src/EventhdlrNewSol.cpp -o obj/O.linux.x86_64.gnu.opt/EventhdlrNewSol.o 
echo "-> compiling obj/O.linux.x86_64.gnu.opt/HeurFarthestInsert.o" 
g++ -Isrc -DWITH_SCIPDEF -I../../src -DNDEBUG -DROUNDING_FE -DNPARASCIP -DWITH_ZLIB -DWITH_GMP -DWITH_READLINE -Ilib/ipopt.linux.x86_64.gnu.opt/include/coin -O3 -fomit-frame-pointer -mtune=native  -std=c++0x -pedantic -Wno-long-long -Wall -W -Wpointer-arith -Wcast-align -Wwrite-strings -Wshadow -Wno-unknown-pragmas -Wno-unused-parameter -Wredundant-decls -Wdisabled-optimization -Wctor-dtor-privacy -Wnon-virtual-dtor -Wreorder -Woverloaded-virtual -Wsign-promo -Wsynth -Wcast-qual -Wno-unused-parameter -Wno-strict-overflow -Wno-strict-aliasing -m64 -c src/HeurFarthestInsert.cpp -o obj/O.linux.x86_64.gnu.opt/HeurFarthestInsert.o 
echo "-> compiling obj/O.linux.x86_64.gnu.opt/HeurFrats.o" 
g++ -Isrc -DWITH_SCIPDEF -I../../src -DNDEBUG -DROUNDING_FE -DNPARASCIP -DWITH_ZLIB -DWITH_GMP -DWITH_READLINE -Ilib/ipopt.linux.x86_64.gnu.opt/include/coin -O3 -fomit-frame-pointer -mtune=native  -std=c++0x -pedantic -Wno-long-long -Wall -W -Wpointer-arith -Wcast-align -Wwrite-strings -Wshadow -Wno-unknown-pragmas -Wno-unused-parameter -Wredundant-decls -Wdisabled-optimization -Wctor-dtor-privacy -Wnon-virtual-dtor -Wreorder -Woverloaded-virtual -Wsign-promo -Wsynth -Wcast-qual -Wno-unused-parameter -Wno-strict-overflow -Wno-strict-aliasing -m64 -c src/HeurFrats.cpp -o obj/O.linux.x86_64.gnu.opt/HeurFrats.o 
echo "-> compiling obj/O.linux.x86_64.gnu.opt/Heur2opt.o" 
g++ -Isrc -DWITH_SCIPDEF -I../../src -DNDEBUG -DROUNDING_FE -DNPARASCIP -DWITH_ZLIB -DWITH_GMP -DWITH_READLINE -Ilib/ipopt.linux.x86_64.gnu.opt/include/coin -O3 -fomit-frame-pointer -mtune=native  -std=c++0x -pedantic -Wno-long-long -Wall -W -Wpointer-arith -Wcast-align -Wwrite-strings -Wshadow -Wno-unknown-pragmas -Wno-unused-parameter -Wredundant-decls -Wdisabled-optimization -Wctor-dtor-privacy -Wnon-virtual-dtor -Wreorder -Woverloaded-virtual -Wsign-promo -Wsynth -Wcast-qual -Wno-unused-parameter -Wno-strict-overflow -Wno-strict-aliasing -m64 -c src/Heur2opt.cpp -o obj/O.linux.x86_64.gnu.opt/Heur2opt.o 
echo "-> linking bin/sciptsp.linux.x86_64.gnu.opt.spx" 
g++ obj/O.linux.x86_64.gnu.opt/cppmain.o obj/O.linux.x86_64.gnu.opt/ConshdlrSubtour.o obj/O.linux.x86_64.gnu.opt/ProbDataTSP.o obj/O.linux.x86_64.gnu.opt/ReaderTSP.o obj/O.linux.x86_64.gnu.opt/GomoryHuTree.o obj/O.linux.x86_64.gnu.opt/EventhdlrNewSol.o obj/O.linux.x86_64.gnu.opt/HeurFarthestInsert.o obj/O.linux.x86_64.gnu.opt/HeurFrats.o obj/O.linux.x86_64.gnu.opt/Heur2opt.o \ 
     -L../../lib -lscip.linux.x86_64.gnu.opt \ 
       -lobjscip.linux.x86_64.gnu.opt -llpispx.linux.x86_64.gnu.opt -lnlpi.cppad.ipopt.linux.x86_64.gnu.opt \ 
       -O3 -fomit-frame-pointer -mtune=native -lsoplex.linux.x86_64.gnu.opt \ 
     -L/homes/home03/b/bedutra/installDir/lib -lm -Wl,--no-as-needed -m64 -lz -lzimpl.linux.x86_64.gnu.opt -lgmp -lreadline -lncurses -L/homes/home03/b/bedutra/software/Ipopt-3.11.9/lib -L/usr/lib/gcc/x86_64-linux-gnu/4.8 -L/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib -L/lib/../lib -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/4.8/../../.. -lipopt -ldl -lcoinmumps -lcoinlapack -lblas -lgfortran -lm -lquadmath -lcoinmetis -Wl,-rpath,/homes/home03/b/bedutra/software/Ipopt-3.11.9/lib -Wl,-rpath,/homes/home03/b/bedutra/scipoptsuite-3.1.0/scip-3.1.0/lib -o bin/sciptsp.linux.x86_64.gnu.opt.spx 
rm -f bin/sciptsp 
cd bin/ && ln -s sciptsp.linux.x86_64.gnu.opt.spx sciptsp 

Обновление ноября 4th, 2014:

Так что я никогда не понял, как построить TSP с IPOPT. Моя цель состояла в том, чтобы добавить плагин, который использует IPOT. Я узнал, что начать с чистой папки с примерами проще, чем начать с кода TSP. Я до сих пор не понял, как я могу сделать make-файл TSP для создания с помощью IPOP. Систему make scip сложно понять.

Как я добавляю плагин, который использует IPOPT: 0) Убедитесь, что зубры и Yacc находятся в вашем пути 1) в scipoptsuite-3.1.0, запустить грим Readline = ложь IPOPT = истина ZIMPL = ложь VERBOSE = истина 3) Сохраните вывод. Обратите внимание на то, как создаются o-файлы и как создается главный exe-файл. 4) Сохраните/измените эти команды g ++ в сценарии bash в scip-3.1.0 и просто запустите это при разработке.

Этот

+0

Добро пожаловать в StackOverflow. Мы склонны предпочитать вопросы, которые имеют предшествующие усилия. Я предлагаю вам сделать это для себя, возможно, искать онлайн примеры того, что сделали другие люди (с поиском Google, не спрашивая здесь), и спросить нас, если у вас есть * конкретная * проблема –

+0

@BeDutra Вы установили 'IPOPT = true' при компиляции примера TSP? Вы также можете установить 'VERBOSE = true', чтобы увидеть, какие библиотеки связаны, и вы должны увидеть IPOPT где-то там ... – Gregor

ответ

1

Из того, что я могу видеть, как вы уже успели построить TSP-пример с IPOPT, так как он занимает видное место в списке 3-пати-кода при запуске интерактивной оболочки.

Ошибка сегментации в приложении - это результат sciptsp, неявно ожидающий считывания TSP-данных (см. «Каталог tspdata» для примеров этого), поскольку некоторые из дополнительных плагинов примера требуют, чтобы данные проблемы точно в такой форме и не будет работать при проблемах, прочитанных в других форматах, таких как «.pip» в вашем случае.

Так что я вижу два варианта здесь, в зависимости от того, хотите ли вы создать несколько различных приложений, основанных на SCIP, или просто продлить по умолчанию SCIP дополнительной эвристика:

  1. Первый может быть достигнут быстрым по клонируя MIP solver example SCIP и настраивая его с помощью дополнительных плагинов, включив их вместе с плагинами по умолчанию в пользовательский cppmain.cpp.
  2. Последняя цель еще проще: прочитайте инструкцию How-To на вашем желаемом тип плагина, например., primal heuristics в документации SCIP, напишите код, включите в Makefile и в соответствующие места в src/scip/scipdefplugins. [Ch]. Перекомпиляция SCIP позволяет вам использовать плагин из интерактивной оболочки по умолчанию. В NLPI-эвристике (src/scip/heur_nlpi.c) используются соответствующие части Нелинейного интерфейса SCIP (который, в свою очередь, вызывает IPOPT) и стоит посмотреть в вашем случае.

Я знаю, что этот ответ задерживается для вас, но, возможно, экономит время для других.