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