• Blog/Știri
  • Pareri
  • Tutoriale
  • Stiri de top
  • Companii
  • Cursuri
  • Seturi de date
  • Educaţie
  • Evenimente (online)
  • Locuri de munca
  • Software
  • Webinarii

Cunoașterea unor astfel de tehnici de optimizare este extrem de utilă pentru oamenii de știință a datelor și practicienilor de învățare automată (ML), deoarece optimizarea discretă și continuă se află în centrul sistemelor moderne de ML și AI, precum și a proceselor de analiză a afacerii bazate pe date.

programare

Introducere


Optimizarea discretă este o ramură a metodologiei de optimizare care se ocupă de cantități discrete, adică funcții necontinue. Este destul de omniprezent în aplicații la fel de diverse, cum ar fi investiții financiare, planificarea dietei, procesele de fabricație și selecția jucătorilor sau a programului pentru sporturi profesionale.

Programare liniară și (mixtă) întreagă sunt tehnici de rezolvare a problemelor care pot fi formulate în cadrul optimizării discrete.

Cunoașterea unor astfel de tehnici de optimizare este extrem de utilă pentru oamenii de știință a datelor și practicienilor de învățare automată (ML), deoarece optimizarea discretă și continuă se află în centrul sistemelor moderne de ML și AI, precum și a proceselor de analiză a afacerii bazate pe date.

Există multe instrumente de optimizare comercială, dar experiența practică cu un mod programatic de optimizare este de neprețuit.

Există o lungă și bogată istorie a dezvoltării teoretice a unor solutori robusti și eficienți pentru probleme de optimizare. Cu toate acestea, concentrându-ne pe aplicații practice, vom trece peste acest istoric și vom trece direct la partea de învățare a utilizării instrumentelor programatice pentru a formula și rezolva astfel de probleme de optimizare.

Există multe pachete excelente de optimizare în Python. În acest articol, vom vorbi în mod special despre PuLP. Dar, înainte de a merge la biblioteca Python, permiteți-ne să înțelegem felul problemei pe care o putem rezolva cu ea.

Un exemplu de problemă (sau două)


Să presupunem că ești responsabil cu planul de dietă pentru masa de prânz de liceu. Sarcina dvs. este să vă asigurați că elevii obțin echilibrul corect al nutriției din alimentele alese.

Cu toate acestea, există unele restricții în ceea ce privește bugetul și varietatea de alimente care trebuie să fie în dietă pentru ao face interesantă. Următorul tabel prezintă, în detaliu, valoarea nutrițională completă pentru fiecare produs alimentar și aportul zilnic maxim/minim.

Problema discretă de optimizare este simplă: Minimizați costul prânzului dat de aceste constrângeri (pe calorii totale, dar și pe fiecare componentă nutrițională, de exemplu colesterol, vitamina A, calciu etc.

În esență, într-un limbaj matematic obișnuit, problema este,

Observați că relațiile de inegalitate sunt toate de natură liniară, adică variabilele f sunt înmulțiți cu coeficienți constanți și termenii rezultați sunt delimitați de limite constante și asta face ca această problemă să fie rezolvabilă printr-o tehnică LP.

Vă puteți imagina că acest tip de problemă poate apărea strategie de afaceri extrem de frecvent. În loc de valori nutriționale, veți avea profituri și alte tipuri de randamente ale afacerii, iar în locul prețului/porției, puteți avea costuri ale proiectului în mii de dolari. În calitate de manager, sarcina dvs. va fi să alegeți proiectele, care să ofere rentabilitate maximă a investiției fără a depăși un buget total de finanțare a proiectului.

Problemă de optimizare similară poate apărea într-un planul de producție din fabrică de asemenea, unde capacitatea maximă de producție va fi funcția mașinilor utilizate și produsele individuale vor avea diferite caracteristici de profit. Ca inginer de producție, sarcina dvs. ar putea fi să alocați cu atenție resursele mașinii și forței de muncă pentru a maximiza profitul, satisfăcând în același timp toate constrângerile de capacitate.

În esență, caracterul comun dintre aceste probleme din domenii dispar este că acestea implică maximizarea sau minimizarea unei linii funcție obiectivă, supus unui set de liniare inegalitate sau constrângeri de egalitate.

Pentru problema dietei, funcția obiectivă este costul total pe care încercăm să-l reducem. Constrângerile de inegalitate sunt date de limitele minime și maxime pe fiecare dintre componentele nutriționale.

PuLP - o bibliotecă Python pentru optimizare liniară


Există multe biblioteci în ecosistemul Python pentru acest tip de probleme de optimizare. PuLP este un open-source programare liniară (LP) care folosește în mare măsură sintaxa Python și este livrat împreună cu mulți rezolvatori standard din industrie. De asemenea, se integrează frumos cu o gamă de solutori open source și comerciali.
Puteți să-l instalați utilizând pip (și, de asemenea, câteva soluții suplimentare)

Vedeți un videoclip frumos despre rezolvarea programării liniare aici.