Principiile programării dinamice tradiționale

Programarea dinamică (cunoscută și sub denumirea „planificare dinamică-mecanice“) are o metodă specială de soluții de optimizare adaptate în mod specific la așa-numitul „mai multe etape“ (sau „mai multe etape“) operațiuni. Bazele teoretice ale acestei metode sunt discutate în [2], [3], pp 245 - .. 265, și [4], pp 142 - 150, prelevate din aceleași exemple respective.

Imaginați-vă o operație Q, împărțită într-o serie de „etape“ succesive sau „etape“, cum ar fi industria de elf de-a ta pentru un număr de ani; sau grup de aeronave mai multe benzi de apărare de corelare; sau aceeași secvență de etape utilizate în aparatul de control. Unele operații (cum ar fi de mai sus), în mod natural subdivizată în trepte; în unele diviziune trebuie să fie introduse în mod artificial, de exemplu, de orientare anti-rachetă la procesul țintă poate și ar trebui să fie împărțite în etape, fiecare dintre care ia ceva timp.

Luați în considerare funcționarea Q constând din m trepte (etape). Să eficacitatea operațiunii se caracterizează printr-o anumită măsură de W, care, pentru concizie ne vom referi la „câștiga“. Să presupunem că câștigul W funcționare zavsyu constă în câștiguri în etape separate:

În cazul în care W are această proprietate, este numit un criteriu aditiv.

Orice problemă cu mai multe etape pot fi rezolvate în moduri diferite: fie uita-te o dată toate elementele unei decizii cu privire la toate m, sau a construi un control optim, pas cu pas, fiecare pas optimizare calcul este doar un singur pas. De obicei, a doua metodă de optimizare este mai ușor decât prima, mai ales atunci când un număr mare de etape. Când se folosește prima metodă de servicii informatice este mai profitabilă, iar în viitor vom folosi, dar mai întâi să ia o privire la programarea dinamică tradițională.

Metoda de programare dinamică este ideea de optimizare treptată, incremental. Optimizare-TION de un singur pas este de optimizare, de obicei, mai simplă a întregului pro-cedarii: este mai bine, se pare, o mulțime de timp pentru a rezolva o sarcină relativ simplă decât o dată - complicat.

La prima vedere, ideea poate părea o banalitate-ordinare. De fapt, ceea ce pare a fi simplu: în cazul în care este dificil op operațiunea raționalizate în ansamblu, se descompune în mai multe etape. -Cage dy o astfel de mișcare ar separa o operațiune de mică, Opti-zată că nu este dificil. Este necesar să se aleagă în această etapă este gestionarea, la eficiența acestei etape a fost o taxă de mac maximă. Nu-i așa? Nu, deloc. Principiul dinamic de programare-TION nu implică faptul că fiecare pas este optimizat separat, independent de celelalte. Dimpotrivă, consiliile pas Lenie ar trebui să fie ales cu previziune, cu toate consecințele sale în viitor. Care este utilizarea dacă vom alege în această etapă de management, în care eficiența acestei etape este maximă în cazul în care mutarea ne va lipsi de posibilitatea unui câștig bun pe următorii pași?

Să presupunem, de exemplu, grupuri de lucru planificate întreprinderi industriale-guvernamentale, din care o parte este ocupat de eliberarea de bunuri de consum, iar celălalt produs pentru a le utilaje. Sarcina operațiunii - pentru a obține de ani de zile astfel încât valoarea maximă a producției de bunuri de consum. Să presupunem că planificate kapitalovlo-zheniya pentru primul an. Pe baza intereselor înguste ale acestei etape (a anului), am avea toți banii pentru a investi în producția de bunuri de larg consum. Dar dreptul de a fi o soluție în ceea ce privește eficiența în exploatare TSE-rupere? Evident, nu. Această decizie - risipitoare, Nedalniy-proeminent. Având în vedere pe viitor, este necesar să se aloce o parte din fonduri, precum și pe mașinile de producție. Din acest volumul producției în primul an, desigur, va scădea, dar condițiile de creștere în următorii ani.

Un alt exemplu. Să presupunem că, în problema de stabilire a traseului de cale ferată de la A la B, vom înșela ideea imediat dispozitivul cunoștință pentru cea mai simplă (mai ieftin) direcție. Care este utilizarea de economisire în prima etapă, în cazul în care, în viitor, el ne (la propriu sau la figurat) va conduce în „mlaștină“?

Deci, atunci când se planifică o operație de mai multe etape, este necesar să se aleagă conducerea la fiecare pas, cu toate consecințele sale în viitor este încă pași viitoare. Managementul la etapa i-lea nu este selectată, astfel încât câștigul este în această etapă a fost maxi-Malin, și, astfel încât a fost suma maximă a câștigurilor din toate districtul și etapele rămase înainte de sfârșitul plus.

Cu toate acestea, această regulă are o excepție. Dintre toate Sha-gov au una care poate fi programat pur și simplu, fără viitor lyadki og. Ce este un pas? Evident, ultima! Acest pas este singura, poate fi planificat, astfel încât el însuși, ca atare, a adus cel mai mare beneficiu.

Prin urmare, procesul de programare dinamic este de obicei, dar se desfășoară de la capăt la începutul: în primul rând planuri Xia ultima, pas m-lea. Și planul său, dacă noi nu știm ce rezultatul penultima, t. E. Nu știu condițiile în co-toryh am ajuns la ultimul pas?

Aici începe cel mai important lucru. Planificarea depozitelor de ultimul pas, aveți nevoie pentru a face diferite ipoteze cu privire la ceea ce sa încheiat penultima (t-1) lea pas, și pentru fiecare dintre aceste ipoteze pentru a găsi controlul condițională-ing optim la pas m-lea ( „condiționată“, deoarece acesta este selectat pe baza condiției ca penultima etapa con chilsya cutare).

