Ман қарор додам, ки дар он иштирок кунам ва барои ҳалли масъалаҳои оптимизатсия бастаҳоро истифода бурдан лозим буд. Ман абзори Google ё-tools-ро интихоб кардам, ки интерфейс барои ҳалкунандаҳои гуногун (ё ҳалкунандаҳо? ҳалкунандаҳо?) аст. Он дорои якчанд абзорҳои оптимизатсия аст, аммо эҷодкорон барои дастгирии якчанд бастаҳои беруна, аз ҷумла Gurobi ва CPLEX тиҷоратӣ даъво мекунанд. Бо вуҷуди ин, мо одамони сарватманд нестем ва мо SCIP ва GLPK-ро ройгон истифода хоҳем кард (воқеан, аз таҳиягари ватанӣ). Тааҷҷубовар аст, ки ман ягон дастуреро дар бораи чӣ гуна кор кардани ин ҳама бузургӣ дар муҳити виртуалии Python дар бораи фарогирии ҳам сегментҳои мо ва ҳам инглисизабони Интернет наёфтам ва ман маҷбур шудам, ки каме ғамхорӣ кунам. Барои онҳое, ки саросема ҳастанд, фавран хонед Барои дигарон, ман ба шумо тавсия медиҳам, ки навиштаҷоти шубҳаноки маро, ки нозукиҳои насби нармафзори Google-ро тавсиф мекунанд, хонед. Ва ман фаромӯш кардам, ки қайд кунам, ки ҳама чиз дар Манҷаро насб шудааст. Linux.

қадамҳои аввалин
Ҳар се бастаҳо дар анбори Python мавҷуданд, аз ин рӯ мо онҳоро тавассути pip насб мекунем.
Ҳар яке аз онҳо интерфейси худро дорад ва ё-асбобҳо танҳо барои санҷидани бастаҳои гуногун бидуни аз нав навиштани барнома интихоб карда шудаанд, аз ин рӯ вазифа аз он иборат аст, ки or-асбобҳо ин ҳалкунандаҳоро гиранд ва ба онҳо имкон диҳанд, ки тавассути худ кор кунанд. Ва шумо чӣ фикр доред? Тавассути pip ё-tools насбшуда ҳалкунандаҳои тавассути pip насбшударо намебинанд ва онҳо онро намебинанд (кӣ фикр мекард). Ҳамин тавр, шумо бояд ба ҳар ҳол назар кунед, ки онҳо дар чӣ менависанд .
Ҳуҷҷатҳо менависанд, ки шумо бояд аз манбаъ бунёд кунед, то or-tools бастаҳои берунаро гиранд. Мо кӯшиш мекунем, ки онро тартиб диҳем, аммо ҳеҷ чиз ба даст намеояд, зеро ҳалкунандаҳои тавассути pip насбшуда намоён нестанд.
Аз ин рӯ, усулҳои оддитарини насб кардани ҳама бастаҳо тавассути pip кор намекунанд, зеро or-tools ҳалкунандаҳоро намекашад, ҳалкунандаҳо китобхонаҳоро тавре насб намекунанд ё-tools, ҳама ба шумо хато мекунанд, шуморо беақл мехонанд ва бо хар рох механдад.
Минбаъд дар Онҳо менависанд, ки ба шумо лозим аст, ки ҳалкунандаҳоро аз рамзҳои манбаъ тартиб диҳед, пас худи or-tools аз рамзҳои манбаъ тартиб диҳед. Ҳанӯз ногуфта иҷро шуд! Ман SCIP-ро насб кардам, GLPK-ро насб кардам, аммо саволе ба миён омад, ки он дар ҳуҷҷатҳо тавсиф нашудааст, ки чӣ гуна ё асбобҳоро дар муҳити виртуалӣ насб кардан мумкин аст.
Ягона фармоне, ки дар докҳо навишта шудааст, python созед, бастаро дар саросари ҷаҳон дар система насб мекунад (ҳайратовар, дуруст?).
Бо вуҷуди ин, ман хушбахт будам: ҳангоми ҷустуҷӯи муҳандисӣ бо истифода аз усули маймунҳои беохир, ман тасодуфан фармони make help-ро чоп кардам ва он ба ман рӯйхати ҳамаи имконоти сохтани ё асбобҳоро дод, ки дар байни онҳо варианти сохтани чарх низ буд. баста. Ин фармони make python_package аст, агар чизе бошад (ман онро дар охир такрор мекунам). Пас, вақти ҷамъоварӣ ва ба кор андохтан расидааст?

Дар ҷустуҷӯи мушкилот
Ҳеҷ чиз дар марҳилаи сохтани асбобҳо кор намекунад, он аз китобхонаҳои бади GLPK шикоят мекунад.

Сохта бо SCIP бо параметрҳои ҳуҷҷатгузорӣ муваффақ аст, аммо or-tools ҳанӯз дар вақти воридот кор карданро рад мекунад.

Ман мустақилона роҳи ҳалли ин мушкилотро пайдо карда натавонистам, аз ин рӯ ман ба GitHub рафтам, то аз таҳиягарон пурсам, ки чаро насб мувофиқи дастурҳои онҳо дар ягон ҷо дар дохили коди онҳо хатогиҳо ба вуҷуд меорад.

Hmm, ташаккур барои тавзеҳот
Ҳангоме ки ман интизори ҷавоб дар 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
Манбаъ: will.com
