or-tools-ի տեղադրում SCIP-ի և GLPK-ի միջոցով Python 3.7 վիրտուալ միջավայրում Linux

Որոշեցի մասնակցել մրցակցություն և անհրաժեշտ էր օգտագործել փաթեթներ՝ օպտիմալացման խնդիրների լուծման համար։ Ես ընտրեցի Google-ի գործիքը կամ գործիքները, որը ինտերֆեյս է տարբեր լուծողների (թե լուծողներ, լուծիչներ) համար։ Այն պարունակում է մի քանի օպտիմալացման գործիքներ, սակայն ստեղծողները պնդում են, որ աջակցություն են ստանում մի քանի արտաքին փաթեթների համար, ներառյալ առևտրային Gurobi-ն և CPLEX-ը: Այնուամենայնիվ, մենք հարուստ մարդիկ չենք, և մենք կօգտագործենք անվճար SCIP և GLPK (ի դեպ, հայրենական մշակողի կողմից): Ի զարմանս ինձ, ես չգտա մեկ հրահանգ, թե ինչպես ստիպել այս ամբողջ շքեղությունն աշխատել Python-ի վիրտուալ միջավայրում ինչպես մեր, այնպես էլ ինտերնետի անգլիախոս հատվածների ընդարձակության վրա, և ես ստիպված էի մի փոքր թակել: Նրանց համար, ովքեր շտապում են, անմիջապես կարդացեք այստեղ, остальным предлагаю познакомиться с сомнительного качества моей графоманией, описывающей перипетии установки гугловского софта. Да, забыл сразу сказать, что устанавливалось всё в Manjaro Linux.

or-tools-ի տեղադրում SCIP-ի և GLPK-ի միջոցով Python 3.7 վիրտուալ միջավայրում Linux

Առաջին քայլեր

Բոլոր երեք փաթեթները գոյություն ունեն Python պահեստում, ուստի մենք դրանք տեղադրում ենք pip-ի միջոցով:

Դրանցից յուրաքանչյուրն ունի իր ինտերֆեյսը, և or-tools-ն ընտրվել է պարզապես տարբեր փաթեթներ փորձելու համար՝ առանց էականորեն վերաշարադրելու ծրագիրը, այնպես որ խնդիրն այն է, որ or-tools-ը վերցնի այս լուծիչները և թույլ տա, որ դրանք գործարկվեն իրենց միջոցով: Այսպիսով, ինչ եք կարծում: Տեղադրված միջոցով pip or-tools-ը չի տեսնում լուծիչները, որոնք տեղադրված են pip-ի միջոցով, և նրանք չեն տեսնում դա (ով կմտածեր): Այսպիսով, դուք դեռ պետք է նայեք, թե ինչ են նրանք գրում փաստաթղթավորում.
Փաստաթղթերը գրում են, որ դուք պետք է կառուցեք աղբյուրից, որպեսզի or-tools-ը կարողանա վերցնել արտաքին փաթեթներ: Փորձում ենք կոմպիլացնել, բայց ոչինչ չի ստացվում, քանի որ pip-ի միջոցով տեղադրված լուծիչները տեսանելի չեն։
Համապատասխանաբար, pip-ի միջոցով բոլոր փաթեթները տեղադրելու ամենապարզ մեթոդները չեն աշխատում, քանի որ or-tools-ը չի քաշում լուծիչները, լուծումները չեն տեղադրում գրադարաններն այնպես, ինչպես ուզում է or-tools-ը, բոլորը սխալներ են նետում ձեզ վրա, ձեզ հիմար են անվանում և ծիծաղում է ամեն կերպ.

Ավելի ներս նավահանգիստներ Նրանք գրում են, որ դուք պետք է կազմեք լուծիչները սկզբնաղբյուրային կոդերից, այնուհետև ինքնին կազմեք or-tools սկզբնական կոդերից: Ասել է շուտ, քան արվել է: Ես տեղադրեցի SCIP, տեղադրեցի GLPK, բայց հարց առաջացավ, որը նկարագրված չէր փաստաթղթերում, թե ինչպես տեղադրել or-tools-ը վիրտուալ միջավայրում:

Դոկերում գրված միակ հրամանը՝ make python, փաթեթը գլոբալ տեղադրում է համակարգի վրա (զարմանալի է, չէ՞):

Այնուամենայնիվ, ես բախտավոր էի. անվերջ կապիկների մեթոդով ինժեներական որոնման ժամանակ ես պատահաբար մուտքագրեցի make help հրամանը, և այն ինձ տվեց կառուցման կամ գործիքների բոլոր տարբերակների ցանկը, որոնց թվում էր անիվը կառուցելու տարբերակը: փաթեթ. Սա make python_package հրամանն է, եթե կա (վերջում նորից կկրկնեմ): Այսպիսով, ժամանակն է հավաքվել և գործարկել:

