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

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

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

Հմմ, շնորհակալություն պարզաբանման համար
Մինչ ես պատասխանի էի սպասում Github-ում, ես փնտրեցի համացանցը՝ հույս ունենալով գտնել մի բան, որը կօգնի ինձ: Եվ զարմանալիորեն գտա: Դա եղել է նախագծի թիմի ղեկավարը, որտեղ նա գրել է, թե ինչպես միացնել GLPK-ն or-tools-ի հետ: Եվ այս մեթոդը վերջապես աշխատեց: Այժմ, եթե դուք հավաքում եք ամեն ինչ առանց SCIP-ի, բայց GLPK-ով, ապա կարող եք նույնիսկ աշխատել դրա հետ: Արդեն առաջընթաց.
Այնուամենայնիվ, or-tools թիմի թիմի ղեկավարը խորհուրդ չտվեց օգտագործել GLPK-ն՝ ասելով, որ դրա ցույց տված արդյունքները կարևոր չեն, և ես դեռ ցանկանում եմ հաղթել SCIP-ին և այն աշխատեցնել: Հարևան Բլոգն ինձ գաղափար տվեց, որ Google փաթեթն աշխատում է կոնկրետ տարբերակներով։ Եկեք նայենք և մենք այնտեղ տեսնում ենք 6.0.0 տարբերակի հստակ նշում: Չնայած այն հանգամանքին, որ 6.0.2 տարբերակը նշված է makefile-ում, մենք փորձում ենք տեղադրել ավելի հին տարբերակ և voila:
Եվ հիմա հերթական անգամ գործողությունների աշխատանքային հաջորդականությունը։
Տեղադրման հաջորդականությունը
- Ներբեռնեք SCIP արխիվը՝ համոզվելով, որ դա Ձեր ներբեռնվող տարբերակի աջակցությունը հստակ նշված է (իմ դեպքում ) և հանել փաթեթավորումը:
- Ներբեռնեք GLPK-ն (այս գրառման պահին վերջին տարբերակը 4.65-ն է) և բացեք այն:
- Տեղադրեք SCIP հրամանը
make GMP=false READLINE=false TPI=tny ZIMPL=false scipoptlib install INSTALLDIR=<path>/scipoptsuite-6.0.0 - Տեղադրեք GLPK հրամանով.
./configure --prefix=<install_path> --with-pic --enable-shared make make install - Ներբեռնեք OR-Tools-ը Github-ից
git clone https://github.com/google/or-tools - Տեղադրեք OR-Tools-ը՝ օգտագործելով հրամանները.
make third_party make python_packageԵթե վերջին հրամանը չի աշխատում, տեղադրեք անիվը հրամանով.
pip install wheel - Վիրտուալ միջավայրն ակտիվացնելու համար մտեք Python փաթեթով թղթապանակ և տեղադրեք այն այնտեղից։
Եթե Ձեզ անհրաժեշտ է տեղադրել ոչ թե վիրտուալ միջավայրում, այլ գլոբալ ամբողջ համակարգի համար, փոխարենը՝
make python_packageգործարկել հրամանը.
make python
Source: www.habr.com
