Menginstal atau-alat dengan SCIP dan GLPK di lingkungan virtual Python 3.7 di Linux

Saya memutuskan untuk berpartisipasi dalam kompetisi dan perlu menggunakan paket baginya untuk menyelesaikan masalah optimasi. Saya memilih alat atau-alat Google, yang merupakan antarmuka untuk berbagai solver (atau diselesaikan? Solver?). Ini berisi beberapa alat optimisasi, tetapi pembuatnya mengklaim dukungan untuk beberapa paket eksternal, termasuk Gurobi komersial dan CPLEX. Namun, kami bukan orang kaya, dan kami akan menggunakan SCIP dan GLPK gratis (omong-omong, dari pengembang domestik). Yang mengejutkan saya, tidak ada instruksi tunggal tentang bagaimana membuat semua kemegahan ini bekerja di lingkungan python virtual, saya tidak menemukan di ruang terbuka dari segmen internet kami dan berbahasa Inggris dan saya harus sedikit mengotak-atik. Bagi mereka yang terburu-buru, baca di sini, Saya sarankan sisanya untuk berkenalan dengan kualitas meragukan dari graphomania saya, yang menggambarkan naik turunnya menginstal perangkat lunak Google. Ya, saya langsung lupa mengatakan bahwa semuanya sudah diinstal di Manjaro Linux.


Langkah pertama


Ketiga paket ada di repositori python, jadi kami instal dari via pip.

Masing-masing dari mereka memiliki antarmuka sendiri, dan atau-alat dipilih hanya untuk mencoba berbagai paket, tanpa menulis ulang program secara signifikan, sehingga tugasnya adalah untuk atau-alat untuk mengambil solver ini dan membiarkannya berjalan sendiri. Dan apa yang kamu pikirkan? Diinstal melalui pip atau-tools tidak melihat solver yang diinstal melalui pip, dan mereka tidak melihatnya (siapa sangka). Jadi, Anda masih perlu melihat apa yang mereka tulis dalam dokumentasi .
Di dermaga mereka menulis apa yang perlu dikumpulkan dari sumber sehingga atau-alat mengambil paket eksternal. Kami mencoba mengumpulkan, dan tidak ada yang keluar, karena solver yang dipasang melalui pip tidak terlihat.
Oleh karena itu, cara termudah untuk menginstal semua paket melalui pip tidak berfungsi, karena atau-alat tidak menarik pemecah, pemecah tidak memasang pustaka seperti yang atau-alat inginkan, semua orang mencurahkan kesalahan pada Anda, mereka menyebut Anda bodoh dan tertawa dengan segala cara yang mungkin.

Lebih lanjut di dermaga mereka menulis bahwa perlu untuk mengumpulkan pemecah dari kode sumber, kemudian dari sumber untuk mengumpulkan atau-alat itu sendiri. Tidak lebih cepat dikatakan daripada dilakukan! Menginstal SCIP, menginstal GLPK, tetapi pertanyaan yang muncul tidak dijelaskan dalam dokumentasi adalah bagaimana menempatkan atau-alat di lingkungan virtual.

Perintah hanya membuat python pada dok menginstal paket secara global pada sistem (mengejutkan, ya?).

Namun, saya beruntung: selama pencarian teknik menggunakan metode monyet tak berujung, saya mengetik secara tidak sengaja membuat bantuan, dan saya diberi daftar semua opsi alat atau alat, di antaranya adalah kesempatan untuk membangun paket roda. Ini adalah perintah make python_package, jika itu (saya akan mengulanginya lagi di akhir). Jadi, apakah sudah waktunya untuk membangun dan meluncurkan?



Mencari masalah


Tidak ada yang berfungsi pada fase build or-tools, ia bersumpah di pustaka GLPK yang buruk.



Bangun dengan SCIP dengan parameter dari dokumentasi berhasil, tetapi atau-alat masih menolak untuk bekerja pada saat impor.



Saya tidak dapat menemukan solusi untuk masalah ini sendiri, jadi saya pergi ke github untuk para pengembang untuk bertanya mengapa instalasi sesuai dengan instruksi mereka menghasilkan kesalahan di suatu tempat di dalam kode mereka.


Hmm, terima kasih atas klarifikasi ini.

Sementara saya menunggu jawaban di github, saya mencari-cari di internet, berharap menemukan sesuatu yang bisa membantu saya. Dan karena itu tidak mengejutkan, saya menemukannya. Itu adalah blog utama tim proyek tempat ia menulis tentang cara menautkan GLPK dengan atau-alat. Dan metode ini akhirnya berhasil! Sekarang, jika Anda membangun semuanya tanpa SCIP, tetapi dengan GLPK, maka Anda bahkan dapat bekerja dengan ini. Sudah maju.

Namun, ketua tim atau-alat tidak menyarankan menggunakan GLPK, mengatakan bahwa hasilnya tidak penting, dan saya masih ingin mengalahkan SCIP dan membuatnya bekerja. Pos tetangga di blog menemukan ide bahwa paket rilis Google berfungsi dengan versi tertentu. Kami melihat daftar perubahan rilis dan melihat indikasi eksplisit versi 6.0.0 di sana. Terlepas dari kenyataan bahwa versi 6.0.2 ditunjukkan dalam makefile, kami mencoba untuk menginstal versi yang lebih lama dan voila!

Dan sekarang lagi, urutan tindakan yang berhasil.

Urutan pemasangan


  1. Unduh arsip SCIP, pastikan ada dukungan yang diindikasikan dengan jelas untuk versi yang Anda unduh (dalam kasus saya developers.google.com/optimization/support/release_notes#support-for-scip-6.0.0 ) dan bongkar.
  2. Unduh GLPK (pada saat memposting versi terbaru 4.65) dan unzip.
  3. Instal perintah SCIP

    make GMP=false READLINE=false TPI=tny ZIMPL=false scipoptlib install INSTALLDIR=<path>/scipoptsuite-6.0.0
    
  4. Instal GLPK dengan perintah:

    ./configure --prefix=<install_path> --with-pic --enable-shared
    make
    make install
    
  5. Unduh OR-Tools dari github

    git clone https://github.com/google/or-tools
  6. Instal OR-Tools dengan perintah:

    make third_party
    make python_package
    

    Jika perintah terakhir tidak berfungsi, instal roda dengan perintah:

    pip install wheel
  7. Untuk mengaktifkan lingkungan virtual pergi ke folder dengan paket Python dan instal dari sana.

    Jika Anda perlu menginstal bukan di lingkungan virtual, tetapi secara global untuk keseluruhan sistem, bukan:

    make python_package

    jalankan perintah:

    make python
    

All Articles