Prefatã
Programarea matematicã, ca o disciplinã bine conturatã în cadrul ºtiinþelor computaþionale, la care ne referim în aceastã monografie, utilizeazã concepte ºi instrumente matematice foarte avansate, care pe lângã faptul cã permite elaborarea de algoritmi pentru rezolvarea problemelor de optimizare, în acelaºi timp asigurã proprietãþile de convergenþã ºi de complexitate compu-taþionalã ale acestora. Dar, aceastã disciplinã nu este numai un simplu exerciþiu intelectual în sensul stabilirii unor algoritmi ºi a proprietãþilor lor, ci prin instrumentele informatice utilizate, precum ºi cele generate ºi impuse în comunitatea prelucrãrii avansate a informaþiilor, constituie o adevãratã forþã de producþie cu puternice implicaþii economico-sociale.
Domeniul modelãrii matematice ºi al optimizãrii este unul dintre cele mai active, cunoscând o dezvoltare fãrã precedent în ultimile decade, fiind prezent în majoritatea domeniilor de activitate. Datoritã complexitãþii problemelor tehnico-economice, modelate ca probleme de optimizare, pentru rezolvarea acestora pe lângã conlucrarea unor întregi echipe multidisciplinare este nevoie ºi de utilizarea unor resurse ºi instrumente de calcul performante. În domeniul hardware, aceasta se referã la utilizarea supercalculatoarelor (calculatoare vectoriale, cu memorie distribuiã, sau paralele). În domeniul software, eficienþa se referã la utilizarea unor concepte matematice avansate, considerarea structurii problemei, folosirea unor algoritmi bine justificaþi teoretic, robuºti, stabili numeric cu convergenþã garantatã care þin seama de arhitectura de calcul pe care sunt implementaþi.
În programarea
matematicã se disting douã direcþii de evoluþie.
Aparent acestea sunt oarecum independente, dar la o analizã profundã
ele se completeazã reciproc ºi în acelaºi timp prin
problematica tratatã ºi rezultatele obþinute dau substanþã
domeniului. Prima direcþie de acþiune constã în
modelarea matematicã pentru optimizare. Aici problematica constã
în definirea ºi construcþia unor instrumente matematico-informatice,
care sã permitã conceptualizarea, elaborarea, generarea ºi
întreþinerea unui model de programare matematicã. O
analizã atentã a acestei problematici ne aratã cã
aceasta la rândul ei constã din douã subprobleme. Prima
este aceea de a reprezenta matematic o porþiune a creaþiei
sub forma unei probleme de minimizare a unui criteriu, în raport
cu care analizãm comportarea acelei porþiuni de univers, în
virtutea unor restricþii, care definesc matematic funcþionarea
realitãþii în care suntem interesaþi. Aceasta
este subproblema modelãrii propriu-zise. A doua subproblemã
constã în construcþia acelor instrumente informatice
de care vorbeam pentru transmiterea modelului matematic optimizatoarelor.
Aceasta este subproblema generãrii modelului. A doua direcþie
de acþiune în programarea matematicã constã în
elaborarea de algoritmi pentru rezolvarea problemelor de optimizare. Aici
activitatea se structureazã în aceea de construcþie
propriu-zisã a algoritmilor de optimizare, precum ºi în
studiul lor privind convergenþa ºi complexitatea. Remarcãm
faptul cã prin aparatul matematic foarte rafinat cât ºi
prin tehnologiile informatice utilizate, atât modelarea matematicã
pentru optimizare cât ºi rezolvarea problemelor de optimizare
au atins un nivel de dezvoltare care demonstreazã maturitatea domeniului.
În fapt, maturitatea unei discipline
se dovedeºte prin gradul ei de formalizare, adicã prin aparatul
matematic cu care opereazã, precum ºi prin capaciatea acesteia
de a rezolva problemele care au generat-o. Cu cât conceptele ºi
aparatul matematic utilizat sunt mai evoluate cu atât reprezentarea
ºi rezolvarea problemelor asociate disciplinei respective sunt mai
fine. În acelaºi timp cu cât conceptele matematice utilizate
sunt mai mult „coborâte în computaþional“, adicã
sunt implementate în programe de calcul performante, cu atât
rezultatele sunt mai profunde.
Scopul monografiei. În scrierea acestei monografii intenþia a fost de a prezenta la un nivel informativ, suficient de detaliat, starea actualã a software-ului de modelare ºi optimizare, care implementeazã algoritmii de optimizare pentru diferite clase de probleme de programare matematicã. Astfel, se prezintã o multitudine, bine structuratã, de sisteme ºi pachete de programe pentru diferite clase de probleme de programare matematicã, insistându-se asupra autorilor, caracteristicilor acestora, algoritmul implementat, adresa paginii web unde se gãsesc aceste pachete etc.
Structura monografiei.
Materialul acestei monografii, structuratã în douãzeci
de capitole, se referã la trei problematici fundamentale ale programãrii
matematice. În primul rând se prezintã sistemele de
modelare ºi optimizare cu care cei interesaþi pot conceptualiza,
elabora, întreþine ºi rezolva modele de programare matematicã.
În al doilea rând se detaliazã limbajele de programare
matematicã. Acestea sunt construcþii informatice foarte complexe
care permit formularea modelelor de optimizare într-o manierã
algebricã ºi translatarea acesteia într-o reprezentare
acceptabilã de pachetele de optimizare. În al treilea rând
se prezintã pachete de programe ºi subrutine pentru rezolvarea
celor mai importante clase de probleme de programare matematicã.
Primul capitol
are un caracter introductiv. Aici cititorul este introdus foarte sumar
în problematica programãrii matematice prin precizarea tipurilor
de probleme de optimizare, optimizare ºi calcul de înaltã
performanþã, precum ºi câteva aspecte ºi consideraþii
asupra modelãrii ºi optimizãrii. Capitolul 2 este dedicat
prezentãrii sistemelor de modelare ºi optimizare. În
acest context se prezintã un numãr de 11 sisteme de modelare
cu capabilitãþi de optimizare liniarã sau neliniarã.
Capitolul 3 se concentreazã asupra limbajelor de modelare orientate
algebric pentru programarea matematicã. În esenþã
un limbaj de modelare este un sistem notaþional care permite combinarea
în acelaºi cadru lingvistic a cunoaºterii declarative ºi
a celei algoritmice. Fiecare sistem de modelare ºi optimizare are
propriul lui limbaj de modelare. De aceea existã o legãturã
foarte strânsã între sistemele de modelare ºi optimizare
ºi limbajele de programare matematicã. Capitolul 4 detaliazã
pachetele de programe pentru programarea liniarã, care implementeazã
atât metoda simplex cât ºi metode de punct interior. Acestea
sunt piese informatice deosebit de sofisticate care implementeazã
algoritmi avansaþi de algebrã liniarã. În capitolul
5 se prezintã câteva pachete de analizã a modelelor,
în sensul simplificãrii sau reducerii lor dimensionale, cu
scopul de a facilita procesul de rezolvare a acestora. De obicei problema
preprocesãrii modelelor este tratatã ca o etapã specialã,
bine individualizatã, în cadrul pachetelor profesionale de
optimizare. Totuºi, în cadrul unor sisteme de modelare ºi
optimizare existã pachete dedicate analizei, care pe lângã
reducerea sau simplifiacrea expresiei algebrice a modelului furnizeazã
informaþii asupra soluþiei problemei. Capitolul 6 este dedicat
optimizãrii fãrã restricþii. În acest
sens se prezintã condiþiile de optimalitate pentru optimizare
fãrã restricþii, metode de optimizare pentru aceastã
clasã de probleme, precum ºi pachete de programe specializate
pentru rezolvarea acestor probleme. Urmãtorul capitol detaliazã
4 pachete pentru problema celor mai mici pãtrate. Capitolul 8 considerã
rezolvarea sistemelor de ecuaþii algebrice neliniare, prin prezentarea
câtorva pachete specializate, dedicate acestei probleme. Capitolul
9 prezintã informaþii asupra pachetelor de optimizare
cu restricþii margini simple. Programarea pãtraticã
este consideratã în capitolul 10 în care se detaliazã
mai multe pachete de programe dedicate acestei clase de probleme. Optimizarea
cu restricþii constituie subiectul capitolului 11 unde se prezintã
cu numeroase detalii 32 de pachete de programe. Totodatã aici se
prezintã câteva chestiuni asupra condiþiilor de optimalitate,
principalele metode de rezolvare a problemelor de optimizare cu restricþii,
precum ºi principiile care stau la baza algoritmilor de optimizare.
Capitolul 12 prezintã software-ul specializat pentru programarea
geometricã. Deºi programele geometrice se pot rezolva cu pachetele
generale de optimizare cu restricþii, totuºi forma foarte particularã
a problemei permite elaborarea de algoritmi foarte specializaþi pentru
aceastã clasã de programe. Subiectul capitolului 13 este
optimizarea în reþele, unul dintre cele mai bogate domenii
în care programarea matematicã are contribuþii esenþiale.
Capitolele 14 ºi 15 detaliazã pachetele pentru programarea
semidefinitã ºi respectiv programarea conicã de ordinul
doi. Aceste tipuri de probleme sunt de datã relativ recentã.
Importanþa lor rezidã în faptul cã clase mari
de probleme de optimizare ºi din teoria sistemelor dinamice pot fi
modelate ºi rezolvate eficient (polinomial) ca programe semidefinite
sau conice de ordinul doi. În capitolele 16 ºi 17 se prezintã
informaþii asupra pachetelor de programe pentru programarea liniarã
în numere întregi ºi a programãrii neliniare mixte.
În capitolul 18 se prezintã pachetele de programare cu mai
multe funcþii obiectiv. Optimizarea globalã, unul dintre cele
mai dificile capitole din teoria ºi practica optimizãrii, este
consideratã în capitolul 19. Ultimul capitol prezintã
bibliotecile de optimizare, care într-un anumit sens pot constitui
suportul tehnic al sistemelor de modelare ºi optimizare prezentate
în capitolul 2. Fiecare pachet de programe este introdus prin autori,
algoritm, pagina web unde se gãsesc informaþii ºi prezentarea
acestuia, caracteristici definitorii privind: algoritmul implementat, tehnica
de algebrã liniarã utilizatã, limbajul în care
este elaborat, interfaþare cu limbaje de programare matematicã,
precum ºi o scurtã listã de referinþe bibliografice.
Lucrarea are o bibliografie actualizatã ºi se încheie
cu un index de termeni ºi autori.
Adresabilitate. Parcurgerea acestei monografii cere cunoºtinþe avansate în domeniul programãrii matematice. În principal se pot identifica douã clase mari de utilizatori. Prima constã în specialiºti în domeniul programãrii matematice interesaþi de posibilitãþile de rezolvare ale problemelor de programare matematicã. A doua clasã constã în specialiºti din alte domenii de activitate interesaþi în capabilitãþile programãrii matematice în ceea ce priveºte modelarea matematicã pentru optimizare, ºi care înþeleg utilizarea modelelor de optimizare în domeniul lor de activitate. Specialistul în programare matematicã va gãsi o serie de informaþii utile asupra software-ului actual de optimizare ºi ceea ce este foarte important adresa de web a acestui software. Analiºtii din domeniul cercetãrilor operaþionale ºi al ºtiinþei managementului, planificatori, programatori, ingineri, doctoranzi etc. vor gãsi informaþii foarte utile asupra capabilitãþilor tehnicilor de optimizare ºi a software-ului asociat.
Mulþumiri.
În mod firesc mulþumirile noastre se îndreaptã
cãtre Fundaþia „Alexander-von-Humboldt”, care cu o deosebitã
generozitate ºi solicitudine a ºtiut sã ne sprijine moral
ºi material de-a lungul celor peste doi ani petrecuþi în
cãteva universitãþi din Germania, precum ºi pentru
ajutorul acordat de-a lungul timpului dupã efectuarea bursei. De
asemenea ne îndreptãm mulþumirile cãtre colegii
ºi prietenii care ne-au sprijinit ºi încurajat în
elaborarea acestei monografii. Dar nimic nu ar fi fost posibil fãrã
afecþiunea ºi înþelegerea pe care le-am gãsit
la soþia ºi la copiii mei, care mi-au apreciat ºi susþinut
intenþia, dorinþa ºi munca de a concretiza efortul nostru
de-a lungul anilor.
Bucureºti,
Ianuarie 2002
Neculai Andrei