or-tools-ի տեղադրում SCIP-ի և GLPK-ի միջոցով Python 3.7 վիրտուալ միջավայրում Linux

Խնդիր է փնտրում

Ոչինչ չի աշխատում or-tools build-ի փուլում, այն դժգոհում է վատ GLPK գրադարաններից:

or-tools-ի տեղադրում SCIP-ի և GLPK-ի միջոցով Python 3.7 վիրտուալ միջավայրում Linux

Փաստաթղթերի պարամետրերով SCIP-ով կառուցումը հաջող է, բայց or-tools-ը դեռ հրաժարվում է աշխատել ներմուծման պահին:

or-tools-ի տեղադրում SCIP-ի և GLPK-ի միջոցով Python 3.7 վիրտուալ միջավայրում Linux

Ես չկարողացա ինքնուրույն լուծում գտնել այս խնդիրների համար, ուստի գնացի GitHub՝ հարցնելու ծրագրավորողներին, թե ինչու տեղադրումը, ըստ նրանց հրահանգների, սխալներ է առաջացնում ինչ-որ տեղ իրենց կոդի ներսում:

or-tools-ի տեղադրում SCIP-ի և GLPK-ի միջոցով Python 3.7 վիրտուալ միջավայրում Linux
Հմմ, շնորհակալություն պարզաբանման համար

Մինչ ես պատասխանի էի սպասում Github-ում, ես փնտրեցի համացանցը՝ հույս ունենալով գտնել մի բան, որը կօգնի ինձ: Եվ զարմանալիորեն գտա: Դա եղել է Օրագիր նախագծի թիմի ղեկավարը, որտեղ նա գրել է, թե ինչպես միացնել GLPK-ն or-tools-ի հետ: Եվ այս մեթոդը վերջապես աշխատեց: Այժմ, եթե դուք հավաքում եք ամեն ինչ առանց SCIP-ի, բայց GLPK-ով, ապա կարող եք նույնիսկ աշխատել դրա հետ: Արդեն առաջընթաց.

Այնուամենայնիվ, or-tools թիմի թիմի ղեկավարը խորհուրդ չտվեց օգտագործել GLPK-ն՝ ասելով, որ դրա ցույց տված արդյունքները կարևոր չեն, և ես դեռ ցանկանում եմ հաղթել SCIP-ին և այն աշխատեցնել: Հարևան գրառում Բլոգն ինձ գաղափար տվեց, որ Google փաթեթն աշխատում է կոնկրետ տարբերակներով։ Եկեք նայենք թողարկման փոփոխությունների ցանկը և մենք այնտեղ տեսնում ենք 6.0.0 տարբերակի հստակ նշում: Չնայած այն հանգամանքին, որ 6.0.2 տարբերակը նշված է makefile-ում, մենք փորձում ենք տեղադրել ավելի հին տարբերակ և voila:

Եվ հիմա հերթական անգամ գործողությունների աշխատանքային հաջորդականությունը։

Տեղադրման հաջորդականությունը

  1. Ներբեռնեք SCIP արխիվը՝ համոզվելով, որ դա այստեղ Ձեր ներբեռնվող տարբերակի աջակցությունը հստակ նշված է (իմ դեպքում developers.google.com/optimization/support/release_notes#support-for-scip-6.0.0) և հանել փաթեթավորումը:
  2. Ներբեռնեք GLPK-ն (այս գրառման պահին վերջին տարբերակը 4.65-ն է) և բացեք այն:
  3. Տեղադրեք SCIP հրամանը
    make GMP=false READLINE=false TPI=tny ZIMPL=false scipoptlib install INSTALLDIR=<path>/scipoptsuite-6.0.0
    
  4. Տեղադրեք GLPK հրամանով.
    ./configure --prefix=<install_path> --with-pic --enable-shared
    make
    make install
    
  5. Ներբեռնեք OR-Tools-ը Github-ից
    git clone https://github.com/google/or-tools
  6. Տեղադրեք OR-Tools-ը՝ օգտագործելով հրամանները.
    make third_party
    make python_package
    

    Եթե ​​վերջին հրամանը չի աշխատում, տեղադրեք անիվը հրամանով.

    pip install wheel
  7. Վիրտուալ միջավայրն ակտիվացնելու համար մտեք Python փաթեթով թղթապանակ և տեղադրեք այն այնտեղից։

    Եթե ​​Ձեզ անհրաժեշտ է տեղադրել ոչ թե վիրտուալ միջավայրում, այլ գլոբալ ամբողջ համակարգի համար, փոխարենը՝

    make python_package

    գործարկել հրամանը.

    make python
    

Source: www.habr.com

Գնեք հուսալի հոստինգ DDoS պաշտպանությամբ կայքերի, VPS VDS սերվերների համար 🔥 Գնեք հուսալի կայքերի հոսթինգ՝ DDoS պաշտպանությամբ, VPS VDS սերվերներով | ProHoster