/ / Programarea neliniară este una dintre componentele programării matematice

Programarea neliniară este una dintre componentele programării matematice

Programarea neliniară face parte dinprogramare matematică, în care o funcție neliniară este reprezentată de anumite constrângeri sau de o funcție obiectivă. Sarcina principală a programării neliniare este de a găsi valoarea optimă a unei funcții obiective date cu un anumit număr de parametri și constrângeri.

Problemele de programare neliniare diferă desarcini cu un conținut liniar al rezultatului optim nu numai în zona care are anumite limitări, ci și în afara acesteia. Aceste tipuri de probleme includ acele sarcini de programare matematică care pot fi reprezentate atât de egalități, cât și de inegalități.

Programarea neliniară este clasificată înîn funcție de varietatea funcției F (x), funcția de constrângere și dimensiunea vectorului de soluție x. Deci, numele sarcinii depinde de numărul de variabile. Atunci când se utilizează o singură variabilă, programarea neliniară poate fi efectuată utilizând optimizarea fără restricții cu un singur parametru. Când numărul de variabile este mai mult de una, puteți utiliza optimizarea multiparametru fără restricții.

Pentru a rezolva probleme de liniaritate, utilizațimetode standard de programare liniară (de exemplu, metoda simplex). Dar cu o metodă generală neliniară de soluție nu există, este aleasă în fiecare caz individual și depinde și de funcția F (x).

Programarea neliniară este frecventă în viața de zi cu zi. De exemplu, aceasta este o creștere disproporționată a costurilor față de numărul de bunuri produse sau cumpărate.

Uneori, pentru a găsi soluția optimă înproblemele programării neliniare încearcă să efectueze o aproximare la problemele liniare. Un exemplu este programarea pătratică, în care funcția F (x) este reprezentată de un polinom de gradul doi în raport cu variabilele, în timp ce constrângerile sunt liniare. Al doilea exemplu este utilizarea metodei funcțiilor de penalizare, a cărei utilizare, în prezența anumitor restricții, reduce sarcina de a căuta un extrem la o procedură similară fără astfel de restricții, care este mult mai ușor de rezolvat.

Cu toate acestea, dacă îl analizăm în ansamblu, atunci neliniarulprogramarea este o soluție la probleme de complexitate calculată crescută. Foarte des, atunci când le rezolvați, trebuie să utilizați metode de optimizare aproximative. Un alt instrument puternic care poate fi oferit pentru rezolvarea acestui tip de problemă sunt metodele numerice care vă permit să găsiți soluția potrivită cu o precizie dată.

După cum sa menționat mai sus, programarea neliniară necesită o abordare specială individuală, care trebuie să țină seama de specificul său.

Există următoarele tehnici de programare neliniare:

- Metode de gradient bazate pe proprietățigradient funcțional la un punct. Cu alte cuvinte, este un vector de derivate parțiale calculate la punctul luat ca indicator al direcției celei mai mari creșteri a funcției în vecinătatea acelui punct.

- Metoda Monte Carlo, care determinăun paralelipiped de a n-a dimensiune, incluzând un set de planuri, pentru modelarea ulterioară a punctelor N aleatorii cu o distribuție uniformă în acest paralelipiped.

- Metoda de programare dinamică este redusă la o problemă de optimizare a sarcinilor multidimensionale la o dimensiune mai mică.

- Metoda de programare convexă este implementată îngăsirea valorii minime a unei funcții convexe sau a valorii maxime a unui concav pe o parte convexă a unui set de planuri. În cazul în care setul de modele este un poliedru convex, atunci se poate aplica metoda simplex.