-3

非線形問題の緩和ハンドラーを開発しようとしています。TSP の例を取り上げて、それを修正したいと思います。まず、ipopt を使用して TSP 問題を構築します。

scipoptsuite 3.1.0 と Ipopt 3.11.9 をダウンロードしました。私は ipopt で scip をビルドしました。また、TSP の例をその標準の makefile からビルドしました。ただし、TSP の例の標準の makefile は、ipopt サポートを使用してビルドしません。

IPOPT をサポートする TSP サンプルをビルドするにはどうすればよいですか?

ありがとうございました

2014 年 10 月 31 日更新:

だから私は IPOPT=true を試してみました。動作しているように見えますが、実行時に問題があります。そして今、私は迷っています。

発信者名:

bedutra@logic:~/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
bedutra@logic:~/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
bedutra@logic:~/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

bedutra@logic:~/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

何をするべきだと言っているのですか:

bedutra@logic:~/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
bedutra@logic:~/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

2014 年 11 月 4 日の更新:

そのため、IPOPT を使用して TSP を構築する方法がわかりませんでした。私の目標は、IPOT を使用するプラグインを追加することでした。TSP コードから開始するよりも、クリーンなサンプル フォルダーから開始する方が簡単であることがわかりました。TSP makefile を IPOP でビルドする方法をまだ理解していません。scip makefile システムは理解しにくいものです。

IPOPT を使用するプラグインを追加する方法: 0) bison と yacc がパスにあることを確認します 1) scipoptsuite-3.1.0 で、make READLINE=false IPOPT=true ZIMPL=false VERBOSE=true を実行します 3) 出力を保存します。o ファイルの作成方法とメインの exe ファイルの作成方法に注意してください。4) これらの g++ コマンドを scip-3.1.0 の bash スクリプトに保存/変更し、開発時にこれを実行します。

これ

4

1 に答える 1

1

私が見る限り、インタラクティブ シェルの起動時にサードパーティ コードのリストに目立つように表示されるため、IPOPT を使用して TSP サンプルをビルドすることができました。

アプリケーションのセグメンテーション違反は、sciptspTSP データが読み取られることを暗示的に期待した結果です (この例については、「tspdata」ディレクトリを参照してください)。例の追加プラグインの一部では、問題のデータが正確にその形状である必要があるためです。 、あなたの場合、「.pip」などの他の形式で読み取られた問題では失敗します。

したがって、SCIP に基づいていくつかの異なるアプリケーションを作成するか、追加のヒューリスティックによってデフォルトの SCIP を拡張するかによって、ここに 2 つのオプションがあります。

  1. 最初のものは、SCIP のMIP ソルバーの例を複製し、カスタム cppmain.cpp に既定のプラグインと一緒に含めることで、追加のプラグインでカスタマイズすることにより、最も速く達成できます。
  2. 後者の目標はさらに簡単です: 目的のプラグイン タイプ (たとえば、 SCIP ドキュメントのprimal heuristics ) に関するハウツーを読み、コードを記述し、Makefile にインクルードし、src/scip/scipdefplugins の適切な場所に配置します。[ch] . SCIP を再コンパイルすると、デフォルトのインタラクティブ シェルからプラグインを使用できるようになります。NLPI ヒューリスティック (src/scip/heur_nlpi.c) は、SCIP の非線形インターフェイス (これにより IPOPT が呼び出されます) の対応する部分を利用しており、あなたのケースでは一見の価値があります。

この回答が遅れることはわかっていますが、他の人の時間を節約できるかもしれません。

于 2014-11-11T15:32:55.423 に答える