Să presupunem că ne-am făcut și pentru fiecare dintre OMS, se poate presupune penultima etapă de control convențional cunoscut-Opti mal și câștig-Opti mal condiționată corespunzătoare la etapa m-lea. Acum putem optimiza managementul penultim (t-1) th pas. face din nou toate ipotezele posibile despre ce con chilsya anterior (t -2) th pas, și pentru fiecare dintre aceste pre pozițiile pentru a găsi un control (t -1) -lea pas, atunci când co-torusului pentru câștigarea ultimele două etape (din care m-lea-op are raționalizate) maxim. Deci, vom găsi pentru fiecare rezultat (t -2) -lea pas de gestionare condiționată optimă (t-1) -lea pas și câștig optim condiționată pentru ultimele două etape. Mai mult, „suport departe“ optimiza managementul (t -2) lea pas, și așa mai departe. E. Până când vom ajunge la prima.

Să presupunem că toate operațiile de control suboptimal și câștiguri suboptimale pentru toate „coada“ a procesului (la toate etapele, de la aceasta până la sfârșit), ne sunt cunoscute. Acest lucru înseamnă că știm ce să facem, cum să gestioneze în acest SHA-ze și ceea ce obținem pentru ea în „coada“, în orice stare am fost în etapa de început. Acum nu mai putem construi un management suboptimal și optimă, pur și simplu x * și pentru a găsi nici un suboptimal, ci pur și simplu cel mai bun payoff W *.

De fapt, să ne spui de sistem în ce stare S0 a fost controlată (S Entitate de Management) la începutul primului pas. Apoi, putem selecta optim de control x1 *, în prima etapă. Aplicând aceasta, vom schimba starea sistemului pentru un nou S1 *; În această stare, am ajuns la al doilea pas. .. Apoi, știm, de asemenea, condiționată de control optim al x2 *, care până la sfârșitul celei de a doua etapă a sistemului în starea S2, etc. În ceea ce privește câștigul optim W întreaga operațiune, este deja cunoscut: tocmai pe baza maxim noi managementul a ales în prima etapă.

Astfel, în timpul procesului de optimizare dinamică de programare de control meto-multipas casa „traversat“ de două ori: prima dată - de la capăt la început, prin care un control optim sunt câștiguri optime contingente și contingente pentru procesul rămase „coada“; a doua oară - de la început până la sfârșit, atunci când putem doar „citi“ sfaturi gata făcute și pentru a găsi Bezus-Karlovna optim de control x *, constând din optim x1 de control pas *, x2 *, ... * .hm.

Primul pas de optimizare constrânsă - mult mai dificilă și al doilea prelungit. A doua etapă necesită aproape nici o pre-calcul suplimentar.

Principiul general care stă la baza soluției TION a tuturor problemelor de programare dinamică (de multe ori la legare „principiul optimalității“): indiferent de starea sistemului S înainte de următorul SHA-d, este necesar să se aleagă conducerea în această etapă, astfel încât câștigul la acest pas plus câștig optim la toate etapele ulterioare a fost cea mai mare.

Etapele de rezolvare a problemelor de programare dinamice:

1. Se selectează parametrii (variabilele de stat) care caracterizează S-conductive stare a sistemului controlat, în fața fiecărei etape.

2. Explode operațiune în etape (etape).

3. Se determină un set de controale pași xi pentru fiecare pas, și restricțiile impuse asupra lor.

4. Determina care aduce premiul I la i-lea pas-consilii Lenie xi, în cazul în care înainte de acest sistem a fost într-o stare de S, adică Vo gheață-SAT „funcție de valoare“ ..:

5. Se determină modul în care starea sistemului S sub influența xi de control pe i-lea pas: se mută într-un nou stat

6. Notați principala ecuația recurentă dinamică programării cer, exprimând optim câștig condițional-th Wi (S) (începând de la al i-lea pas spre sfârșit) prin funcția deja cunoscută Wi + l (S):

Aceasta corespunde obține mod sistematic condițional-yn optime pentru etapa xi (S) i-lea (subliniază faptul că, în deja cunoscută funcția Wi + 1 (S) în loc de S trebuie să înlocuiască o stare alterată.

7. Produce optimizarea condițional ultima (m -lea) etapă, gama întrebam de stări S, din care este posibil ca într-un singur pas pentru a ajunge la starea finală, calculul pentru fiecare câștig optim condiționată de formula

și găsirea unui xm control optim al condițional (S), pentru care se atinge acest nivel maxim.

8. Efectuați o optimizare constrânsă (t-1) -lea, (t -2) -lea etc. Etapele conform formulei (3.3), prin fixarea i = (m-1) (m -2). și pentru fiecare dintre etapele indică xi optim de management al condițional-ing (S). în care se atinge maximul.

Rețineți că, în cazul în care starea sistemului la momentul inițial, știm (și acest lucru se întâmplă de obicei), atunci primul pas variază în starea de TVA a sistemului nu este necesar - trebuie doar să găsească optimă câștig-TION pentru starea s0 inițială. Acesta este câștigul optim pentru întreaga operațiune

9. Efectuați optimizarea controlului absolut, „Chi-topire“ recomandări la fiecare pas. Mark a găsit un control optim în etapa întâi = x1 * x1 * (S0); schimba starea formulei (3.2); pentru re-NAI dennogo capabil să găsească controlul optim în a doua etapă, x2 *, și așa mai departe. e. până la sfârșit.

Pentru rezolvarea problemelor de programare dinamice, aplicam Excel Services „soluție de căutare“, ceea ce va permite reducerea costurilor forței de muncă mai multe în comparație cu tehnologia tradițională.