Sunteți pe pagina 1din 104

INTRODUCERE

Cibernetica a pus in evidenţă un mod alternativ de rezolvare a problemelor


de către sistemele finaliste, în raport cu modul decizional. Ceea ce a făcut ca
cibernetica să fie interesantă pentru ştiinţele sociale şi umane este observaţia că
realitatea social-umană nu este nici ea lipsită de mecanisme de reglare de tip
cibernetic. De aici, întrebarea dacă nu cumva cibernetica poate arunca o lumină
inedită asupra proceselor de luare a deciziilor.
Pentru o bună perioadă de timp managementul a fost considerat o adevărată
artă, talent însuşit prin învăţarea din încercări şi erori. O varietate de stiluri
individuale, deseori bazate pe creativitate, raţionament uman, intuiţie si experienţă
au fost folosite în rezolvarea problemelor de acelaşi tip, şi aceasta în defavoarea
metodelor cantitative si a abordărilor ştiinţifice. Complexitatea afacerilor şi a
mediului de desfăşurare a acestora a crescut însă simţitor în ultimele decenii.
Există câteva cauze majore care au determinat această creştere a complexităţii -
numărul de soluţii posibile foarte mare; dificultatea prezicerii consecinţelor pe
termen lung datorită creşterii gradului de incertitudine, efectele erorilor în luarea
deciziilor pot fi dezastruoase datorită complexităţii operaţiilor şi reacţiilor în lanţ
pe care o eroare poate să o cauzeze în diverse sectoare ale nivelelor micro şi
macroeconomic.
Una din caracteristicile oricărui sistem socio-economic, în cadrul căruia se
înscrie şi firma, o constituie finalitatea, adică tendinţa de a evolua în vederea
realizării anumitor obiective. Admiţînd universalitatea legii entropiei, potrivit
căreia în natură ordinea tinde să se transforme în dezordine, înseamnă că starea
entropică este caracteristica şi sistemelor socio-economice. În aceste condiţii,
societăţile comerciale, ca sisteme, trebuie să se adapteze permanent influenţei
unor factori perturbatori - exogeni sau endogeni – care se opun sau îngreunează
realizarea obiectivelor prestabilite. Această adaptare, autoreglare a funcţionării

2
firmei se realizează prin intermediul activităţii managerilor care în esenţă
reprezintă o înlănţuire de decizii interdependente.
Decizia constituie punctul central al activităţii de management întrucât ea se
regăseşte în toate funcţiile acestuia, şi mai mult, integrarea firmei în cadrul
mediului depinde de calitatea deciziei. În acelaşi timp, calitatea procesului
decizional influenţează reducerea costurilor, eficienţa folosirii fondurilor,
creşterea profitului etc.

Referitor la locul deciziei în procesul de management, considerăm că aceasta


nu reprezintă o funcţie întrucât rezultatul procesului decizional se concretizează în
cadrul fiecărei funcţii a managementului. Astfel, în domeniul previziunii, ca
funcţie a managementului, rezultatul procesului decizional se concretizează în
variante de strategie, de plan sau de program.

Decizia, componentă primară a sistemului decizional, constituie un element


esenţial al managementului, fiind instrumentul său specific de exprimare. În fond,
nivelul calitativ al conducerii unei organizaţii se manifestă prin deciziile elaborate
si aplicate.

Decizia de conducere reprezintă procesul de alegere a unei linii de acţiune în


scopul realizării unor obiective, prin a cărei aplicare se influenţează activitatea a
cel puţin unei alte persoane decât decidentul [Nicolescu98].

Deciziile manageriale, spre deosebire de deciziile generale, se referă la


misiunea, strategiile si politica pe termen lung ale firmei, coordonarea
principalelor domenii de activitate, atingerea eficienţei dorite, soluţionarea si
medierea conflictelor, măsuri de maximă importanţă pentru viitorul firmei.

În practică decizia managerială îmbracă două forme: actul decizional si


procesul decizional. Actul decizional se referă la situaţii decizionale de
complexitate redusă, cu caracter repetitiv sau în care variabilele implicate sunt

3
foarte bine cunoscute de către decident. Procesul decizional implică un consum
mare de timp, pe parcursul căruia se culeg şi analizează informaţii, se consultă
persoane în vederea conturării situaţiei decizionale. În esenţă procesul decizional
constă dintr-un ansamblu de etape prin intermediul cărora se pregăteşte, adoptă,
aplică şi evaluează decizia managerială.

Pentru a conduce la realizarea obiectivelor stabilite, deciziile manageriale


trebuie să îndeplinească o serie de criterii, dintre care cele mai importante sunt
considerate următoarele:

Fundamentarea ştiinţifică a deciziei. Aceasta conduce la evitarea


improvizaţiilor şi a subiectivismului în procesul de luare a deciziilor.

Legalitatea deciziei. Adoptarea deciziei trebuie făcută doar de către persoane


care sunt investite cu drept legal şi împuternicire în acest sens.

Completitudinea deciziei. Decizia trebuie să cuprindă toate elementele


necesare înţelegerii corecte şi implementării acesteia.

Oportunitatea deciziei. Este de preferat o decizie bună luată în timp util unei
decizii foarte bune luate cu întârziere.

Eficienţa deciziei. Se urmăreşte obţinerea unui efect cît mai bun pentru un
anumit efort.

Coordonarea deciziei. Se asigura astfel că deciziile privind diferitele


departamente ale organizaţiei să fie compatibile între ele şi să conducă la
realizarea obiectivului de ansamblu al întreprinderii.

Simon grupează deciziile în funcţie de măsura în care procesul decizional


poate fi pre-planificat, în decizii programate respectiv neprogramate [Simon77].

4
Tip de Caracteristici
decizie
Programate Repetitive, de rutină, reguli şi procese decizionale
Structurate cunoscute, deseori automate, de obicei presupun
"lucruri" mai degrabă decât oameni, pot fi delegate la
nivele inferioare ale organizaţiei.
Neprogramate Noi, nerutiniere, regulile de decizie nu sunt
Nestructurate cunoscute, au un grad ridicat de incertitudine, nu pot fi
delegate la nivele inferioare, pot implica "lucruri", dar
întotdeauna implică oameni.
 

Aceste două categorii trebuie considerate ca două extreme ale domeniului


decizional. În realitate există o serie de decizii care posedă caracteristici din
ambele grupe.

O altă clasificare a deciziilor se poate face în funcţie de gradul de cunoaştere


al decidentului referitor la rezultatul diferitelor alternative. Astfel, există decizii în
condiţii de certitudine, risc şi incertitudine.

În cazul condiţiilor de certitudine şi risc există diferite tehnici de optimizare,


însă în cazul incertitudinii, teoretic nu există suficiente date pentru ca decizia să se
poată lua. Motivul constă în faptul că, prin definiţie, luarea deciziei înseamnă
alegerea între alternative, iar dacă acestea nu sunt cunoscute, alegerea nu se poate
face. În practică însă, decizia se ia prin utilizarea rţionamentului şi a informaţiilor

5
disponibile, estimării valorilor si a probabilităţilor de apariţie a rezultatelor
posibile. Astfel, practic, incertitudinea se transformă în risc.

Starea Explicaţii
rezultatului
Certitudine Există un singur rezultat pentru fiecare alternativă
şi există cunoştinţe complete si exacte referitoare la el.
Risc Exista mai multe rezultate posibile pentru fiecare
alternativă şi fiecăreia-i pot fi ataşate o valoare şi o
probabilitate de realizare a acesteia.
Incertitudine Numărul rezultatelor, valorile si probabilităţile nu
sunt cunoscute.

Procesul decizional este definit ca fiind o serie de paşi care încep cu analiza
informaţiei, continuă cu selectarea dintre mai multe alternative si verificarea
alternativei selectate pe problema aflată în studiu.

În orice proces decizional de management se regăsesc următoarele elemente:

       Decidentul este reprezentat de persoana sau grupul de persoane care


urmează să aleagă varianta optimă din cele posibile. În cazul problemelor
complexe decizia se ia de către un grup de persoane, iar în cazul deciziilor
curente, operative deciziile sunt luate de o singură persoana. Calitatea deciziei
depinde de calităţile, cunoştinţele, aptitudinile decidentului.
  Problema decizională. Decizia se adoptă pentru soluţionarea unei
probleme decizionale. În absenţa problemei decizia nu are obiect.
Mulţimea variantelor decizionale poate fi finită sau infinită. Cuprinde
totalitatea posibilităţilor de soluţionare a problemei decizionale. Definirea acestei
mulţimi necesită informaţii din interiorul şi din afara organizaţiei, gândire

6
managerială creatoare, consultarea experţilor, efectuarea de cercetări. În
momentul identificării problemei decizionale, decidentul conştientizează existenţa
mai multor cursuri de acţiune posibile. El poate cunoaşte aceste alternative prin
implicare directa sau prin intermediul altor persoane. Alegerea variantei optime se
face după o serie de metode corespunzătoare modelului matematic care
caracterizează situaţia decizională.
Mulţimea criteriilor decizionale include o serie de caracteristici pe baza
cărora se evaluează şi compară variantele decizionale, în vederea adoptării celei
mai raţionale decizii. Mulţimea criteriilor decizionale este reprezentată de
punctele de vedere ale decidentului care izolează aspecte ale realităţii economice
în cadrul procesului decizional. Criteriile decizionale se caracterizează prin mai
multe niveluri, corespunzătoare diferitelor variante şi/sau stări ale condiţiilor
obiective. Luarea în considerare, într-o situaţie decizională, a mai multor criterii,
trebuie să se facă ţinînd cont de posibilitatea divizării si grupării criteriilor,
precum şi de proprietatea de interdependenţă a acestora. De exemplu, profitul
poate fi divizat pe produse, subunităţi etc. De asemenea, profitul si costul pot fi
grupate într-un criteriu global reprezentat de rentabilitate. Două criterii sunt
independente dacă fixarea unui obiectiv din punct de vedere al unui criteriu nu
influenţează stabilirea unui alt obiectiv, din punct de vedere al celui de-al doilea
criteriu. În managementul firmei pot fi utilizate criterii de tipul: profit, preţ,
calitate, termen de recuperare a investiţiei, durata ciclului de producţie, gradul de
utilizare a capacităţii de producţie etc.
Mediul ambiant (condiţiile obiective) este reprezentat de ansamblul
condiţiilor interne si externe care sunt influenţate si influenţează decizia. În
mediul ambiant se pot manifesta, pentru o anumita situaţie decizională, mai
multe stări ale condiţiilor obiective. Mediul ambiant se caracterizează printr-o
mobilitate deosebită. În cadrul condiţiilor interne se observă o perfecţionare a
pregătirii personalului, perfecţionare a sistemului informaţional, iar în ceea ce
priveşte condiţiile externe, se înregistrează modificări în legislaţia ţării, modificări

7
în relaţiile firmei cu diverse organisme. Evoluţia mediului ambiant se manifestă
uneori contradictoriu în ceea ce priveşte influenţa asupra procesului de elaborare a
deciziilor în cadrul firmei. Astfel, creşterea complexităţii activităţii firmei
influenţează în mod nefavorabil fundamentarea deciziilor, în timp ce ridicarea
nivelului de pregătire profesională şi în domeniul managementului are efecte
favorabile asupra luării deciziilor.
Mulţimea consecinţelor cuprinde ansamblul rezultatelor ce s-ar obţine
conform fiecărui criteriu decizional şi fiecărei stări a condiţiilor obiective prin
aplicarea variantelor decizionale. Stabilirea consecinţelor este o activitate care nu
se realizează întotdeauna cu exactitate deoarece nu se cunosc cu certitudine
cauzele ce ar determina producerea lor. Consecinţele pot fi în forma cantitativă
sau calitativă.
Obiectivele deciziei sunt nivelele propuse de către decident pentru a fi
atinse în urma implementării variantei decizionale alese.

Un model poate fi definit drept o reprezentare valoroasă şi utilă a realităţii, care


surprinde anumite caracteristici ale acesteia şi le ignoră pe altele1[2].

Turban identifică două tipuri de modele fundamentale: modele prescriptive,


respectiv modele descriptive [Turban93].

Modelele descriptive urmăresc să explice comportamentul real în cadrul


procesului decizional. Procesul decizional este mai puţin structurat şi nu este
complet raţional. În practică, decidenţii simplifică factorii implicaţi şi, datorită
dificultăţilor practice, sunt pregătiţi să accepte soluţii satisfacatoare mai degrabă
decât sa piardă timp şi resurse în încercarea de a găsi optimul teoretic.

Modelele prescriptive sau normative sunt modele care selectează automat


cea mai buna opţiune (ex. programarea liniara, analiza cost-volum-profit, teoria
decizională statistică, tehnici de analiză a investiţiei). Aceste modele sunt bine
1

8
definite şi structurate, şi tratează procesul decizional ca pe un proces complet
raţional. Ele constituie tehnici de optimizare care presupun condiţii de risc sau
certitudine.

9
CAPITOLUL I

Evidenţa distribuţiei aleatoare a parametrilor in modelele programării


liniare

1. La momentul actual, in practica planificării bazată pe metodele


matematice cea mai mare răspîndire au obţinut-o modelele programării liniare
deterministe. În caz general ele se reduc la maximizarea funcţiei scop de tip
liniar :
n

a ij
xj (1.1)
j 1

în restricţiile :
n

a ij x j  bi  0, (i  1,..., m)
j 1 (1.2)
x j  0, ( j  1..., n)

sau în forma vectorului matrice :


( a, x)  max,
Ax  b  0, x  0
(1.3)

În relaţiile anterioare avem marcările ai ( i  1,..., m ; j  1..., n )- lansare


specifică (dacă aij  0 ), sau cheltuielile specifice (dacă aij  0 ) a ingredientului i,
cu metoda tehnologică j, bi – cantitatea ingredientului i pe care o posedă sistemul
economic (dacă bi  0 ), sau cantitatea ingredientului i pe care sistemul trebuie să
o elimine (dacă b i  0 ); xj - intensitatea metodei tehnologice j; b  (b1 ,..., bm ) ;
a  ( a01 ,..., a0 n ) ; A  {aij } . Prin ingredient înţelegem tipul materiei prime, sau

energia care se afla în circuitul economic.


Presupunerea esenţială, care se conţine neevident în modelul programării
liniare este presupunerea despre caracterul dominant al parametrilor
aij (i  1,..., m; j  1,..., n) şi bi (1,..., m) . Aceasta este echivalent faptului că centru
de planificare dispune de informaţii absolut exacte despre factorii necontrolabili ai

10
modelului. Presupunerea despre determinarea parametrilor necontrolabili este
admisibilitatea destul de justificată în timpul planificării pe intervale de timp nu
prea mari, în timpul cărora caracteristicile de bază ale sistemului nu se modifică
esenţial şi se pot determina destul de exact. La planificarea de lungă durată şi de
perspectivă este inevitabilă apariţia erorilor ocazionale (neprevăzute). Erorile de
prognozare permit numai obţinerea domeniilor posibile ale parametrilor
modelelor: noi metode tehnologice, cererea, careva resurse naturale,
productivitatea, cheltuieli specifice şi de lansare. Ignorarea caracterului aleator al
parametrilor negestionabili poate atrage erori enorme la adoptarea deciziilor de
plan. L.V.Kantarovici indică, că normativele cheltuielilor în metode, în mod
deosebit în prognozare pentru anii viitori, datele despre resurse, în particular,
despre resursele naturii, necesitatea de calcul şi cererea pentru anii viitori prezintă
în realitate valori stochastice, cunoscută nouă numai cu o anumită probabilitate.
De aceea problema de construire a planului optim, de asemenea trebuie să fie
cercetată ca problemă a programării stochastice. Pe lîngă faptul complicării
procesului de soluţionare, această circumstanţă influenţează într-un mod calitativ
estimarea eficacităţii soluţiei şi formarea costurilor.
În modelele programării stochastice parametrii aij , bi sunt priviţi ca valori
aleatoare. În caz general ei pot fi valori aleatoare independente, de aceea putem
conveni că aij , bi sunt funcţii de parametri aleatori  sau, mai general, funcţii ale
evenimentului elementar  al spaţiului probabilistic (, , ) ; în acelaşi timp 
nu este obligatoriu un număr. Aici  - mulţimea evenimentelor elementare, T-
mulţimea evenimentelor (sistemul submulţimilor  ), peste care este definită
probabilitatea P. Se consideră că, clasa evenimentelor T formează  - algebra
evenimentelor, adică conţine evenimentul sigur (mulţimea  ), evenimentul
imposibil (Ø), închis, referitor apariţiilor de calcul a reuniunii, intersecţiei şi
negaţiei. Deseori  se numeşte stare a naturii. Indicarea dependenţei aij , bi de 

permite a controla în modele de planificare optimală ineczactitatea prognozării,


caracterul aleator al parametrilor.

11
2. Paralel cu dependenţa de  mărimile aij deseori depind de dimensiunile
(masştabul) producerii, adică sunt funcţii de intensităţi x  ( x1 ,..., xn ) , totodată,
destul de des se poate considera că aij depinde numai de xj , adică aij  aij  x j ,  .
În figura 1 este ilustrat graficul tipic schimbării cheltuielilor specifice aij în
dependenţă de x . El caracterizează scăderea cheltuielilor la producerea unei
j

unităţi de lansare. Punctele de discontinuitate (discordanţă) a funcţiei corespund


volumelor maximale de producere de care este capabil sistemul dat de producţie,
fără restructurarea lui cu înzestrare tehnică permanent. Dacă lansarea depăşeşte
valorile x 0 , x 1 , x 2 ,... atunci procesul de producere trebuie modernizat. Cheltuielile
totale foarte exact se aproximează cu funcţii liniare pe porţiuni indicate în figura2.

x 0
x1 x 2 x x 0 x1 x
2
x
Figura 2

Discontinuitatea în punctele în punctele x 0 , x 1 , x 2 ,... este legată de


cheltuielile suplimentare pentru cheltuielile condiţionate permanente. Dacă ele nu
sunt prea mari în comparaţie cu cheltuielile adăugătoare, sau se pot neglija, atunci
cheltuielile generale sunt reprezentate printr-o funcţie liniară prin părţi în
proporţiile producerii. În acest mod modelul liniar, în care aij , bi se consideră
constante independente de x , are sens, dacă intensitatea este situată în intervalele
j

( x0 , x1 ], ( x1 , x2 ] etc. În cazul în care aij depinde de x şi nu depinde de  , atunci

se aduce la modelul programării neliniare. Scopul principal al programării


stohastice este: evidenţa influenţei lui  asupra parametrilor necontrolabili.

12
3. Fie aij  aij   , bi  bi   (i  1,..., m; j  1,..., n) . În acest caz, trebuie de
înţeles în relaţiile care se obţin formal indicînd în modelele (1.1)-(1.3) dependenţa
aij şi bi de  :
n

a
i 1
0j ( ) x j  max , (1.4)
n

a
i 1
ij ( ) x j  b j ( )  0, (i  1, m) , (1.5)

x j  0, ( j  1, n) (1.6)
unde aij ( ), bi ( ) - valori aleatoare? Oricare vector fixat x  ( x1 ,..., xn )
pentru careva valori  poate satisface condiţiile (1.4-1.6), iar pentru un alt  - nu.
În acest caz netrivial apare întrebarea care vector îl putem considera admisibil.
Modelul determinist nu ia în consideraţie dispersia valorilor pe care le poate lua
aij ( ), bi ( ) ; în aceste modele valorile aleatoare se schimbă cu valorile
deterministe. Cel mai des, în loc de aij ( ), bi ( ) se cercetează valorile lor medii:
a ij ( ) , b i ( ) . Planificarea se realizează bazîndu-se pe valorile medii ale
cheltuielilor, producţiei, resurselor etc., deci se cercetează problema:
n

a
j 1
ij ( )x j  max , (1.7)
n

a j 1
ij ( ) x j  b i ( )  0, (i  1, m) , (1.8)

x j  0, ( j  1, n) , (1.9)
Se pot remarca 2 neajunsuri considerabile ale acestei metode. În primul rând,
putem efectua erori mari prin alegerea planului de soluţii în dependenţă de (1.7)-
(1.9). În realitate acest plan nu este satisfăcător pentru un anumit  .Cele mai dese
ori această situaţie are loc atunci când aij ( ), bi ( ) au dispersie discretă.
Să cercetăm un simplu exemplu. Trebuie de maximizat  x1  x2 în
condiţiile  x1  x2  0  ; x1  0  ; x2  0 , unde   1 cu probabilitatea 2/3 şi   1 cu
1
probabilitatea 1/3. Atunci  
3
. Planul x, care satisface condiţiile problemei date

cel puţin pentru un  ={  1,  2}, este determinat de intersecţia cadranului

13
nenegativ cu careva semiplan haşurat (din figura 3). În acelaşi timp planul optim
al soluţiei (utilizînd parametrii medii) maximizării  x1  x2 în condiţiile

1 1 
x1  x 2  1  ; x1  0  ; x2  0 ; este punctul  , 0 care nu aparţine porţiunii găsite.
3 3 

În al doilea rând, schimbul valorilor aleatoare cu valorile deterministe poate duce


la denaturarea substanţială a procesului de modelare, deoarece cu ajutorul
modelelor deterministe nu putem descrie aspecte esenţiale ale planificării în
condiţiile nedeterminate, ca şi în cazul posibilităţii corectării planului, în
condiţiile cheltuielilor suplimentare la supraproducerea şi deficitul acesteia,
informaţie esenţială.
4. Evident că relaţiile (1.5)-(1.6) pot avea alt înţeles decât relaţiile (1.8)-
(1.9).
De exemplu, în calitate de plan admisibil al problemei (1.4)-(1.6) putem
cerceta vectorul x care satisface (1.5)-(1.6) pentru toţi  , deci :

a
j 1
ij ( ) x j  bi ( )  0,   , (i  1, m) , (1.10)

x j  0, ( j  1, n)

sau aproape pentru toţi  (cu probabilitatea p) adică :


n

 a ( ) x
j 1
ij j
 bi ( )  0, mod P, (i  1, m),

x j  0, ( j  1, n) .

Aceasta este aşa zisa formulare dură a programării stohastice. În acest caz
soluţia se alege cu atenţie maximă astfel încât planul căutat să satisfacă condiţiile
”echilibrate”  după toate ”ingredientele ” pentru toate cel mai puţin probabile
valori ale lui  . Evident că sistemul (1.10) nu are alte soluţii decât cea trivială.
De exemplu , fie avem inegalitatea:
 x  1, x  0,

14
unde  =1 cu probabilitatea 0.4 ,  =2 cu probabilitatea 0.5 şi  =-1 cu
probabilitatea 0.1. Sistemul :
x  1,2 x  1, x  1, x  0

are unica soluţie x=0. Deoarece în acest exemplu   {1,2} cu o probabilitate


mare, atunci în careva cazuri, evident, planul admisibil se alege în conformitate cu
această mulţime  . În legătură cu aceasta, planul admisibil de soluţii (1.4)-(1.6)
uneori este propus a fi considerat vector care satisface (1.5)-(1.6) pentru acei  ,
mărimea cărora nu este mai mică decât valoarea dată. În continuare vom
considera admisibili acei vectori x care satisfac restricţiile:

n
P{ aij ( ) x j  bi ( )  0}  pi , ( i  1, m ) (1.11)
j 1

xj  0, ( j  1, n )
unde pi- mărimi date. În conformitate cu restricţiile (1.11), cele mai mari
dificultăţi sunt cele legate de alegerea pi. În afară de acesta, ca regulă, mulţimea
planelor admisibile nu sunt convexe. Aşadar, în figura 3 punctele care aparţin
măcar unui spaţiu haşurat formează o mulţime neconvexă, care descrie relaţia :
P{1 x  x2  1}  1/ 3.
Câte odată în loc de (1.11) se cercetează o singură condiţie :
n
P{ aij ( ) x j  bi ( )  0, (i  1, m)}  p ,
j 1

xj  0 ( j  1, n ).
Să remarcăm că alegerea modelului depinde de careva situaţie concretă. De
exemplu modelul (1.7)-(1.9), după toate cercetările, nu este satisfăcător dacă
parametrii au dispersia mare.
5. În calitate de funcţie scop, în toate problemele atinse mai sus ale formării
problemei programării stohastice, nu este obligatoriu de a fi cazuri de ingredient
nul sau probabilitatea depăşirii producerii ingredientului nul de careva nivel. De
exemplu, producerea ingredientului nul poate fi maximizată după Paretto, adică în

15
calitate de plan optim să se considere planul x pentru care nu există plan admisibil
- y astfel încât :
n n

a
j 1
0j ( ) x j   aij ( ) y i ,  
j 1
(1.12)

pentru careva    (1.12) este satisfăcut ca o inegalitate strictă. Restricţia de


tipul (1.12) poate fi considerată de asemenea după mod P , adică aproape pentru
toţi  sau cu probabilitatea 1.
La formarea funcţiei scop şi a restricţiilor se poate considera în momente
n n

diferite mărimile a
j 1
0j ( ) x j şi a
j 1
ij ( ) x j  bi ( ) . Restricţiile problemei

programării stochastice pot fi de tipuri combinate, adică careva restricţii pot fi


înţelese, altele ca dure, sau după probabilitate, sau într-un oarecare alt mod.
În aşa fel, construcţiile concrete ale programării stohastice sunt multe, dar
pentru dezvoltarea metodelor generale de analiză sunt necesare de asemenea
formulări generale.
6. Modelul stochastic de planificare a producerei în 2 etape. Neajunsul
formulărilor cercetate este acela că în ele se înregistrează numai faptul
disconcordanţei ingredientelor, sau disconcordanţelor pe diferiţi ingredienţi şi în
diferite direcţii li se acordă acelaşi cost. Desigur, în majoritatea problemelor
economice reale au valoare, atât mărimea dezechilibrului, cît şi tipul
ingredientului după care are loc dezechilibrul. Vom cerceta construcţiile posibile
care sunt lipsite de aceste neajunsuri. Fie ri(v) reprezintă funcţia eroare ce
înregistrează disconcordanţa restricţiei i. Atunci efectul planului x este :
n m n

 a0 j ( ) x j  ri ( aij ( ) x j  bi ( )).
j 1 i 1 j 1

Vom studia problema maximizării efectului aşteptat (mediului):


m n
F ( x)  (a( ), x)  Mri ( aij ( ) x j  bi ( )) (1.13)
i 1 j 1

în condiţiile:

16
x j  0, ( j  1, n) , (1.14)
Dacă inegalitatea (1.5) o vom cerceta ca egalitate şi vom presupune
dependenţa proporţională dintre eroare şi disconcordanţă atunci funcţia eroare va
avea forma:
 i v , v  0
ri (v )  max{ i v,   j v}  
  i v , v  0 (1.15)
unde
n
v   aij ( ) x j  bi ( ), (i  1, m) (1.16)
j 1

i poate fi interpretat ca cheltuieli rezervate pentru depozitare, iar  i -


ca cheltuieli rezervate în caz de deficit. Dacă  i  0,  i  0, i  1, m , atunci
problema (1.13)-(1.16) poate fi transcrisă în următoarea formă echivalentă.
Vom cerceta sistemul :
n

 a ( ) x
 
ij j
 yi  yi  bi ( )  0, (i  1, m) , (1.17)
j 1


x j  o, ( j  1, n), yi  0, (i  1.m)

Pentru x  ( x1 ,..., xn ) fixaţi vom găsi y  i  y  i ( x, ) , care satisfac (1.17) şi


minimizează :
n

 (
 
i yi   i y i ) (1.18)
i 1

Evident, că dacă:
n

 a ( ) x
j 1
ij j
 bi ( )  0,

atunci:
n
yi ( x, )   aij ( ) x j  bi ( ),

j 1

yi ( x, )  0;

dacă:
n

 a ( ) x
j 1
ij j
 bi ( )  0 ,

17
atunci:
yi ( x, )  0,

n
yi ( x, )   aij ( ) x j  bi ( ).

j 1

Altfel spus,
n
yi ( x, )  max{0,  aij ( ) x j  bi ( )},

j 1

n
yi ( x, )  max{0, aij ( ) x j  bi ( )},

j 1

adică funcţia (1.13) o putem scrie în forma :


n n
F ( x)   a 0 j ( ) x j  M  ( i yi ( x, )   i yi ( x, )) 
 

j 1 i 1
n m n
  a 0 j ( ) x j  M  ( i max{0,  aij ( ) x j  bi ( )}  (1.19)
j 1 i 1 j 1
n
  i max{0, aij ( ) x j  bi ( )})  min(max).
j 1

şi problema maximizării (1.19) pentru x  0 este echivalentă cu problema


(1.13)-(1.14).

În problema (1.17)-(1.19) variabilele y i pot fi cercetate ca variabile care
corectează condiţia :
n

 a ( ) x ij j  bi ( )  0, (i  1, m),
j 1
(1.20)
x j  0, ( j  1, m)

Planul fixat x=(x1,…,xn) obţinut după informaţia apriorică a stării naturii  nu



satisface aceste condiţii pentru orice  .Variabilele yi sunt alese după cercetarea
lui  şi lichidează neregularităţile. Cheltuielile pentru corectitudine se determină
conform (1.18).

Din punct de vedere economic variabilele adăugătoare yi pot fi cercetate

ca intensitate a careva metode tehnologice care corectează planul x, obţinut până


la cercetarea variabilelor aleatoare, după ce se obţin informaţii noi.

18
Corectitudinea planului în procesul de producere este o caracteristică a
planificării economice reale. Necesitatea corectării planului nu este o urmare a
neajunsului planificării. Corectitudinea depinde de alegerea şi planificarea
acţiunilor în condiţii de incertitudine. Neajunsurile planificării în informaţie
incompletă sunt legate de cheltuieli mari care sunt necesare pentru corectarea
planului ales anterior. Este important de ales aşa planuri care necesită cheltuieli
generale minime la realizarea şi corectarea lor, sau maximizarea efectului sumar
aşteptat de le implementarea şi corectarea planului.
În cadrul modelului determinist nu pot fi unite 2 etape - etapa alegerii
planului şi etapa corectării lui. Există sisteme ale modelului determinist care
descriu fiecare din aceste etape în parte. Trecerea de la valorile deterministe la
cele aleatoare, care sunt cauzele cercetării, permit obţinerea modelului care
sumează cele 2 etape ale planificării menţionate mai sus, adică ne permit a vorbi
despre modelele alegerii planurilor stabile la incertitudinile avute care
minimizează cheltuielile prevăzute la realizare şi colectare, sau maximizează
efectul general mediu al planului iniţial şi corectarea lui. Acesta este aşa-numitul
model din 2 etape al programării stohastice. În modelele din 2 etape ale
programării stohastice sunt reflectate următoarele proprietăţi caracteristice în
condiţiile planificării incerte:
1. Caracterul probabilistic al informaţiei iniţiale;
2. Corectarea planului ales anterior pe parcursul acumulării informaţiei;
3. alegerea planului iniţial cu evidenţa corectărilor din viitor.
Cum a fost deja menţionat, modelul (1.17)-(1.19) este modelul de
programare stohastică din 2 etape cel mai simplu. În caz general planul-corectare
se introduce în sistemul condiţiilor cu ajutorul matriţei de corectare în forma
generală, elementele căreia depind de  , adică se cercetează sistemul
inegalităţilor
n r

 a ( ) x
j 1
ij j
  d ik ( ) y k  bi ( )  0, (i  1, m),
k 1

19
x j  0, ( j  1, n); y k  0, ( k  1, r ) ,

sau în forma vectorului matrice:


A( ) x  D ( ) y  b( )  0
x  0, y  0.
(1.21)

Observăm, în cel mai simplu caz:


 1 1 0 ... 0 0 
 
 0 1 1 ... 0 0 
D .
. . . . . . 
 
 0 0 0 ... 1 1 

Planul iniţial x se alege după cercetările lui  . În momentul când  este


cunoscut se alege planul-corecţie y astfel încât să se îndeplinească inegalitatea
(1.21). Prin aceasta efectul din planul-corecţie este echivalent cu
r
(d ( ), y )   d k ( ) y k (1.22)
k 1

Deoarece fiecare plan-corecţie y este ne conduce la un anumit efect, atunci


pentru x şi  cercetat, y este mai bine de ales din condiţiile de maxim (1.22) cu
restricţiile (1.21). Vom nota un aşa plan prin y(x,  ) şi-l vom numi planul optim
de corecţie al lui x pentru natura lui  . Putem presupune că y(x,  ) există pentru
fiecare x şi  , în caz contrar, în (1.21) putem introduce variabile artificiale

yi ( ) :
n r

 a ( ) x   d ik ( ) y k  yi  bi ( )  0,

ij j
i 1 k 1

şi în acelaşi timp să le introducem în (1.22) cu o eroare destul de mare C,


adică în loc de (1.22) vom cerceta

 d ( ) y  C  yi .

k k
k i

20
Efectul aşteptat de la planul-corecţie este egal cu
r
M  d k ( ) y k ( x, ).
k 1

Problema constă în găsirea planului x care maximizează aşteptarea


matematică a efectului care depinde de plan cu evidenţa în viitor a corecţiei:
r
F ( x)  ( a( ), x)  M  d k ( ) y k ( x, ) 
k 1
(1.23)
( a( ), x)  M max( d ( ), y ),
y 0

în restricţiile:
D ( )  A( ) x  b(  0),
y  0, x  0. (1.24)

În viitor vom deosebi metodele tehnologice de programare cu intensitatea x,


de cele corectitive (sau de adopţie)- cu intensitatea y. Uneori problema nelineară
(1.23)-(1-24) este mai comod de formulat altfel, şi anume: de găsit un aşa vector
determinist y(  ), astfel încât:
 a( ), x   M  d ( ), y( )  max (1.25)
în restricţiile:
A( ) x  D ( ) y ( )  b( )  0
x  0, y ( ).  0
(1.26)

Această construcţie a problemei cu 2 etape parcă s-ar aduce la o problemă cu


o singură etapă: în acelaşi timp se determină planul optimal şi corecţia sa optimă
y(  ). Problema (1.25)-(1.26), spre deosebire de problema (1.23)-(1.24) este
liniară, însă dacă în problema (1.23)-(1.24), soluţia este un vector x n-dimensional
la găsirea căruia se poate aplica metoda numerică, atunci în problema (1.25)-
(1.26) necunoscuta este (x,y(  )) şi găsirea metodei numerice practice de
soluţionare a problemei este posibilă numai în cazul când  este o mulţime finită
cu un număr mic de elemente. Cercetările (1.25)-(1.26) de obicei sunt comode la
modelele cercetate calitativ, la găsirea condiţiilor optime şi interpretarea lor
economică.

21
Exemple: Vom cerceta un şir de probleme concrete, care se rezolvă cu
ajutorul unei metode generale a modelelor stohastice în 2 etape.

1.1. Cea mai simplă problemă stohastică a planificării producţiei


Fie trebuie să planificăm producerea unui produs, cererea căruia este
aleatoare. Vom nota prin x- cantitatea de producţie a produsului, prin  - cererea
lui, c- cheltuielile unei singure unităţi de producţie ale produsului. Deoarece
cererea produsului este aleatoare, pentru orice x poate fi ori supraproducere, ori
deficit. Vom nota supraproducerea cu y  ( , x ) , deficitul cu y  ( , x ) , cheltuielile
specifice legate cu supraproducerea şi deficitul, prin d+ şi d- . Problema constă în
găsirea lui x care minimizează aşteptarea matematică a cheltuielilor legate de
producerea, supraproducerea şi deficitul produsului. Nu este greu de înţeles că
planul căutat minimizează:
F ( x)  cx  M  d  y  ( , x)  d  y  ( , x) ,
unde:
y  ( , x)  max{0, x   },
y  ( , x)  max{0,  x}, x  0
Această problemă este un caz particular (1.19).
Este uşor de observat că dacă soluţia este aleasă după valoarea medie a
cererii -  , atunci pentru d+ şi d- >0 (care ca regulă se îndeplineşte) vom obţine
soluţia trivială x   .
1.2. Modelul stochastic de alegere optimă a componenţei parcului mecanizat

Fie bi(k)- cantitatea muncii de tipul I (strânsul roadei, semănatul etc.) în perioada
k a calendarului, xij(k)- numărul agregatelor de tipul j pentru lucrul de tipul i,
wij(k)- productivitatea variabilă a agregatului. În cazul când bi(k) sunt mărimi
deterministe are loc egalitatea:

22
w j
ij (k ) xij (k )  bi (k ), xij (k )  0

Dacă mărimile bi (k ) sunt aleatoare, atunci productivitatea generală a


agregatelor poate fi mai mică sau mai mare decât volumul necesar bi ( k ,  ) care
aduc la cheltuieli aşteptate

    
M   d i ( k ) max 0, bi ( k ,  )  w ( k ) xij ( k )  
 i ,k  ij
   j 
 
 d i ( k ) max 0,  wij ( k ) xij ( k )  bi ( k ,  )   


 j  

Problema constă în găsirea unor astfel x ij ( k )  0 , care minimizează funcţia:


 
a
i , j ,k
ij ( k ) x ij ( k )  j
 max  x ij ( k )   i 
 k i 
    
 M    d i ( k ) max 0, bi ( k ,  )   wij ( k ) x ij ( k )  
 i ,k   
  j

   
 d i ( k ) max 0,  wij ( k ) x ij ( k )  bi ( k ,  )   ,


 j  

unde aij (k ) - cheltuieli variabile,  i - coeficientul investiţiilor anuale.


Deosebirea acestei probleme de problema maximizării (1.19) este aceea că în loc

de funcţia liniară a venitului 


j
a0 j x j
din (1.19) în acest caz se cercetează funcţia

neliniară a cheltuielilor.
1.3. Modelul stochastic în legătura (balanţa) dintre ramuri
O problemă destul de grea în cercetările mai multor ramuri este obţinerea
unei informaţii mai mult, sau mai puţin exactă a coeficienţilor cheltuielilor
directe. De aceea matricea cheltuielilor directe deseori este considerată aleatoare.
De aici pot apărea noi construcţii de optimizare a modelelor cu mai multe ramuri
de producţie.
Vom introduce notaţiile: n - numărul tipurilor de produs, aij ( ) -

cheltuielile specifice produsului de tip i la producerea produsului j, tj -


cheltuielile specifice muncii la producerea produsului j,  i - ponderea specifică a
materiei prime i în cadrul produsului finit, L- resurse de muncă, xj - cantitatea
produsului j. Vom considera că  i  0, (i  1, n) .

23
La planul determinat de producere a produsului brut producerea produsului
finit va fi un vector aleator:
x  A( , x)   E  A( )  x,

unde E este matricea unitară, A(  )- matricea coeficienţilor aij ( ) , iar


volumul general al producţiei finite în proporţii date va fi:

   a ij ( )  x j
n

ij 1, i  j ,

min
j 1 , unde  ij  
0, i  j.

j

Problema constă în alegerea unui astfel de vector x=(x1,…,xn), care


maximizează aşteptarea matematică a volumului finit total de produs la produsele
cu resursele de muncă date, adică x este soluţia problemei:
 
 ij  aij ( )  x j
n



j 1


M  min
i i   max,
 
 
n

t
j 1
j x j  L, x j  0, ( j  1, n).

Această problemă nu este o problemă a programării stohastice în 2 etape,


însă ea se aduce la problemele de tipul (1.25)-(1.26). Vom introduce o variabilă z,
care depinde de  , unde z(  ) este volumul total de producţie a produsului finit în
proporţiile date. Evident că această problemă este echivalentă cu următoarele:
Mz ( )  max,
 E  A( )  x  z ( ),
(t , x )  L, x  0,

unde t=(t1,…,tn). În problema cercetată, planul de producere, adică planul de


producere al produsului brut nu depinde de starea naturii. Putem cerceta modelul
stohastic dintre ramuri cu corectarea produsului brut.
Vom nota prin y(  )- producţia produsului după momentul cercetării lui  ;
L1,L2-resursele muncii în perioada de timp până şi după cercetarea lui  . Unul
dintre cele mai simple modele de cercetare a produsului brut poate fi scris în
forma:

24
Mz ( )  max,
 E  A( )   x  y ( )   z ( ),
 t , x   L1 ,  t , y ( )   L2 , x  0, y ( )  0.
Sensul economic al acestui model este destul de transparent: este necesar de
ales aşa plan de producere ale produsului brut până şi după ce vor fi cunoscuţi
coeficienţii cheltuielilor directe, pentru a maximiza aşteptarea matematică a
producerii volumului final de produs în proporţiile date cu condiţiile că se vor
îndeplini restricţiile de muncă în prima şi a doua perioadă.

CAPITOLUL II

25
Problema de luare a deciziei in codiţii de totală incertitudine

Există mai multe concepte în ceea ce priveşte elaborarea şi luarea de decizie


în condiţii de incertitudine. E necesar de remarcat că în aceste situaţii se cunoaşte
doar domeniul  de stări posibile ale factorului necontrolabil  . Elementul
necontrolabil  poate fi:
a. Sau o stare a naturii,
b. Sau este un element controlat de un alt grup (care în mod conştient ia
decizii – controleză cu  ) şi interesele căruia deseori sunt diametral-opuse
intereselor acelor decidenţi care gestionează cu x.
Un generator al incertitudinii este lipsa de informaţie pentru decidentul dat
cu privire la stările factorului  .
1. Wald vine cu criteriul pesimistului- un criteriu de maximă
prudenţă.
2. Criteriul lui Savage
3. Criteriul Hurwcz
4. Criteriul Laplace şi Bernoulli.

2.1. Simularea variabilelor aleatorii

2.1.1. Cazul continuu


Se presupune (că  - variabilă aleatoare scalară) cunoaşterea funcţiei de
repartiţie
z
F ( z )  P{  Z}     ( y)dy


26
  ( z ) - densitatea de repartiţie

  ( z)  0 ,    ( z)dz  1


1
rnd r

a Zr b Z

F ( z )  r , pe segmentul [ a, b] există Z r astfel încît F ( Z r )  r , Z r  F 1 ( r ) .

Remarcă: Valoarea Zr se consideră realizarea stării naturii  în condiţia că

generatorul random se realizează cu valoarea r. Deci:   Z r ,  Z r ,...,   Z r .


1 2 L
1 2 L

Vom obţine un eşantion de volum L care şi reprezintă într-o careva măsură


mulţimea stărilor posibile  . Există noţiunea de eşantion reprezentativ. În linii
generale un asemenea eşantion ar putea fi suficient pentru obţinerea anumitor
estimaţii sau indicatori care ar reprezenta caracteristicile căruiva sistem sau
fenomen.
Printre aceste caracteristici sunt: valoarea medie, dispersia, aprecieri ale
funcţiei de regresie etc.

2.2. Procese decizionale în condiţii de totală incertitudine

Incertitudine

A.Risc B.Totală incertitudine

În situaţia A sunt propuse ipotezele:

27
1. Pe parcursul proiectării (elaborării) deciziei, grupul factorilor
sunt neschimbaţi, dar cunoscuţi.
2. Factorul de control (decizia) x se presupune aparţinînd unui
domeniu X (cunoscut)- numit mulţimea admisibilă a factorilor de decizie
3. Factorul  - numit stare a naturii reprezintă un eveniment
elementar al domeniului  , sau cu alte cuvinte – toate mărimile care depind
de c, de x, şi de  reprezintă nişte mărimi măsurabile pe un spaţiu
probabilist în (  , F, P).
 - spaţiul evenimentelor elementare

F- reprezintă  - algebra de evenimente A care sunt submulţimi ale lui  ,


A .

P- măsura de probabilitate care este definită pe F, pentru orice element


A F , rezultă 0  P( A)  1 .

2.3. Modele decizionale în condiţii de risc

1. F ( x)  M  [ f ( , x)]  min
xX , dacă orientăm procesul decizional spre minim cu

condiţia ca x  X , deci o asemenea funcţie să reprezinte cheltuielile sistemului


economic medii dacă decidentul se orienteză de a aplica decizia (politica) x  X .
2. F ( x)  M  [ f ( , x)]  max , cînd decidentul orientează desfăşurarea
xX

procesului decizional în direcţia obţinerii unui venit mediu, profit mediu maximal.
Problema de proiectare a unei decizii în condiţiile de risc (A) poate fi mai
puţin complexă, sau mai mult complexă. Relativ e mai simplă problema în cazul
cînd domeniul X al deciziilor admisibile nu depinde de starea naturii    .
Procesul decizional devine esenţial complex (mult mai complicat) dacă domeniul
deciziilor admisibile X este dependent de starea naturii  : X=X(  ),    . În
această situaţie, în fiecare caz concret se cere de precizat care decizie poate fi
considerată admisibilă şi, corespunzător inadmisibilă. În caz dacă s-ar cere ca
factorul de decizie:
28
a. x să aparţină lui X(  ), pentru orice    ;
b. P{   : x  X ( )}  1 ;

(a) şi (b) conduc spre situaţii destul de rigide în procese decizionale


corespunzătoare.
c. Ar pitea fi indicat un oarecare p  (0;1) , şi, decizia ar fi necesar să
respecte restricţia următoare: P{   : x  X ( )}  p .
Remarcă: Valoarea lui p amplasată pe (0;1) determină “gradul de exigenţă”
impus acelor decizii care ar putea să fie considerate admisibile (desigur în termeni
probabilişti). Cu cît valoarea p e mai mare cu tît cerinţele faţă de decizii sunt mai
înalte, ceea ce înseamnă: că factorul de decizie x ar fi necesar să aparţină lui X(  )
şi pentru stări ale naturii foarte puţin probabile. Din contranivelul mic al lui p
conduce (implică) la un grad de loialitate corespunzător înalt în raport cu factorul
de decizie x.

Să admitem acum că procesul decizional este exprimat prin situaţia B.


B. În acest caz în mod integral comportamentul sistemului schematic depinde
deasemenea de 3 tipuri de factori care influienţează stările sistemului:
1. C- constanţi,
2. x- factor de decizie,
3. a.   (1 ,  2 ) , 1 - factor aleator cu probabilitatea de realizare
cunoscută;
b. decidentul se confruntă în procesul decizional cu un grup conştient
care gestionează, decide cu  ( 2 ) .
În situaţia decizională de totală incertitudine se presupune cunoaşterea
domeniului decizional X, a mulţimii de factori necontrolabili  şi a funcţiei f( 
,x) de către decident. Pentru fiecare pereche de tipul f(  ,x) decidentul cunoaşte
costul (beneficiul) deciziei x în caz dacă factorul necontrolabil se află în satrea  .
În continuare vom considera că decidentul manifestă maximă prudenţă în
luare de decizie (Critetriul Wald) şi este orientat de a lua decizia x din conceptul

29
minimizării funcţiei F ( x)  max [ f ( , x)] care i-ar asigura valoarea minimă a
 

funcţiei F(x). În acest caz f(  ,x) s-ar interpreta ca o funcţie de cost cînd se ia
decizia x şi factorul necontrolabil. F(x) reprezintă costul maximal (pesimist).

2.4. Algoritmi numerici

F ( x)  max f ( , x)  min (1.27)


  x X

Metoda Arrow-Hurwcz
Ipoteze:
1. Mulţimea deciziilor X este o mulţime convexă şi compactă în
En . Mulţimea  etse convexă şi compactă în En .
2. Funcţia f(  , x ) este funcţie continuă în raport cu perechea (
,x) pe produsul cartezian   X .
3. Funcţia f(  , x ) este o funcţie convexă în raport cu x pe
domeniul X pentru orice    , f(  , x ) este concavă în raport cu  pe
domeniul  , pentru orice x  X .
4. Pentru orice    , f(  , x ) este diferenţiabilă pe domeniul X,

cu alte cuvinte există grad f ( , x) x  f x ( , x) , pentru orice x  X , f(  , x )


'

este diferenţiabilă pe domeniul  , adică există grad f ( , x)   f x ( , x) şi


'

gradienţii respectivi sunt mărginiţi: există constanta c1   , există c2  

f x ( , x)  c1 f  ( , x )  c 2 pentru orice pereche ( , x)    X .


' '
încît: ,
Din cunoscuta teoremă a lui John Von Newman: dacă se respectă condiţiile
1), 2), 3), atunci funcţia f(  , x ) posedă punct şa. Cu alte cuvinte, există o
asemenea pereche (  , x  )    X , încît:
f ( , x  )  f (  , x  )  f (  , x), ( , x)    X .
Totodată această inegalitate dublă este echivalentă cu:
f (  , x  )  min max f ( , x)  max min f ( , x)
x X     x X

30
Arrow şi Hurwcz, pentru soluţionarea problemei (1.27) în condiţiile de
respectare a ipotezelor 1), 2), 3), 4) propun un algoritm numeric de determinare
aproximativă a punctului şa şi, deci şi a deciziei optime a modelului (1.27) care,
de altfel coincide cu componenta x* .
Remarcă: Desigur, în general nu orice model de tipul (1.27) posedă punct
şa.
Vom expune algoritmul lui Arrow-Hurwcz. Acest algoritm reprezintă un
proces iterativ de forma:
x k 1   x ( x k   k f ' x ( k , x k ))
(1.28)
 k 1    ( k   k f ' ( k , x k ))
unde:
 0 , x0 - punct iniiţial (punct de start), este un element arbitrar din   X şi
se determină apriori.
k - mărimea pasului la iteraţia k- o mărime scalară care trebuie să
respecte condiţiile:

 k  0,  k  0(k  ),   k   (1.28)
k 0

k
 x (x ) - reprezintă proiecţia elementului x
k
pe domeniul X, adică xk+1
determinat prin relaţiile (1.28) este rezultatul proiecţiei x
k
pe domeniul X,
sau cu alte cuvinte xk+1 este soluţia următoarei probleme:
k k
x k 1  x  min x  x
x X

Dacă k
x  X  x k 1  x
k
.
k
Analogic, dacă notăm cu    k   k f ' ( k , x k ) , atunci  k 1 este proiecţia pe
domeniul  a punctului  , cu alte cuvinte  k 1 este soluţia problemei:
k

k k
 k 1    min   
 

31
Dacă domeniile X şi  sunt mulţimi relativ simple, spre exemplu: mulţimi
poliedrale complexe, sfere, elipsoidale; atunci şi proiectarea pe asemenea mulţimi
reprezintă o problemă relativ simplă.
Precizări:
1. {x  E n : ai  xi  bi , i  1, n} - paralepiped în spaţiul En , muchiile căruia sunt
paralele axelor de coordonate.
a i , x ik
 ai
k 1

 k
xi  bi , x i  bi
 k k k
x i
 , xi  a i , x i  bi

2. Pentru orice  , funcţia f(  ,x) este convexă.  =  1-fixat,  =  2-fixat,


x=x1- fixat, x=x2 –fixat. Pentru orice x, funcţia f(  ,x) este convexă.
3. Prima rekaţie din (1.28) este orientată spre soluţionarea problemei de

forma: F ( x)  max f ( , x)  min - soluţie optimă a căreia este x*. Cea dea doua
  xX

relaţie din (1.28) este orientată spre rezolvarea problemei de forma:


 ( )  min f ( , x)  max .
x X  

Astfel problema determinării punctului şa în acest caz este echivalentă cu

soluţionarea problemelor: F ( x)  min


xX
,  ( x)  max ; care se rezolvă concomitent
 

aplicînd paralel ambele relaţii din (1.28).


Se consideră problema:
F ( x )  max f ( , x)  min (1.29)
  xX

Vom considera că decidentul A gestionează cu x  X - domeniul deciziilor


admisibile.
Ipoteze:
1. f(  ,x)- este convexă în raport cu x  X - mulţimea convexă,
pentru orice   
2. f(  ,x)-diferenţiabilă în reapot cu x (în domeniul X), pentru

orice    . Cu alte cuvinte există f x ( , x) , pentru orice


'
( , x )    X .

Vom presupune că există c   , astfel încît f x ( , x )  c ,


'
pentru orice
( , x )    X .
32
Definiţie: Se spune că X este mulţime convexă în En , dacă pentr orice
z , x  X ,    0,1 , punctele de forma x  (1   ) z  X .
Definiţie: se spune că o careva funcţie  (x ) definita pe domeniul conves X
este funcţie convexă dacă pentru orice z , x  X ,    0,1 , atunci:
 (x  (1   ) z )   ( x)  (1   ) ( z ) (1.30)
Sensul geometric geometric al inegalităţii (1.30) se explică astfel: pentru
orice punct intermediar dinre x şi z de forma x  (1   ) z , punctul respectiv al
graficului este situat mai sus, mai jos, sau în caz extrem nu mai sus decît punctul
corespunzător care este situat pe segmentul de dreaptă sus numit.
Definiţie: f(  ,x) este convexă pe domeniul convex X pentru orice    ,
dacă:
f ( , x  (1   ) z )  f ( , x)  (1   ) f ( , z ), x, z  X ,    0,1 .

În continuare vom admite că mulţimea  este o mulţime finită; pentru


simplitate vom admite că elementele acestei mulţimi   1 , 2 ,..., m  sunt
numere: 1,2,..., m , astfel fiecărui i  i îi corespunde funcţia f ( i , x)  f i ( x) ,

astfel funcţia F ( x)  max f ( , x )  max f i ( x) .


  1 i m

În caz dacă numărul m este relativ nu prea mare (m  n), atunci pentru
soluţionarea problemei în cauză se poate aplica un algoritm determinist care poate
fi definit astfel:
x k 1   X ( x k   k k ) (1.31)

cu

 k  grad f i( xk ) ( x k ) 
i ( x k )  1,2,..., m pentru care f i ( x ) ( x )  max
k
Aici k fi (x k ) , i( x k ) este unul din
1i  m

acei indici 1,2,3,...,m care realizează valoarea maximă dintre toate valorile de
forma: f 1 ( x k ), f 2 ( x k ),..., f m ( x k ) . Aşadar în algoritmul (1.31) se presupune că
valorile funcţiei F(x) şi a derivatelor parţiale ale funcţiei f i ( x ) ( x) care o defineşte
pe F (x ) se calculează exact. Cu alte cuvinte, în orice punct al şirului xk se

33
dettermină exact valoarea funcţiei F ( x )  f ix ( x ) şi se determină toate derivatele
k k
k

f i ( x ) ( x k )
k

parţiale: , j  1,2,..., n .
x j
 f i ( x k ) ( x k ) 
 
  x1 

,  X (Z ) -
 
Astfel  k este vectorul de forma:  k
 
 f (x k

) 
 i( xk ) 
 x n 
 

proiecţia punctului Z pe domeniul X. Vom cere ca  k să respecte condiţiile: k  0

,  k
k
0 ,  k .

k 0

Vom comenta aceste condiţii:


Condiţia (a) asigură un proces de diminuare (ca o tendinţă generală ţi nu de
la pas la pas) a valorilor funcţiei F (xk ) .

Condiţia (b) asigură respectarea condiţiei necesare de convergenţă, de altfel


se poate lesne demonstra că: x k 1  x k   k  k  C k  0 .

Condiţia (c) garantează apropierea odată cu creşterea lui k a punctelor xk ,


definite prin (3) indiferent de alegerea punctului inţial x0 (punct de start) care ar
putea fi amplasat la distanţe considerabile faţă de mulţimea X- mulţimea deciziilor
opime a decidentului A.
Remarcă: În acest caz decizia se construieşte reieşind din criteriul prudenţei
maxime (criteriul Wald- pesimistului). În aspect economic o asemenea modalitate
de elaborare a deciziei poate fi argumentată pentru acei întreprinzători care se află
în fazele (etapele) iniţiale de organizare a afacerilor (bussinesului).

2.4.1. Algoritm probabilist de proiectare


a deciziei în condiţii de incertitudine

Vom considera că decidentul A în rolul căruia suntem implicaţi ia decizia în


condiţii de incertitudine. Mulţimea de variante de decizie fiind domeniul X  E n ,

34
iar factorul incert     E m şi care se află sub controlul unui alt decident
(persoană) B care la rândul său manifestă un comportament loial, sau din contra,
un comportament extrem de dur în raport cu decidentul A. Indiferent de viziunea
comportamentului lui B, A îşi proiectează decizia de comportament optim reieşind
din conceptul de maximă prudenţă (conceptul Wald- pesimistului). Astfel, dacă A,
pentru orice x  X dispune de valorile unui indicator al eficienţei, expus în forma
numerică prin relaţia f ( , x ) (cost, cheltuieli, pierderi), atunci, evident că

decidentul A ar dori să poată estima valoarea F ( x)  max f ( , x) care reprezintă


 

costul maximal în condiţia că A ia decizia x. Vom considera în continuare că


f ( , x) este convexă pe domeniul X; există f x ( , x) - uniform
'
pentru orice    ,

mărginită: f x ( , x)  c   pentru orice ( , x)    X . Vom presupune totodată


'

că pentru orice element  şi   0 , există   0 astfel încât:


P A( , )    p ( d )   .
V ( ,  )

Evenimentul A( , ) reprezintă totalitatea evenimentelor elementare (stări


ale naturii  ) care aparţin concomitent şi mulţimii V ( , ) şi vecinătăţii V (, ) .

Cu alte cuvinte, pentru orice  şi orice   0 , probabilitatea evenimentului


 
P A( , )   .
Remarcă: Din punct de vedere al unei situaţii de aplicaţii:
Se consideră orice tip de distribuţie de probabilitate P ( d ) definită pe  (F ) -
sigura algebră de submulţimi din  astfel încât în rezultatul unui număr finit de
“aruncări” în domeniul  , dar realizările respective vor nimeri cel puţin odată, în
vecinătatea oricărui element V ( , ) .

P 
K

 V ( , )  k 1,   ,   0 .
k

 k 1  

În condiţiile relatate mai sus decidentul A într-un orizont suficient al


timpului, aplicînd o schemă de recurenţă poate în anumiţi termeni probabilişti să
determine cu o anumită precizie decizia (una din ele dacă sunt mai multe optime).

35
SP ( d )  1 .

Descrierea algoritmului
1. Iniţial se ia un element arbitrar x 0  X , se simulează (random) în
conformitate cu P ( d ) - definită pe spaţiul de evenimente elementare  o

stare a naturii  0 . Calculăm f x ( 0 , x 0 ) - gradientul funcţiei


'
f ( , x ) pentru
   0 , x  x0 . Se determină numărul  0  0 (pasul iniţial) şi apoi se calculează
noul element

x1   X x 0   0 f x ( 0 , x 0 )
'

După obţinerea elementului x1 considerăm că ne aflăm la prima iteraţie
(k=1). Fiind cunoscut x1 , din nou simulăm un element din  pe care îl vom nota
~1
cu  .
~
 1   0 , dacă f ( 0 , x 1 )  f ( 1 , x 1 ) ,
~ ~
 1   1, dacă f ( 0 , x 1 )  f ( 1 , x 1 ) .

Cu alte cuvinte : 1 este cel mai “bun reprezentant” dintre elementele  0 şi


~1 ~
 ( f ( 1
, x 2 )  max( f ( 0 , x 1 ), f ( 1 , x 1 )) ). În continuare vom determina gradientul

f x ( 1 , x1 ) . Definim numărul (pasul) 1 şi calculăm :


'


x 2   X x1  1 f x ( 1 , x1 )
'

Şi aşa mai departe.
Să admitem că deja s-a obţinut întregul şir x 0 , x1 , x 2 ,..., x k . Ne aflăm acum la
iteraţia k+1 care constă în determinarea unui nou element x k+1 . Pentru aceasta, în
conformitate cu distribuţia P ( d ) simulăm elementul ~ . k

~
 k   k 1 , dacă f ( k 1 , x k )  f (  k , x k ) ,
~ ~
 k  k , dacă f ( k 1 , x k )  f ( k , x k ) .

Determinăm f x ( k , x k ) , definim numărul  k  0 şi calculăm:


'

 
x k 1   X x k   k f x ( k , x k ) - aspectul general al schemei probabiliste de
'

determinare a deciziei aproximative pentru decidentul A.

36

Remarcă: Dacă k  0 , k  0 , 
k 0
k   atunci şirul xk converge în

probabilitate către domeniul deciziilor optime X* . În condiţii suplimentare impuse


pasului  k , şirul respectiv converge aproape sigur(cu probabilitatea 1)către X* .

Optimizarea sistemelor cibernetice stochastice

Vom considera modelul matematic ce exprimă tendinţa spre optimizare a


comportamentului sistemului în aspectul: R u  - funcţia de performanţă este egală
cu rezultatul de calcul a valorilor medii de la o careva funcţie r  u;  :
(1) R u   M   r  u;    min
u

În caz general factorului de control u i se pot impune restricţiile:


(2) Ri  u   M   ri  u;    0 , i  1,2, , N

(3) u  U
Funcţiile r  u;  şi ri  u;  se presupun, pentru orice stare posibilă a naturii,
exprimată prin parametrul aleator  , funcţii convexe în raport cu factorul de

37
control u pe mulţimea U (presupusă mulţime convexă în spaţiul factorilor de
control).
Într-un anumit aspect economic funcţia r  u;  ar putea exprima în formă
numerică anumite cheltuieli sau pierderi condiţionate de alegerea factorului de
conducere u ce ar verifica restricţiile (2) şi (3) cu condiţia că factorul aleatoriu se
află în starea  .
Remarcă: dacă situaţia impune ca decizia să se ia înainte de a cunoaşte
starea concretă a naturii  la momentul dat, modelul matematic corespunzător
unui asemenea sistem, se încadrează în clasa modelelor de elaborare a deciziei în
perspectivă.
Funcţia de performanţă R u  se evaluează prin media de selecţie:
N
1
R u    r  u; 
i
N i 1

i - reprezentând realizările lui  :  1 , 2 , , N


Estimaţia din partea dreaptă a relaţiei (4), pentru N  10 3 , va servi o anumită
apreciere a valorilor funcţiei R u  .

Pentru simplitate vom cerceta modelul stochastic în formă statică:


( 1 ) R u   M   r  u;    min
u

( 2 ) Ri  u   M   ri  u;    0 , i  1,2, , N

( 3 ) u  U
Remarcă: există două modalităţi de soluţionare a problemei (1)-(3) sau ( 1
)-( 3 ).
Modalitatea 1 - include metodele indirecte care se bazează:
a) pe calculul exact al valorii performanţei R u  ;

b) şi utilizând forma de aproximare a performanţei în aspectul (4) pentru o


anumită selecţie de stări independente  1 , 2 , , N , rezolvând problema

1 N
de forma: R u    r  u; i   min , unde u  U .
N i 1 u

38
Fie că 
uN realizează valoarea minimă a funcţiei  
R N  u  : R N u N  min R N  u  .

uU
E

foarte probabil ca pentru valori ale lui N suficient de mari, soluţia uN să exprime
într-un mod „suficient” calităţile lui u - soluţie optimă a problemei ( 1 )-( 3 ) (în
formă exactă), adică abaterea RN  u N   R u  
 
- ar fi suficient de mică.
Modalitatea 2 de soluţionare întruneşte metodele directe. Acestea se
bazează pe momentele:
1) Posibilitatea simulării, pentru legea dată de repartiţie a factorilor
aleatori, a diferitor scenarii, obţinând orice număr de realizări a factorilor
aleatori. Acest şir  1 , 2 , , N să reprezinte scenarii independente a
stărilor lui  , în raport cu cele precedente (deja simulate).
2) Posibilitatea de calcul exact a valorilor funcţiei r  u;  pentru orice set
 u;  .
3) Posibilitatea determinării gradientului sau subgradientului r  u; 

pentru orice stare  în raport cu factorul de control u al funcţiei r  u;  .


Notăm: g(u,) = r]k(u,).
Exemplu: Fie r( u , )  u   . Urmează că
  u     u  1, daca _ u  
g  u ;   
  u   u  1, daca _ u  

4) Posibilitatea proiectării oricărui element din spaţiul factorilor de control


pe mulţimea U.
Definiţie: subgradientul g  u;  se numeşte cuazigradient stochastic al
funcţiei de performanţă R u  .

Remarcă: Metodele directe, în procesul de elaborare a variantelor optime a


factorului de control u, utilizează în formă consecutivă şi în paralel metoda de
simulare a lui  cu cea de deplasare în direcţia indicată de cuazigradienţii
stochastici.

39
Metoda directă

Considerăm modelul stochatic cu funcţia de performanţă de forma:


def
R u   M   r  u;    min
u

Spre exemplu, R(u) ar exprima cheltuielile medii, dacă s-ar lua decizia
(factorul de control) u  U convexă.
Presupunem că funcţia r  u;  este convexă în raport cu u pe mulţimea U pentru
orice element aleator  - totalitatea valorilor (parametri cantitativi) sau stărilor
(parametri calitativi) posibile ale naturii.
Admitem că pentru orice set  u;  u  U şi    poate fi calculat
gradientul sau subgradientul în raport cu u al funcţiei r  u;  .
Notaţii:

Gradientul ru  u;  , dacă există, pentru u   u1 , u 2 , , u n  e descris astfel:


 r  u;  r  u;  r  u;  
ru  u;    ; ; ; 
 u1 u 2 u n 

Exemplul 1.
n
r  u ;     i u i
i 1

r  u; 
Funcţia este diferenţiabilă şi  i .
u i

Exemplul 2.
n
r  u;    C i u i2  
i 1

O asemenea funcţie nu este diferenţiabilă, dar pentru ea există derivatele


generalizate care

r  u;    2C i u i , daca u i2   i
 i  1, n
u i  2C i u i , pentru u i   i
2

40
sunt componentele subgradientului:
Exemplul 3.
r  u;   max Ci  i  u i
1i  n

Sunt calculate consecutiv n valori de tipul:


C1  1  u1 

C2  2  u 2 

 - se alege valoarea ce realizează maximum dintre acestea.

Cn  n  un 

Vom conveni că i  ; u  este un indice din mulţimea indicilor 1,2,  , n cu


proprietatea:
C i   ;u   i   ;u   u i   ;u   maxC1  1  u1 ; C 2  2  u 2 ;; C n  n  u n 
 0, daca i  i  ; u 
r  u;  
  Ci   ;u  , daca i  i  ; u  şi  i   ;u   ui   ;u   0
ui  C
 i   ;u  , daca i  i  ; u  şi  i   ;u   ui   ;u   0

Descrierea algoritmului metodei directe. Algoritmul propriu-zis este o


extindere a metodei gradientului şi permite în formă numerică de a soluţiona un
şir de probleme cu caracter practic.
0) Iniţial admitem că suntem în starea arbitrară u 0  U , dar fixată, totodată.
În corespundere cu legea de distribuţie a factorului aleator  (utilizând
metodele de simulare), obţinem un careva scenariu  0 (stare a naturii). Şi fie
că pentru setul u 0
; 0 ,
avem posibilitatea:
a) de a calcula valoarea exactă 
r u 0 ; 0 ;
r  u 0 ; 0 
b) de a determina derivatele generalizate  0 : u i
, i=1,n.

Vom nota:
ri (u 0 ;  0 )
 
0

ui

 0  10 ; 20 ; ; n0 

41
Determinăm un număr h0  0 cu caracter determinist sau aleator. Trecem la
iteraţia întâi în cadrul căreia se va aprecia o nouă variantă a factorului de control
notată cu u 1 .
1) u 1  PU  u 0  h0 0  . Vectorii u 0
; u 1 ;  vor avea caracter stochastic.
În continuare în corespundere cu legea dată de distribuţie şi metodele de
simulare, vom obţine starea naturii  1 care împreună cu factorul u 1 va da
posibilitatea de a evalua 
r u 1 ; 1  şi de a determina componentele

i1 

r u1 ; 1 
ui

Noul vector:  1  11 ; 21 ; ; 1n  este cuazigradientul stochastic al funcţiei


R u  corespunzător noii comenzi u 1 .
În general acest proces de trecere de la o stare la alta pentru factorul de
comandă poate fi continuat oricât de mult, în rezultat obţinându-se şirul de
comenzi u 0 ; u 1 ; ; u k ; u k 1 care posedă un caracter aleator. Aleatoare vor fi şi
valorile:
   
r u 0 ; 0 ; r u 1 ; 1 ;; r u k ; k   , ...
În aspect general algoritmul corespunzător are forma:
Iteraţia k+1: u k 1  PU  u k  hk k  , k=0,1,2, ...
Remarcă: pentru experimente traiectoriile respective pot fi diferite. Orice
traectorie cu creşterea lui k are o zonă de acumulare, adică „se apropie” de un
careva element u - nealeatoriu. u reprezintă comanda optimă:
 
R u   min R u 
uU

În anumite condiţii se poate constata că şirul {u k} converge, către un


oarecare element u  U  , cu probabilitatea 1,
u   u , (a.s. – aproape sigur).
a.s.
sau k
k 

Şirul de valori    
r u 0 ; 0 ; r u 1 ; 1 ;; r u k ; k   nu posedă nici o legitate (spre
deosebire de şirul u  ).
k

42
Remarcă: un mare interes l-ar prezenta informaţia despre şirul de valori
   
R u 0 , R u 2 , , R u k  .
Pentru a estima valorile performanţei R u  vom utiliza formula estimatoare
(estimaţie statistică):

 r  u;  
N
1
R u   s

N s 1

Şi corespunzător:

Ru 0    r u ; s 
N
1 0

N s 1

Ru k    r u ; s 
N
1 k

N s 1

Cu cât N este mai mare, se poate aştepta că şi estimaţia respectivă a valorii


 
R uk să fie mai exactă (în anumiţi termeni probabilişti).
r  u k ; k 
 i
k1

u i
;  
M   k  R u 

Dacă R u   M   r  u;    M 1 u1  M  2  u2    ik   ik - observaţia independentă


a lui  în experimentul cu numărul de ordine k.

Sisteme dinamice
La soluţionarea modelelor dinamice în condiţii de risc experimentul nu
determină în mod complet starea naturii. Dacă procesul de control optim al unui
sistem stochastic poate fi descris în succesiunea de genul:
Control – experiment – control – … – experiment
Unde “control” se va întâlni de M ori, atunci se spune că suntem în cazul de
conducere a unui sistem, în perspectivă, cu M etape de elaborare a deciziei.
Dacă lanţul se caracterizează prin alternarea cuvintelor:
Experiment – Control – …

43
unde “experiment” se întâlneşte de M ori atunci avem o situaţie de control în M
etape cu caracter operativ.

Exemplu: problemă de gestiune cu două etape:

Un agent economic, oferă un produs omogen în volum de A unităţi, care


iniţial (la prima etapă) e necesar de a fi stocat la depozitele i (i=1,2,...,m),
capacitatea de păstrare a cărora se prezintă prin mărimele a1, a2,...,am. În spaţiul
economic dat există n consumatori ai acestui produs, cererea la care, pentru
fiecare consumator j(j=1,2,...,n), este o mărime aleatoare bj, care devine
cunoscută mai târziu (după ce se stochează produsul la cele m depozite). Fie Pi
(i=1,2,...,m) – costul de repartizare a unei unităţi de produs de la furnizor la
depozitul i, ui – cantitatea bunului repartizat, corespunzător.

Furnizor De păstrat (intermediar) Consumatori


a1
I II
y1 1 b1  
P1 a2
A P2 y2 2
b2 ( )
u
Pi
ai
C ij xij
yi j b j  
Pm xij  y; 

am
ym n bn  

44
La prima etapă de decizie (distribuţia produsului la depozite) sânt suportate
m m

cheltuielile egale cu  Pi * ui , unde 0 ui ai şi u i A


i 1 i 1

La etapa a doua se minimizează cheltuilile de transport de la depozite spre


consumatori exprimate prin funcţia:
m n
f  y;   min  C xij   C ij xij (u )
 xij X i 1 j 1
ij

Aici xij(u) e soluţia optimă corespunzătoare, iar mulţimea X determină


domeniul de soluţii admisibile, adică:
n m

X: x ij  yi ; x ij  b j   ; xij  0 ; X  X  y; 
j 1 i 1

În etapa II-a devine cunoscută cererea la produsul dat şi atunci se realizează


transportul acestuia spre consumatori.
Deci xij  y;  reprezintă soluţia optimă în problema transporturilor (la etapa
II-a) în sensul minimizării cheltuielilor de transport în cazul când vectorul de
ofertă a producţiei este dat prin u şi starea naturii (ce determină cererea
b1 , b2 ,  , bn ) este exprimată prin  . La I-a etapă se ia decizia în privinţa stabilirii
cantităţii de produs ui, i=1,2,...,m, pentru depozitele intermediare.
Cheltuieli totale ce ţin de distribuţia a A unităţi de producţie în volumele
u1 , u 2 ,  , u m (I-a etapă de control) şi cheltuielile optime de redistribuire sau
transport x ij  u;   , care semnifică corecţia deciziei luate la I-a etapă vor fi:
m m n

 P u   C
i i ij xij  y; 
i 1 i 1 j 1

Dacă am nota cu R(u) cheltuielile medii totale, ce ţin de depozitare (etapa I) şi


apoi de redestribuire (transportare spre consumatori – etapa II), atunci aspectul
acestei funcţii ar fi următorul:
m m n 
R  u    Pi u i  M   C ij xij  u;  
i 1  i 1 j 1 

45
şi scopul urmărit ar consta în determinarea volumelor ui, i=1,2,...,m ce ar asigura
valoarea minimă a performanţei indicate R(u).

CAPITOLUL IV

Luarea deciziilor în condiţii de incertitudine cu ajutorul criteriilor

4.1. Modelarea problemei luării deciziilor în condiţii de incertitudine


cu ajutorul matricei de plăţi

Matricea de plăţi se numeşte matricea, la intersecţia rândului şi coloanei j se


află elementul cu semnul (+,-) criteriului pentru alternativa j în cazul
evenimentului i.
Elementele matricei de plăţi, în procesul luării deciziilor, de obicei se privesc
ca câştigul jucătorului. De aceia, dacă în calitate de criteriu se folosesc pierderile
jucătorului, elementele matricei de plăţi au semnul minus.
În general, când sunt cunoscute m stări ale naturii – E 1, E2, ...,Ei, ..., Em şi n –
numărul de alternative admisibile A1, A2, ...,Aj, ..., An atunci matricea de plăţi va
avea următoarea formă:
Tabelul 4.1
Matricea de plăţi

46
Alternative
Evenimente ...
A1 A2 Aj ... An
E1 a11 a12 ... a1j ... a1n
E2 a21 a22 ... a2j ... a2n
... ... ... ... ... ... ...
Ei ai1 ai2 ... aij ... ain
... ... ... ... ... ...
Em am1 am2 ... amj ... amn

Rândurile şi coloanele matricei de plăţi trebuie privite în felul următor:


 Rândul i a matricei conţine valorile criteriului pentru toate
alternativele în cazul realizării stării i (Ei).
 Coloana j a matricei de plăţi conţine toate valorile posibile în cazul
alegerii alternativei j (Aj).
De obicei, în procesul luării deciziilor se folosesc matricele de plăţi cu o
coloană adăugătoare ce conţine probabilităţile de îndeplinire a fiecărei stări ale
naturii.
Presupunem că pentru cazul general P(Ei) = pi. Atunci matricea cu
probabilităţi are următoarea formă:

Tabelul 4.2
Matricea de plăţi cu probabilităţi

Probabil Alternative
Evenimente
ităţi A1 A2 ... Aj ... An
E1 p1 a11 a12 ... a1j ... a1n
E2 p2 a21 a22 ... a2j ... a2n
... ... ... ... ... ... ... ...
Ei pi ai1 ai2 ... aij ... ain
... ... ... ... ... ... ...
Em pm am1 am2 ... amj ... amn

Problema elaborării algoritmului eficient în construcţie cu ajutorul


matricei de plăţi

47
Firma de construcţie Internation Ltd are de ales din patru alternative, metode
de construcţie a obiectului (A1, A2, A3, A4) la folosirea cărora în diferite situaţii
climaterice aduc anumite pierderi.
Tabelul 4.3
Pierderile firmei

Alternative
Stări ale naturii
A1 A2 A3 A4
E1 Ninsoare 20 20 26 30
E2 Ploaie 25 30 35 30
E3 Timp favorabil 20 18 10 22

Probabilităţile ce sunt prognozate de staţiile meteorologice pentru fiecare


eveniment sunt următoarele:
Tabelul 4.4

Probabilităţile evenimentelor

Stare a naturii E1 E2 E3
Probabilitatea 0,2 0,3 0,5

Deci matricea de plăţi cu probabilităţi va fi:


Tabelul 4.5

Matricea de plăţi cu probabilităţi a firmei Internation Ltd

Alternative
Stări ale naturii Probabilităţi
A1 A2 A3 A4
E1 0,2 -20 -20 -26 -30
E2 0,3 -25 -30 -35 -30
E3 0,5 -20 -18 -10 -22

4.2. Eliminarea alternativelor dominante din problema dată

În problemele cu condiţii de incertitudine a naturii, vom spune, că alternativa


A dominează alternativa B, în cazul în care, se alege alternativa A, în orice stare a
naturii câştigul jucătorului va fi nu mai mic de cît la alegerea alternativei B.
Dacă luăm, de exemplu, problema elaborării algoritmului eficient în
construcţie şi examinăm Tabelul 4.5, observăm că în orice condiţie climaterică
metoda de construcţie A4 duce la mai mari pierderi decît realizarea metodei A 1. cu
48
toate că la realizarea metodei de construcţie A2 în cazul ploii duce la aceleaşi
pierderi ca şi A4, însă pierderile sunt mai mici în cazul celorlalte condiţii
climaterice. Astfel alternativele A1 şi A2 dominează A4.
   
 
   
A
   
 
    

Eliminăm alternativa A4 din matricea de plăţi şi obţinem următorul tabel:


Tabelul 4.6
Matricea de plăţi cu probabilităţi a firmei Internation Ltd după eliminarea
alternativei dominante

Alternative
Stări ale naturii Probabilităţi
A1 A2 A3
E1 0,2 -20 -20 -26
E2 0,3 -25 -30 -35
E3 0,5 -20 -18 -10

a. Luarea deciziilor în condiţii de incertitudine cu ajutorul


verosimilităţii maxime

Algoritmul de luare a deciziilor, bazându-se pe criteriul verosimilităţii


maxime.
Să urmărim matricea de plăţi cu probabilităţi, Tabelul 4.2.
 Se alege rândul matricei de plăţi căruia îi corespunde cea mai mare
probabilitate pi (dacă sînt câteva rânduri cu aceeaşi probabilitate, se
alege una din ele, bazându-se pe unul din criterii, pesimistului sau
optimistului).
 Elementele rândului ales se privesc ca utilitatea alternativelor.
U(Aj)=aij, j=1,2, ..., n
În calitate de răspuns se alege acea alternativă cărei îi corespunde cea mai
mare utilitate.

Să ne întoarcem la problema elaborării algoritmului eficient în construcţie.


1. Să construim matricea cu probabilităţi tabelul 4.6.
2. Luăm decizia de a alege metoda de construcţie bazându-ne pe criteriul
verosimilităţii maxime.
Cu acest scop:
 Alegem rândul matricei de plăţi căruia îi corespunde cea mai mare
probabilitate pi.
49
 Răspunsurile primite se privesc ca utilităţile alternativelor, Tabelul 4.7
Tabelul 4.7
Utilităţile alternativelor
Alternativele A1 A2 A3
Utilitatea alternativelor -20 -18 -10

 În calitate de răspuns se alege acea alternativă, căreia îi corespunde


utilitatea cea mai mare, figura 4.1.

A1 A2 A3
Fig. 4.1 Cea mai bună alternativă
Răspuns: Cea mai bună metodă de construcţie din punct de vedere a
criteriului verosimilităţii maxime o are alternativa A3.

4.4. Luarea deciziilor în condiţii de incertitudine cu ajutorul criteriului


media maximă a cîştigului aşteptat

Algoritmul luării deciziilor bazându-se pe criteriul media maximă a


câştigului aşteptat
Urmărim matricea de plăţi cu probabilităţi, Tabelul 4.2.
 Pentru fiecare alternativă se calculează suma produselor vectorului
probabilităţilor şi vectorul elementelor posibile ale criteriilor pentru
alternativa dată:
M(Aj) = p1a1i + p2a2i + ... + piaij + ... + pmami, ), j = 1, 2, ..., n
 Rezultatul obţinut se priveşte ca utilitatea alternativei.
U(Aj) = M(Aj), j = 1, 2, ..., n
 În calitate de răspuns se alege acea alternativă a căreea utilitate este mai
mare.

Problema elaborării algoritmului eficient în construcţie cu ajutorul mediei


maximale a câştigului aşteptat (valoarea medie aşteptată)

1. Se construieşte matricea de plăţi cu probabilităţi, Tabelul 4.6.


2. Luăm decizia de a alege metoda de construcţie bazându-ne pe
criteriul valorii medii aşteptate.
 Pentru fiecare alternativă calculăm M(Aj):
M(A1) = -(0,2*20+0,3*25+0,5*20) = -21,5
M(A2) = -(0,2*20+0,3*30+0,5*18) = -22,0
M(A3) = -(0,2*26+0,3*35+0,5*10) = -20,7
 Răspunsurile primite se privesc ca utilităţile alternativelor.

50
Tabelul 4.8
Utilităţile alternativelor

Alternativele A1 A2 A3
Utilitatea alternativelor -21,5 -22,0 -20,7
 În calitate de răspuns se alege acea alternativă, căreia îi corespunde
utilitatea cea mai mare, figura 4.2.

A1 A2 A3
Fig. 4.2 Cea mai bună alternativă

Răspuns: Cea mai bună alternativă din punc de vedere a criteriului mediei
maximale a câştigului aşteptat este A3.

4.5. Luarea deciziilor în condiţii de incertitudine cu ajutorul criteriului


optimistului

Criteriul optimistului ignorează probabilităţile posibile ale evenimentelor şi


analizează doar matricea de plăţi.
Algoritmul luării deciziilor bazându-se pe criteriului optimistului
Să urmărim forma matricei de plăţi, Tabelul 4.1.
 În fiecare coloană a matricei de plăţi se alege elementul maximal (dacă
sunt câteva de aceste elemente se ia unul din ele).
U(Aj) = max
1 i  m
aij , j = 1, 2, ..., n

 În calitate de răspuns se alege acea alternativă a căreia utilitate este mai


mare.
În cazul dat, utilitatea alternativei se determină prin câştigul maxim posibil la
alegerea acestea. Astfel noi numim ca cea mai buna acea alternativă căreia îi
corespunde cel mai mare număr din toate elementele matricei de plăţi. Din această
cauză, criteriul optimistului mai este numit şi criteriul maximax.

Alegerea algoritmului eficient în construcţie cu ajutorul criteriului


optimistului sau maximax
Luăm decizia de a alege metoda de construcţie pe baza criteriului
optimistului. Cu acest scop:
 În fiecare coloană a matricei de plăţi alegem elementul maximal:
Tabelul 4.9
Alegerea elementului maximal
Stări ale naturii Alternative
Probabilităţi
A1 A2 A3
E1 0,2 -20 -20 -26
E2 0,3 -25 -30 -35
E3 0,5 -20 -18 -10
51
 Elementele alese se privesc ca utilităţi ale alternativelor
Tabelul 4.10
Utilităţile alternativelor
Alternativele A1 A2 A3
Utilitatea alternativelor -20 -18 -10

 În calitate de răspuns se alege acea alternativă a căreea utilitate este mai


mare, figura 4.3.

A1 A2 A3
Fig. 4.3 Cea mai bună alternativă

Răspuns: Din punct de vedere a criteriului optimistului se alege alternativa


A3.

4.6. Luarea deciziilor în condiţii de incertitudine cu ajutorul criteriului


pesimistului

Criteriul pesimistului ignorează probabilităţile evenimentelor şi se bazează


numai pe analiza matricei de plăţi.

Algoritmul de luare a deciziilor bazându-se pe criteriul pesimistului


Să urmărim forma matricei de plăţi, Tabelul 4.1.
 În fiecare coloană a matricei de plăţi se alege elementul minimal (dacă
sunt câteva de aceste elemente se ia unul din ele).
U(Aj) = 1min
i  m
aij , j = 1, 2, ..., n

 În calitate de răspuns se alege acea alternativă a căreia utilitate este mai


mare.
În cazul dat, utilitatea alternativei se determină prin câştigul minim posibil la
alegerea acestea. Astfel noi numim ca cea mai buna acea alternativă căreia îi
corespunde cel mai mic element din coloană şi care este cel mai mare din
elementele minimale ale coloanelor matricei de plăţi. Din această cauză, criteriul
pesimistului mai este numit şi criteriul minimax.

Problema alegerii algoritmului eficient în construcţie cu ajutorul


criteriului pesimistului sau minimax
Luăm decizia de a alege metoda de construcţie pe baza criteriului
pesimistului. Cu acest scop:
 În fiecare coloană a matricei de plăţi se alege elementul minimal, tabelul
4.11.

52
Tabelul 4.11
Alegerea elementului minimal

Stări ale naturii Alternative


Probabilităţi
A1 A2 A3
E1 0,2 -20 -20 -26
E2 0,3 -25 -30 -35
E3 0,5 -20 -18 -10

 Elementele alese se privesc ca utilităţi ale alternativelor


Tabelul 4.12
Utilităţile alternativelor
Alternativele A1 A2 A3
Utilitatea alternativelor -25 -30 -35

 În calitate de răspuns se alege acea alternativă a căreia utilitate este mai


mare, figura 4.4.

A1 A2 A3
Fig. 4.4 Cea mai bună alternativă

Răspuns: Metoda de construcţie A1 după criteriul pesimistului este cea mai


bună.

53
CAPITOLUL V

Simularea pe calculator a aplicaţiilor economice

5.1. Analiza problemei şi a algoritmilor folosiţi

În capitolul dat se propune un model de maximizare a venitului unei firme


producătoare în care se ia în considerare coraportul dintre potenţialul de
producere al întreprinderii (volumul ce poate fi propus într-un anumit moment de
timp) şi cererea de pe piaţă la bunurile respective. Dealtfel se iau în considerare şi
pierderile ce ar putea fi cauzate de fenomenul de supraprodus.
Modelul respectiv este descris de relaţiile:


V ( y; Y )   v j  min y j , Y j   p j  max 0; y j  Y j   max 
n

y
(1.32)
j 1

a
j 1
ij y j  bi , i  1, m (1.33)

y j  y j  y j , j  1, n (1.34)
Y j  Y j  Y j , j  1, n (1.35)
Indiferent de natura cererii (poartă ea un caracter determinist, sau este cu
caracter aleator sau incert) există situaţii când modelul dat se reduce la un model
clasic bine cunoscut:
n
V ( y )   v j y j  max (1.36)
y
j 1

a
j 1
ij y j  bi , i  1, m (1.37)

54
y j  0, j  1, n (1.38)
în particular aceasta are loc când valorile minimal posibile ale cererii pentru
fiecare produs respectiv depăşeşte valorile maximale posibile ale ofertei din
cadrul domeniului admisibil de valori.
Pentru fiecare situaţie (caz determinist, stochastic şi incertitudine) se propun
algoritmi numerici iterativi care permit de a obţine soluţii (decizii) aproximative
dar suficient de apropiate de cele optime. Putem remarca că pentru modelul iniţial
astfel de metode ca Simplex sau alte metode finite nu pot fi aplicate, deoarece
modelul nu este linear şi mai are o proprietate specifică (deosebită) este
nediferenţiabil în raport cu factorul de decizie.
Analizând proprietăţile funcţiei scop putem constata că aceasta este concavă
în raport cu factorul de decizie (Fig.5.1)

 j(yj; Yj)
vj·Yj
Vj·yj

(Vj + pj)·Yj - pj·yj

yj Yj yj yj

Fig. 5.1 Funcţiei scop în raport cu factorul de decizie


Pentru mari variaţii ale cererii la unul şi acelaşi output valoarea funcţiei
venitului poate varia într-un diapazon destul de mare luând chiar şi valori
negative, situaţii foarte nedorite, care pot apărea în caz dacă cererea se comportă
în mod aleator sau incert (Fig.5.2).

55
 j(yj;
Yj )

 j(yjmax;Yj)
 j(yj; Yj)
+

0
yjmax Yj yj Yj yjmax
- Outputul
yi

Fig.5.2 Variaţia funţiei venitului


Astfel se înregistrează variaţii mici ale venitului pentru lansări mici şi variaţii
mari pentru lansări considerabile.
În raport cu factorul de cerere această funcţie  j(yj; Yj) care exprimă venitul
doar în raport cu produsul j are următorul comportament (Fig.5.3). Astfel venitul
creşte linear de la valoarea -pj ·yj pentru o cerere nulă până în momentul când
cererea devine egală cu outputul, în continuare valoarea acestui venit rămânând
neschimbată pentru valori ale cererii ce depăşesc oferta.

 j(yj; Yj)
Vj ·yj

(Vj + pj)·Yj - pj·yj

yj Yj

-pj ·yj

Fig.5.3 Comportamentul funcţiei scop în raport cu factorul de cerere

56
Algoritmul 1. Cazul stochastic (risc). Are forma (5.8) în care
 g Vk ( y k ; Y k ), dacã Ψ(y k )  0
k  
  g  ( y ), dacã Ψ(y k )  0
k k

(1.39)
unde Y k reprezintă o simulare independentă a vectorului-cerere Y obţinută la
iteraţia k în conformitate cu distribuţia acestuia pe domeniul de valori posibile
D(Y) ale acestui factor. În acest caz se presupun cunoscute probabilităţile
distribuţiei factorului de cerere.
În algoritmul 2, elaborat pentru luarea de decizii în condiţii de
incertitudine. Vom presupune că decizia se ia în aspectul maxmin (Wald), formal
având aceeaşi structură (5.8), în conformitate cu o anumită distribuţie la fiecare
iteraţie k se simulează un set al cererii notat cu Y~ k .  k se ia ca şi în cazul
algoritmului stochastic, unde:
~
Y k 1 , daca V ( y k , Y k 1 ) V ( y k , Y k )
Y k   ~k k 1 ~k (1.40)
 Y , daca V ( y , Y ) V ( y , Y )
k k

În baza unor studii de caz, se expun rezultatele numerice ce vin să confirme,


din punct de vedere practic, aplicabilitatea algoritmilor descrişi mai înainte.
Se consideră următoarea problemă. O firmă poate lansa două tipuri de
bunuri.
0.1 0.2 
Matricea tehnologică A ; vectorul resurselor disponibile
0.5 0.3

3 
b ;
4 

venitul pe o unitate de produs V=(0,5; 1,5); costul pentru o unitate de produs


P=(0,25; 0,8);
Oferta minimală este ymin=(0;0), iar cea maximală ymax=(20;20).
Metoda simplex nu poate fi adaptată la un asemenea model (risc şi
incertitudine). În al doilea rând, modelul nu este liniar, este un model

57
nediferenţiabil, această situaţie fiind cauzată de raportul dintre posibilităţile output
al sistemului şi de caracterul de manifestare a cererii.

Remarcă: Modelul analizat se reduce la cazul modelului clasic liniar (fie


certitudine, risc sau incertitudine) dacă toate cererile posibile depăşesc
semnificativ posibilităţile de output ale sistemului (se au în vedere variantele
posibile de output, adică restricţiile problemei).

58
CONCLUZIE

Incertitudinea reprezintă un element component al procesului decizional,


influenţînd activ dinamica acestuia. Conform modelului de luare a deciziei in
condiţii de incertitudine, procesul decizional tinde sa treacă prin aceleaşi faze ca
cele menţionate in modelele bazate pe calculul cert: formularea problemei,
elaborarea listei de soluţii alternative, evaluarea, ierarhizarea acestor soluţii şi
alegerea celei optime. Există desigur deosebiri între cele doua variante. In cazul
primei variante, decizia este presupusă a fi corectă in sensul că ea este cu
siguranţa decizia cea mai bună posibil. In cazul modelului probabilist în care
incertitudinea este de provenienţă strict ontologică, soluţia aleasă este corectă în
sensul că are probabilitatea obiectivă cea mai ridicată de a fi soluţia cea mai bună.
În cazul modelului probabilist în care incertitudinea este cognitivă, decizia luată
este corectă în sensul că ea are, în virtutea cunoştinţelor de care dispunem în
momentul luării deciziei, probabilitatea cea mai ridicată de a fi soluţia cea mai
bună.

59
Anexa 1

5.2. Realizarea programului

În continuare vom analiza comportamentul ofertei în dependenţă de


comportamentul cererii şi venitul firmei în diferite condiţii.
Risc (Cazul stochastic). Cererea se consideră un vector aleator astfel încât
prima sa componentă este o variabilă aleatoare discretă (pentru care sunt date
probabilităţile respective), iar a doua componentă reprezintă o variabilă aleatoare
continuă distribuită uniform pe intervalul dat. Aceste variabile sunt introduse în
câmpurile formei „Risc - Cerere” prezentă în figura 5.4.

Fig. 5.4. Forma „Risc - Cerere”


Folosind această informaţie simulăm diverse valori posibile ale cererii care
alternează cu procesul iterativ de căutare a variantei optime de output
60
(considerând ca obiectiv maximizarea venitului mediu). Rezultatele de calcul se
prezintă în figura 5.5.
Din partea stăngă a ferestrei sunt introduse datele iniţiale, iar după apăsarea
butonului “Calcul” se obţin datele finale şi prezentarea grafică a modificării
venitului mediu.

Fig.5.5. Rezultatele de calcul: problema în condiţii de risc

Incertitudine: Cazul este similar cu varianta stochastică (priviţi figura 5.4),


cererea manifestându-se cu aceleaşi valori posibile. Decizia de lansare a variantei
optime de produse se ia în conformitate cu criteriul Wald (maxmin).
Algoritmul corespunzător în aceste condiţii se reprezintă prin următoarele
date pe care le obţinem în partea dreaptă a ferestrei prezentată în figura 5.6.
Observăm că venitul (ca şi în condiţii de risc), odată cu creşterea numărului
de iteraţii, are tendinţa de creştere asimptotică spre plafonul ce reprezintă valoarea
maximă a venitului.

61
Figura 5.6. Rezultatele de calcul: problema în condiţii de incertitudine

Decizia constituie punctul central al activităţii de management întrucât ea se


regăseşte în toate funcţiile acestuia, şi mai mult, integrarea firmei în cadrul
mediului depinde de calitatea deciziei. Calitatea procesului decizional
influenţează reducerea costurilor, eficienţa folosirii fondurilor, creşterea profitului
etc. Cu acest scop a fost elaborată aplicaţia „Luarea deciziilor în condiţii de risc şi
incertitudine”.

5.3. Aprecierea eficacităţii sistemului

62
Eficienţa economică a sistemului informatic este redată de raportul dintre
rezultatul util (efectul sistemului informatic în procesul de conducere) şi
cheltuielile (efortul SI) avansate pentru realizarea efectului dorit.

Pentru aprecierea eficienţei economice, ca indicatori pot servi: efectul


economic anual, sporirea ratei şi/sau a profitului, economia anuală de la reducerea
costului producţiei, durata de recuperare a investiţiilor, sporirea rentabilităţii
fabricaţiei, reducerea costului producţiei, durata de recuperare a investiţiilor,
reducerea fondului de salariu, etc. De asemenea, la compararea alternativelor de
realizare, se folosesc şi asemenea indicatori ca: cheltuielile exprimate anuale,
volumul investiţiilor capitale, coeficientul de risc al investiţiei ş.a.

La analiza economică a produselor informatice, alegerea indicatorilor


pentru aprecierea alternativelor de soluţii este de primă importanţă. în funcţie de
produsul informatic cercetat şi domeniul utilizării acestuia, setul de indicatori
folosit poate fi diferit. Totodată unii indicatori pot fi folosiţi ca criterii de
optimizare la selectarea alternativelor, iar valorile acestora ca restricţii necesare.
Ca restricţii la crearea produselor informatice deseori se folosesc: volumul maxim
admis de investiţii, durata minimă admisă de recuperare a investiţiilor ş.a.

Efectele economice sunt datorate unor factori, dintre care cei mai importanţi
sunt:
modernizarea procesului de conducere tactică, strategică şi operativă
prin intermediul sistemului informatic;
minimalizarea timpului de răspuns pentru sistemul proiectat;
utilizarea unui volum minim de resurse financiare şi materiale;
mărirea gradului de informatizare a activităţii de bază, inclusiv a
unităţilor economice externe.
La proiectarea sistemului informatic este necesar să se fundamenteze un
sistem de indicatori a eficientei economice care ne va permite compararea tuturor
variantelor posibile de realizare în raport cu resursele informatice existente.

63
Aceşti indicatori vor fi determinaţi pe bază de calcule, iar în faza de exploatare
curentă a sistemului prin observări şi măsurări concrete.

Calculele se efectuază în baza valorilor costurilor, preţurilor, tarifelor etc. la


momentul efectuării acestora. În calcule, valorile indicatorilor trebuie să fie
comparabile: în timp, după elementele de cheltuieli, după preţuri şi tarife.

Pentru calcularea economiei anuale este necesar de calculat cheltuielile


privind prelucrarea informaţiei în varianta de bază (manual) Cb, şi calcularea
cheltuielilor din varianta de proiectare Ca.
Iniţial se analizează cheltuielile privind prelucrarea informaţiei în varianta
de bază, conform indicatorilor de mai jos:
1. Preţul unitar pe oră privind prelucrarea informaţiei

S
U t  med *I c , (5.10)
Tlun

unde:
Tlun– fondul de timp al unui lucrător – 182 ore
Smed– salariul mediu al operatorului – 400 lei
Ic–coeficientul privind salariul suplimentar, decontări în fondul social–1,5
Ut=400/182*1.5=3,29 lei
2. Cheltuieli de muncă pentru realizarea calculelor în varianta de bază
n
C mb  Vinf * (5.11)
B

unde:
Vinf – volumul informaţiilor 48560 semne
n – periodicitatea de efectuare a calculelor – 12 ori pe an
B – normativul de prelucrare a informaţiei – 350 semne pe oră.
Cmb=48560*12/350=1664,91 ore
3. Numărul convenţional de lucrători

Pb=Cmb/Tan (5.12)

64
unde:
Tan – Fondul de timp a unui lucrător – 2100 ore
Pb=1664,9/2100=0,79 oameni
4. Cheltuieli privind prelucrarea informaţiei în varianta de bază

Cb=Tan*Ut*Pb (5.13)

Cb=2100*3,29*0,79=5458,11 lei
Pentru calcularea cheltuielilor în varianta proiectată va fi nevoie de
următoarele date:
1. Ore-maşină necesare pentru prelucrarea informaţiei
Vin
Tm   Tmed (5.14)
3600

unde:
Vin – volumul de date iniţial de calcul –30900 semne
Tmed – timpul mediu necesar la realizarea operaţiilor de calcul pentru
indicatorii de informaţii iniţiale inclusiv introducerea şi emiterea informaţiei – 6
secunde
Tm=30900*6/3600=60.08 ore–maşină
2. Valoarea timp-maşină pentru prelucrarea informaţiei

Cm=Tm*P1m (5.15)

unde:
P1m – preţul unei maşini-ore – 1.1 lei
Cm=60.08*1.1=66,09 lei
3. Cheltuieli privind întocmirea, controlul şi perfectarea datelor rezultative

Ccof=Kof*Cm (5.16)

unde:
Kof – coeficientul privind timpul de control, întocmirea şi emiterea datelor
finale – 0.2

65
Ccof=0.2*66,09=13,22 lei
4. Cheltuieli privind prelucrarea automată a datelor
Ca=(Cm+Ccof)*n (5.17)
Ca=(66,09+13,22)*12=951,72 lei
5. Economia anuală a cheltuielilor curente

Ea=Cb– Ca (5.18)

Ea=5458,11 – 951,72= 4506,39lei


Eficienţa economică anuală a sistemului proiectat va fi în sumă de
4506,39lei.
Această eficienţă este un indicator absolut a eficacităţii economice a
proiectului elaborat şi reprezintă reducerea cheltuielilor financiare pentru
prelucrarea informaţiei faţă de varianta de bază.
Pe baza rezultatelor obţinute anterior se determină indicatorii relativi şi
anume:
Coeficientul de economisire a mijloacelor băneşti:

Kc=Ea/Cb (5.19)

Kc=4506,39 / 5458,11 = 0,2856


Procentul reducerii cheltuielilor financiare:
Pc=0,2856*100%=28,56%
După implementarea subsistemului informatic, într-un an de activitate a
acestuia, noi vom face economii de 28,56% din cheltuielile pentru prelucrarea
manuală.
Indicile schimbării cheltuielilor:

Is=Cb/Ca (5.20)

Is=5458,11 / 951,72=5,73
Deci cheltuielile băneşti în varianta de proiect sunt de 5,73 ori mai mici

66
comparativ cu varianta de bază.
Indicele absolut al reducerii cheltuielilor de muncă:

Erm=Cmb-Cma (5.21)

Erm=1664,91 - 1254.8=410,11 ore


Coeficientul reducerii resurselor de muncă:

Km=Erm/Cmb (5.22)

Km=410,11 / 1664,91 = 0.2463


Procentul reducerii cheltuielilor de muncă:
Pm=0.2463*100%=24,63%
Resursele de muncă se vor micşora în cazul implementării subsistemului cu
24,63% faţă de varianta de bază.

67
Anexa 2
1

Start
Nr. de produse: n.
Nr. de resurse: m.
2 Matricea tehnologică a[i][j].
Datele Vectorul resurselor disponibile: b[i].
iniţial Venitul pe o unitate de produs: V[j].
Costul pentru o unitate de produs P[j].
086
30
Val. iniţiale a resurselor y şi intervalul
de variaţie: y1[i], ymin[i], ymax[i].
3 Valorile E şi H: Eps, h.
psi[i]=0;

5 4
j<=m
psi[i]=psi[i]+a[i][j]*y1[j]; j=0,m

j>m
6
7 i<=n
i=0,n
psi[i]=psi[i]-b[i];

i>n

8 9
da
psimax<psi[i] psimax=psi[i]; l=i;

nu

10
i<=n
i=0,n

i>n

11
nu
psimax<Eps

da

12 13
nu
y1[j]<=Y[j]
teta[j]=V[j];

da
14
teta[j]=-P[j];

15
j>m
j=0,m

j<=m

086
16

Fig. A2.1 Schema logică a algoritmului de soluţionare a modelelor de


certitudine

68
Anexa2 Continuare

085
15

16 da
psimax<Eps

nu
17
18
j>m j=0,m
teta[j]=-a[l][j];

j<=m
19

ybar[j]=y1[j]+h*teta[j];

20 da 21
ybar[j]<ymin[j] y2[j]=ymin[j];

nu
22 da
23
ybar[j]>ymax[j] y2[j]=ymax[j];

24
y2[j]=ybar[j];

25

j>m j=0,m

j<=m
27
26 da
y1[j]<=Y[j] Vmax=Vmax+V[j]*y1[j];

nu
28
Vmax=Vmax+V[j]*Y[j]-P[j]*(y1[j]-Y[j]);

29
j>m
j = 0, m

j<=m
30 03 085
k = 0, kstop k > kstop

k<= kstop

31 32
Obţinerea soluţiei
Înscrierea rezultatelor
problemei
în fişier

33
Stop

Fig. A2.1 Continuare

69
Anexa2 Continuare
1
Start

Nr. de produse: n.
Nr. de resurse: m.
2
Matricea tehnologică a[i][j].
Datele Vectorul resurselor disponibile: b[i].
iniţial Venitul pe o unitate de produs: V[j].
Costul pentru o unitate de produs P[j].
Val. iniţiale a resurselor y şi intervalul
de variaţie: y1[i], ymin[i], ymax[i].
4 3
Valorile E şi H: Eps, h.
j<=m j = 0, m
YL[z][j] = Random

j>m
5
z<=L
z = 0, L

z>L
41 089

6
psi[i]=0; Vmax=0; Vmed=0;

8 7
j<=m j = 0, m
Y[j] = Random

j>m
9
i<=Pk
i = 0, Pk

i>Pk

11 10
j<=m j=0,m
psi[i]=psi[i]+a[i][j]*y1[j];

j>m
12
13 i<=n
i=0,n
psi[i]=psi[i]-b[i];

i>n

14 15
da
psimax<psi[i] psimax=psi[i]; l=i;

nu

16
i<=n
i=0,n

i>n

088
17

Fig. A2.2 Schema logică a algoritmului de soluţionare a modelelor de risc

70
Anexa2 Continuare

087
16

17 nu
psimax<Eps

da

18 19
nu
y1[j]<=Y[j]
teta[j]=V[j];

da
20
teta[j]=-P[j];

21
j>m
j=0,m

j<=m

22 da
psimax<Eps

nu
23
24 j>m
teta[j]=-a[l][j]; j=0,m

j<=m
25
ybar[j]=y1[j]+h*teta[j];

26 da 27
ybar[j]<ymin[j] y2[j]=ymin[j];

nu
28 da 29
ybar[j]>ymax[j] y2[j]=ymax[j];

nu
30
y2[j]=ybar[j];

31
j>m j=0,m

j<=m

089
32

Fig. A2.2 Continuare

71
Anexa2 Continuare

088
31

33
32 da
y1[j]<=Y[j] Vmax=Vmax+V[j]*y1[j];

nu
34
Vmax=Vmax+V[j]*Y[j]-P[j]*(y1[j]-Y[j]);

35
j>m
j = 0, m

j<=m
37
36 da
y1[j]<=YL[j] Vmed=Vmed+V[j]*y1[j];

nu
38
Vmed=Vmed+V[j]*YL[j]-P[j]*(y1[j]-YL[j]);

39
j>m
j = 0, m

j<=m

40
z>L
z = 0, L

z<=L
41
k = 0, kstop k > kstop
06 087

k<= kstop

42 43
Obţinerea soluţiei
Înscrierea rezultatelor
problemei
în fişier

44

Stop

Fig. A2.2 Continuare

72
Anexa 3: Codul sursă

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Index.h"

#include "CazulB.h"
#include "CazulBCerere.h"
#include "CazulC.h"
#include "CazulCCerere.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TIndexForm *IndexForm;
//---------------------------------------------------------------------------
__fastcall TIndexForm::TIndexForm(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TIndexForm::Iesire1Click(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------
void __fastcall TIndexForm::Risc1Click(TObject *Sender)
{
//CazulBForm->Panel5->Caption=0;
CazulBForm->Show();
CazulBForm->Enabled=false;
CazulBCerereForm->Edit1->Enabled=true;
CazulBCerereForm->Edit2->Enabled=true;
CazulBCerereForm->Show();
IndexForm->Visible=false;
}
//---------------------------------------------------------------------------

void __fastcall TIndexForm::Incertitudine1Click(TObject *Sender)


{
CazulCForm->Show();
CazulCForm->Enabled=false;
CazulCCerereForm->Edit1->Enabled=true;
CazulCCerereForm->Edit2->Enabled=true;
CazulCCerereForm->Show();
IndexForm->Visible=false;
}
//---------------------------------------------------------------------------
Cazul A
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <io.h>
#include <vcl.h>
#pragma hdrstop

#include "Index.h"
#include "CazulA.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TCazulAForm *CazulAForm;
//---------------------------------------------------------------------------
__fastcall TCazulAForm::TCazulAForm(TComponent* Owner)
: TForm(Owner)
{
Label13->Visible=false;
Image1->Canvas->MoveTo(0,0);
int X=10,Y=210;

73
int i,j;
//---- Graficul ------------------
//---- Axa X -------------------
Image1->Canvas->MoveTo(5,Y);
Image1->Canvas->LineTo(440,Y);

//------ Gradatie ----------------


for(i=1;i<=10;i++)
{
Image1->Canvas->MoveTo(X+i*40,207);
Image1->Canvas->LineTo(X+i*40,213);
}

//------- Sageata ----------------


Image1->Canvas->MoveTo(430,205);
Image1->Canvas->LineTo(440,210);

Image1->Canvas->MoveTo(430,215);
Image1->Canvas->LineTo(440,210);

//--------------------------------
//---- Axa Y -------------------
Image1->Canvas->MoveTo(X,10);
Image1->Canvas->LineTo(X,215);

//------ Gradatie ---------------


for(i=1;i<10;i++)
{
Image1->Canvas->MoveTo(7, Y-i*20);
Image1->Canvas->LineTo(13,Y-i*20);
}

//------- Sageata ----------------


Image1->Canvas->MoveTo(10,10);
Image1->Canvas->LineTo(15,20);

Image1->Canvas->MoveTo(10,10);
Image1->Canvas->LineTo(5,20);

}
//---------------------------------------------------------------------------
void __fastcall TCazulAForm::BitBtn3Click(TObject *Sender)
{
int i,j,n,m;
String s;
n=m=2;

StringGrid1->ColCount=m+3;
StringGrid1->Cells[0][0]="k";
for(j=1;j<=m;j++)
{
s="y("; s=s+j; s=s+")";
StringGrid1->Cells[j][0]=s;
}
StringGrid1->Cells[m+1][0]="Fi";
StringGrid1->Cells[m+2][0]="V";

StringGrid2->ColCount=m;
StringGrid2->Cells[0][0]=3;
StringGrid2->Cells[1][0]=7;

StringGrid3->ColCount=m;
StringGrid3->Cells[0][0]="0";
StringGrid3->Cells[1][0]="0";

StringGrid4->ColCount=m;
StringGrid4->Cells[0][0]=0;
StringGrid4->Cells[1][0]=0;

StringGrid5->ColCount=m;
StringGrid5->Cells[0][0]=20;
StringGrid5->Cells[1][0]=20;

74
StringGrid6->ColCount=m;
StringGrid6->Cells[0][0]=0.5;
StringGrid6->Cells[1][0]=1.5;

StringGrid7->ColCount=m;
StringGrid7->Cells[0][0]=0.25;
StringGrid7->Cells[1][0]=0.8;

StringGrid8->RowCount=n;
StringGrid8->Cells[0][0]=3;
StringGrid8->Cells[0][1]=4;

StringGrid9->ColCount=m;
StringGrid9->RowCount=n;
StringGrid9->Cells[0][0]=0.1;
StringGrid9->Cells[1][0]=0.2;
StringGrid9->Cells[0][1]=0.5;
StringGrid9->Cells[1][1]=0.3;

Edit1->Text=2;
Edit2->Text=0.0001;
Edit3->Text=2;
Edit4->Text=20;
Edit5->Text=1000;
Edit6->Text=5;

Label13->Visible=false;

}
//---------------------------------------------------------------------------
void __fastcall TCazulAForm::BitBtn2Click(TObject *Sender)
{
int j,n,m;
String s;
n=StrToInt(Edit1->Text);
m=StrToInt(Edit3->Text);

StringGrid2->ColCount=m;
StringGrid2->Enabled=true;

StringGrid3->ColCount=m;
StringGrid3->Enabled=true;

StringGrid4->ColCount=m;
StringGrid4->Enabled=true;

StringGrid5->ColCount=m;
StringGrid5->Enabled=true;

StringGrid6->ColCount=m;
StringGrid6->Enabled=true;

StringGrid7->ColCount=m;
StringGrid7->Enabled=true;

StringGrid8->RowCount=n;
StringGrid8->Enabled=true;

StringGrid9->ColCount=m;
StringGrid9->RowCount=n;
StringGrid9->Enabled=true;

StringGrid1->ColCount=m+3;
StringGrid1->Cells[0][0]="k";
for(j=1;j<=m;j++)
{
s="y("; s=s+j; s=s+")";
StringGrid1->Cells[j][0]=s;
}
StringGrid1->Cells[m+1][0]="Fi";
StringGrid1->Cells[m+2][0]="V";

Label13->Visible=false;

75
//---------------------------------------------------------------------------
void __fastcall TCazulAForm::BitBtn1Click(TObject *Sender)
{
int i,j,n,m,H,k,kstop,c,cdv;
int l; // valoarea maxima a psi
double a[20][20],b[20];
double y1[20],y2[20],ybar[20],Y[20],ymin[20],ymax[20];
double psi[20],psimax,Eps;
double teta[20],V[20],P[20],Vmax;
double h;
String s;
int XG=10,YG=210,YG1;
int XG2=10,YG2=210;

//---- Graficul ------------------


//-- Curatirea ---------------
Graphics::TBitmap *Bitmap;
Bitmap = new Graphics::TBitmap();
Bitmap->Width = 450;
Bitmap->Height = 220;
Image1->Picture->Graphic = Bitmap;

//---- Axa X -------------------


Image1->Canvas->MoveTo(5,YG2);
Image1->Canvas->LineTo(440,YG2);

//------ Gradatie ----------------


for(i=1;i<=10;i++)
{
Image1->Canvas->MoveTo(XG2+i*40,207);
Image1->Canvas->LineTo(XG2+i*40,213);
}

//------- Sageata ----------------


Image1->Canvas->MoveTo(430,205);
Image1->Canvas->LineTo(440,210);

Image1->Canvas->MoveTo(430,215);
Image1->Canvas->LineTo(440,210);

//--------------------------------
//---- Axa Y -------------------
Image1->Canvas->MoveTo(XG2,10);
Image1->Canvas->LineTo(XG2,215);

//------ Gradatie ---------------


for(i=1;i<10;i++)
{
Image1->Canvas->MoveTo(7, YG2-i*20);
Image1->Canvas->LineTo(13,YG2-i*20);
}

//------- Sageata ----------------


Image1->Canvas->MoveTo(10,10);
Image1->Canvas->LineTo(15,20);

Image1->Canvas->MoveTo(10,10);
Image1->Canvas->LineTo(5,20);

Label13->Visible=false;

n=StrToInt(Edit1->Text);
m=StrToInt(Edit3->Text);
Eps=StrToFloat(Edit2->Text);
H=StrToInt(Edit4->Text);
kstop=StrToInt(Edit5->Text);
cdv=StrToInt(Edit6->Text);

for(i=0;i<n;i++)
for(j=0;j<m;j++)
a[i][j]=StrToFloat(StringGrid9->Cells[j][i]);

for(j=0;j<m;j++)
{
Y[j]=StrToFloat(StringGrid2->Cells[j][0]);
y1[j]=StrToFloat(StringGrid3->Cells[j][0]);

76
ymin[j]=StrToFloat(StringGrid4->Cells[j][0]);
ymax[j]=StrToFloat(StringGrid5->Cells[j][0]);
V[j]=StrToFloat(StringGrid6->Cells[j][0]);
P[j]=StrToFloat(StringGrid7->Cells[j][0]);
}

for(i=0;i<n;i++)
{
b[i]=StrToFloat(StringGrid8->Cells[0][i]);
psi[i]=0;
}

k=0;
//---------------------------------
do
{
psimax=0;
Vmax=0;

for(i=0;i<n;i++)
{
psi[i]=0;
for(j=0;j<m;j++)
psi[i]=psi[i]+a[i][j]*y1[j];
psi[i]=psi[i]-b[i];
}

for(i=0;i<n;i++)
if(psimax<psi[i])
{
psimax=psi[i];
l=i;
}

if(psimax<=Eps)
for(j=0;j<m;j++)
if(y1[j]<=Y[j])
teta[j]=V[j];
else
teta[j]=-P[j];
else
for(j=0;j<m;j++)
teta[j]=-a[l][j];

h=H/(k+1.0);

for(j=0;j<m;j++)
{
ybar[j]=y1[j]+h*teta[j];
if(ybar[j]<ymin[j])
y2[j]=ymin[j];
else
if(ybar[j]>ymax[j])
y2[j]=ymax[j];
else
y2[j]=ybar[j];
}

for(j=0;j<m;j++)
{
if(y1[j]<=Y[j])
Vmax=Vmax+V[j]*y1[j];
else
Vmax=Vmax+V[j]*Y[j]-P[j]*(y1[j]-Y[j]);
}

//--- afisare --------


StringGrid1->RowCount=k+2;
StringGrid1->Cells[0][k+1]=k;
for(j=0;j<m;j++)
{
c=y1[j]*pow(10.0,cdv);
y1[j]=c/pow(10.0,cdv);
StringGrid1->Cells[j+1][k+1]=y1[j];
}

77
c=psimax*pow(10.0,cdv);
psimax=c/pow(10.0,cdv);
StringGrid1->Cells[m+1][k+1]=psimax;

c=Vmax*pow(10.0,cdv);
Vmax=c/pow(10.0,cdv);
StringGrid1->Cells[m+2][k+1]=Vmax;

//--- Graficul -----------

//x = div(k,25);

if(k==0)
YG1=YG-Vmax*10;
/*
if(x.rem==0)
{
Image1->Canvas->MoveTo(XG,YG1);
XG=XG+10;
YG1=YG-Vmax*10;
Image1->Canvas->LineTo(XG,YG1);

}
if(k==100)break;
*/
if(k==100)
{
Image1->Canvas->MoveTo(XG,YG1);
XG=XG+40;
YG1=YG-Vmax*10;
Image1->Canvas->LineTo(XG,YG1);
}

if(k==200)
{
Image1->Canvas->MoveTo(XG,YG1);
XG=XG+40;
YG1=YG-Vmax*10;
Image1->Canvas->LineTo(XG,YG1);
}

if(k==300)
{
Image1->Canvas->MoveTo(XG,YG1);
XG=XG+40;
YG1=YG-Vmax*10;
Image1->Canvas->LineTo(XG,YG1);
}

if(k==400)
{
Image1->Canvas->MoveTo(XG,YG1);
XG=XG+40;
YG1=YG-Vmax*10;
Image1->Canvas->LineTo(XG,YG1);
}

if(k==500)
{
Image1->Canvas->MoveTo(XG,YG1);
XG=XG+40;
YG1=YG-Vmax*10;
Image1->Canvas->LineTo(XG,YG1);
}

if(k==600)
{
Image1->Canvas->MoveTo(XG,YG1);
XG=XG+40;
YG1=YG-Vmax*10;
Image1->Canvas->LineTo(XG,YG1);
}

78
if(k==700)
{
Image1->Canvas->MoveTo(XG,YG1);
XG=XG+40;
YG1=YG-Vmax*10;
Image1->Canvas->LineTo(XG,YG1);
}

if(k==800)
{
Image1->Canvas->MoveTo(XG,YG1);
XG=XG+40;
YG1=YG-Vmax*10;
Image1->Canvas->LineTo(XG,YG1);
}

if(k==900)
{
Image1->Canvas->MoveTo(XG,YG1);
XG=XG+40;
YG1=YG-Vmax*10;
Image1->Canvas->LineTo(XG,YG1);
}

if(k==1000)
{
Image1->Canvas->MoveTo(XG,YG1);
XG=XG+40;
YG1=YG-Vmax*10;
Image1->Canvas->LineTo(XG,YG1);
}
//--- ----------------
for(j=0;j<m;j++)
y1[j]=y2[j];

//--- Kriteriul de stopare dupa Psi <= Eps


/*if(psimax<=Eps)
{
Label14->Visible=true;
break;
}
*/
//--- ----------------
for(j=0;j<m;j++)
y1[j]=y2[j];

k++;
}
while(k<=kstop);

if(k>=kstop)
Label13->Visible=true;

}
//---------------------------------------------------------------------------
void __fastcall TCazulAForm::Inapoi1Click(TObject *Sender)
{
IndexForm->Show();
IndexForm->Visible=true;
Close();
}
//---------------------------------------------------------------------------
void __fastcall TCazulAForm::Iesire1Click(TObject *Sender)
{
IndexForm->Close();
}
//---------------------------------------------------------------------------

void __fastcall TCazulAForm::BitBtn4Click(TObject *Sender)

79
{
int i,j,n,m;
String s;
n=m=2;

StringGrid1->ColCount=m+3;
StringGrid1->Cells[0][0]="k";
for(j=1;j<=m;j++)
{
s="y("; s=s+j; s=s+")";
StringGrid1->Cells[j][0]=s;
}
StringGrid1->Cells[m+1][0]="Fi";
StringGrid1->Cells[m+2][0]="V";

StringGrid2->ColCount=m;
StringGrid2->Cells[0][0]=3;
StringGrid2->Cells[1][0]=7;

StringGrid3->ColCount=m;
StringGrid3->Cells[0][0]=20;
StringGrid3->Cells[1][0]=20;

StringGrid4->ColCount=m;
StringGrid4->Cells[0][0]=0;
StringGrid4->Cells[1][0]=0;

StringGrid5->ColCount=m;
StringGrid5->Cells[0][0]=20;
StringGrid5->Cells[1][0]=20;

StringGrid6->ColCount=m;
StringGrid6->Cells[0][0]=0.5;
StringGrid6->Cells[1][0]=1.5;

StringGrid7->ColCount=m;
StringGrid7->Cells[0][0]=0.25;
StringGrid7->Cells[1][0]=0.8;

StringGrid8->RowCount=n;
StringGrid8->Cells[0][0]=3;
StringGrid8->Cells[0][1]=4;

StringGrid9->ColCount=m;
StringGrid9->RowCount=n;
StringGrid9->Cells[0][0]=0.1;
StringGrid9->Cells[1][0]=0.2;
StringGrid9->Cells[0][1]=0.5;
StringGrid9->Cells[1][1]=0.3;

Edit1->Text=2;
Edit2->Text=0.0001;
Edit3->Text=2;
Edit4->Text=20;
Edit5->Text=1000;
Edit6->Text=5;

Label13->Visible=false;
}
//---------------------------------------------------------------------------

void __fastcall TCazulAForm::BitBtn5Click(TObject *Sender)


{
int i,j,n,m;
String s;
n=m=2;

StringGrid1->ColCount=m+3;
StringGrid1->Cells[0][0]="k";
for(j=1;j<=m;j++)
{
s="y("; s=s+j; s=s+")";
StringGrid1->Cells[j][0]=s;
}
StringGrid1->Cells[m+1][0]="Fi";

80
StringGrid1->Cells[m+2][0]="V";

StringGrid2->ColCount=m;
StringGrid2->Cells[0][0]=30;
StringGrid2->Cells[1][0]=40;

StringGrid3->ColCount=m;
StringGrid3->Cells[0][0]=0;
StringGrid3->Cells[1][0]=0;

StringGrid4->ColCount=m;
StringGrid4->Cells[0][0]=0;
StringGrid4->Cells[1][0]=0;

StringGrid5->ColCount=m;
StringGrid5->Cells[0][0]=20;
StringGrid5->Cells[1][0]=20;

StringGrid6->ColCount=m;
StringGrid6->Cells[0][0]=0.5;
StringGrid6->Cells[1][0]=1.5;

StringGrid7->ColCount=m;
StringGrid7->Cells[0][0]=0.25;
StringGrid7->Cells[1][0]=0.8;

StringGrid8->RowCount=n;
StringGrid8->Cells[0][0]=3;
StringGrid8->Cells[0][1]=4;

StringGrid9->ColCount=m;
StringGrid9->RowCount=n;
StringGrid9->Cells[0][0]=0.1;
StringGrid9->Cells[1][0]=0.2;
StringGrid9->Cells[0][1]=0.5;
StringGrid9->Cells[1][1]=0.3;

Edit1->Text=2;
Edit2->Text=0.0001;
Edit3->Text=2;
Edit4->Text=20;
Edit5->Text=1000;
Edit6->Text=5;

Label13->Visible=false;
}
//---------------------------------------------------------------------------

void __fastcall TCazulAForm::BitBtn6Click(TObject *Sender)


{
int i,j,n,m;
String s;
n=m=2;

StringGrid1->ColCount=m+3;
StringGrid1->Cells[0][0]="k";
for(j=1;j<=m;j++)
{
s="y("; s=s+j; s=s+")";
StringGrid1->Cells[j][0]=s;
}
StringGrid1->Cells[m+1][0]="Fi";
StringGrid1->Cells[m+2][0]="V";

StringGrid2->ColCount=m;
StringGrid2->Cells[0][0]=30;
StringGrid2->Cells[1][0]=40;

StringGrid3->ColCount=m;
StringGrid3->Cells[0][0]=20;
StringGrid3->Cells[1][0]=20;

StringGrid4->ColCount=m;
StringGrid4->Cells[0][0]=0;

81
StringGrid4->Cells[1][0]=0;

StringGrid5->ColCount=m;
StringGrid5->Cells[0][0]=20;
StringGrid5->Cells[1][0]=20;

StringGrid6->ColCount=m;
StringGrid6->Cells[0][0]=0.5;
StringGrid6->Cells[1][0]=1.5;

StringGrid7->ColCount=m;
StringGrid7->Cells[0][0]=0.25;
StringGrid7->Cells[1][0]=0.8;

StringGrid8->RowCount=n;
StringGrid8->Cells[0][0]=3;
StringGrid8->Cells[0][1]=4;

StringGrid9->ColCount=m;
StringGrid9->RowCount=n;
StringGrid9->Cells[0][0]=0.1;
StringGrid9->Cells[1][0]=0.2;
StringGrid9->Cells[0][1]=0.5;
StringGrid9->Cells[1][1]=0.3;

Edit1->Text=2;
Edit2->Text=0.0001;
Edit3->Text=2;
Edit4->Text=20;
Edit5->Text=1000;
Edit6->Text=5;

Label13->Visible=false;
}
//---------------------------------------------------------------------------

Cazul B
//---------------------------------------------------------------------------
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
#include <vcl.h>

#pragma hdrstop

#include "Index.h"
#include "CazulB.h"
#include "CazulBCerere.h"

div_t x;

//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TCazulBForm *CazulBForm;
//---------------------------------------------------------------------------
__fastcall TCazulBForm::TCazulBForm(TComponent* Owner)
: TForm(Owner)
{
Image1->Canvas->MoveTo(0,0);
int X=10,Y=210;
int i,j;
//---- Graficul ------------------
//---- Axa X -------------------
Image1->Canvas->MoveTo(5,Y);
Image1->Canvas->LineTo(440,Y);

//------ Gradatie ----------------


for(i=1;i<=10;i++)
{
Image1->Canvas->MoveTo(X+i*40,207);
Image1->Canvas->LineTo(X+i*40,213);
}

82
//------- Sageata ----------------
Image1->Canvas->MoveTo(430,205);
Image1->Canvas->LineTo(440,210);

Image1->Canvas->MoveTo(430,215);
Image1->Canvas->LineTo(440,210);

//--------------------------------
//---- Axa Y -------------------
Image1->Canvas->MoveTo(X,10);
Image1->Canvas->LineTo(X,215);

//------ Gradatie ---------------


for(i=1;i<10;i++)
{
Image1->Canvas->MoveTo(7, Y-i*20);
Image1->Canvas->LineTo(13,Y-i*20);
}

//------- Sageata ----------------


Image1->Canvas->MoveTo(10,10);
Image1->Canvas->LineTo(15,20);

Image1->Canvas->MoveTo(10,10);
Image1->Canvas->LineTo(5,20);

}
//---------------------------------------------------------------------------
void __fastcall TCazulBForm::Inapoi1Click(TObject *Sender)
{
IndexForm->Show();
IndexForm->Visible=true;
Close();
}
//---------------------------------------------------------------------------
void __fastcall TCazulBForm::Iesire1Click(TObject *Sender)
{
IndexForm->Close();
}
//---------------------------------------------------------------------------
void __fastcall TCazulBForm::BitBtn3Click(TObject *Sender)
{
int i,j,n,m;
String s;
n=m=2;

StringGrid1->ColCount=m+4;
StringGrid1->Cells[0][0]="k";
for(j=1;j<=m;j++)
{
s="y("; s=s+j; s=s+")";
StringGrid1->Cells[j][0]=s;
}
StringGrid1->Cells[m+1][0]="Fi";
StringGrid1->Cells[m+2][0]="V";
StringGrid1->Cells[m+3][0]="Vmed";

StringGrid2->ColCount=m;
/*
StringGrid2->Cells[0][0]=3;
StringGrid2->Cells[1][0]=7;
*/
StringGrid3->ColCount=m;
StringGrid3->Cells[0][0]=0;
StringGrid3->Cells[1][0]=0;

StringGrid4->ColCount=m;
StringGrid4->Cells[0][0]=0;
StringGrid4->Cells[1][0]=0;

StringGrid5->ColCount=m;
StringGrid5->Cells[0][0]=20;
StringGrid5->Cells[1][0]=20;

83
StringGrid6->ColCount=m;
StringGrid6->Cells[0][0]=0.5;
StringGrid6->Cells[1][0]=1.5;

StringGrid7->ColCount=m;
StringGrid7->Cells[0][0]=0.25;
StringGrid7->Cells[1][0]=0.8;

StringGrid8->RowCount=n;
StringGrid8->Cells[0][0]=3;
StringGrid8->Cells[0][1]=4;

StringGrid9->ColCount=m;
StringGrid9->RowCount=n;
StringGrid9->Cells[0][0]=0.1;
StringGrid9->Cells[1][0]=0.2;
StringGrid9->Cells[0][1]=0.5;
StringGrid9->Cells[1][1]=0.3;
/*
Edit1->Text=2;
Edit2->Text=0.0001;
Edit3->Text=2;
Edit4->Text=20;
Edit5->Text=1000;
Edit6->Text=5;
*/
Label13->Visible=false;

CazulBForm->Enabled=false;
CazulBCerereForm->Show();
CazulBCerereForm->Edit2->Text=n;
CazulBCerereForm->Edit1->Text=m;
CazulBCerereForm->Edit1->Enabled=false;
CazulBCerereForm->Edit2->Enabled=false;
}
//---------------------------------------------------------------------------

void __fastcall TCazulBForm::BitBtn1Click(TObject *Sender)


{
int i,j,z,n,m,H,k,kstop,c,cdv;
int l,L=1000; // valoarea maxima a psi
double a[20][20],b[20],YL[1005][50];
double y1[20],y2[20],ybar[20],Y[20],ymin[20],ymax[20];
double psi[20],psimax,Eps;
double teta[20],V[20],P[20],Vmax,Vmed,Est;
double h;
int Pk;
double PP[20],PY[20],Prnd[20],Pmax,Pmin,Rnd;
int XG=10,YG=210,YG1;
int XG2=10,YG2=210;
double U1,U2,U3;
double XG3=10,YG3=210;

//---- Graficul ------------------


//-- Curatirea ---------------
Graphics::TBitmap *Bitmap;
Bitmap = new Graphics::TBitmap();
Bitmap->Width = 450;
Bitmap->Height = 220;
Image1->Picture->Graphic = Bitmap;

//---- Axa X -------------------


Image1->Canvas->MoveTo(5,YG2);
Image1->Canvas->LineTo(440,YG2);

//------ Gradatie ----------------


for(i=1;i<=10;i++)
{
Image1->Canvas->MoveTo(XG2+i*40,207);
Image1->Canvas->LineTo(XG2+i*40,213);
}

//------- Sageata ----------------


Image1->Canvas->MoveTo(430,205);

84
Image1->Canvas->LineTo(440,210);

Image1->Canvas->MoveTo(430,215);
Image1->Canvas->LineTo(440,210);

//--------------------------------
//---- Axa Y -------------------
Image1->Canvas->MoveTo(XG2,10);
Image1->Canvas->LineTo(XG2,215);

//------ Gradatie ---------------


for(i=1;i<10;i++)
{
Image1->Canvas->MoveTo(7, YG2-i*20);
Image1->Canvas->LineTo(13,YG2-i*20);
}

//------- Sageata ----------------


Image1->Canvas->MoveTo(10,10);
Image1->Canvas->LineTo(15,20);

Image1->Canvas->MoveTo(10,10);
Image1->Canvas->LineTo(5,20);

//randomize();

String s;

Label13->Visible=false;

n=StrToInt(Edit1->Text);
m=StrToInt(Edit3->Text);
Eps=StrToFloat(Edit2->Text);
H=StrToInt(Edit4->Text);
kstop=StrToInt(Edit5->Text);
cdv=StrToInt(Edit6->Text);

for(i=0;i<n;i++)
for(j=0;j<m;j++)
a[i][j]=StrToFloat(StringGrid9->Cells[j][i]);

for(j=0;j<m;j++)
{
Y[j]=StrToFloat(StringGrid2->Cells[j][0]);
y1[j]=StrToFloat(StringGrid3->Cells[j][0]);
ymin[j]=StrToFloat(StringGrid4->Cells[j][0]);
ymax[j]=StrToFloat(StringGrid5->Cells[j][0]);
V[j]=StrToFloat(StringGrid6->Cells[j][0]);
P[j]=StrToFloat(StringGrid7->Cells[j][0]);
}

for(i=0;i<n;i++)
{
b[i]=StrToFloat(StringGrid8->Cells[0][i]);
psi[i]=0;
}

//-----------------------------------------
Pk=StrToFloat(CazulBCerereForm->Edit3->Text);
Pmin=StrToFloat(CazulBCerereForm->Edit4->Text);
Pmax=StrToFloat(CazulBCerereForm->Edit5->Text);

for(i=1;i<=Pk;i++)
{
PY[i]=StrToFloat(CazulBCerereForm->StringGrid1->Cells[i][1]);
PP[i]=StrToFloat(CazulBCerereForm->StringGrid1->Cells[i][2]);
}

Prnd[0]=0;
for(i=1;i<=Pk;i++)
Prnd[i]=Prnd[i-1]+PP[i];
//-----------------------------------------

randomize();
for(z=0;z<L;z++)
{

85
Rnd=random(1000)/1000.0;
for(i=0;i<Pk;i++)
if((Prnd[i]<=Rnd)&&(Rnd<=Prnd[i+1]))
YL[z][0]=PY[i+1];
for(j=1;j<m;j++)
YL[z][j]=Rnd*(Pmax-Pmin)+Pmin;
}

k=0;
//---------------------------------
do
{
psimax=0;
Vmax=0;
Vmed=0;

//-------- Y rnd ------------


Rnd=random(1000)/1000.0;
for(i=0;i<Pk;i++)
if((Prnd[i]<=Rnd)&&(Rnd<=Prnd[i+1]))
Y[0]=PY[i+1];

for(j=1;j<m;j++)
Y[j]=Rnd*(Pmax-Pmin)+Pmin;

//----------------------------
for(i=0;i<n;i++)
{
psi[i]=0;
for(j=0;j<m;j++)
psi[i]=psi[i]+a[i][j]*y1[j];
psi[i]=psi[i]-b[i];
}

for(i=0;i<n;i++)
if(psimax<psi[i])
{
psimax=psi[i];
l=i;
}

if(psimax<=Eps)
for(j=0;j<m;j++)
if(y1[j]<=Y[j])
teta[j]=V[j];
else
teta[j]=-P[j];
else
for(j=0;j<m;j++)
teta[j]=-a[l][j];

h=H/(k+1.0);

for(j=0;j<m;j++)
{
ybar[j]=y1[j]+h*teta[j];
if(ybar[j]<ymin[j])
y2[j]=ymin[j];
else
if(ybar[j]>ymax[j])
y2[j]=ymax[j];
else
y2[j]=ybar[j];
}

for(j=0;j<m;j++)
{
if(y1[j]<=Y[j])
Vmax=Vmax+V[j]*y1[j];
else
Vmax=Vmax+V[j]*Y[j]-P[j]*(y1[j]-Y[j]);
}

86
//--- Vmed ----------------------
if(psimax<=Eps)
{
for(i=0;i<L;i++)
for(j=0;j<m;j++)
{
if(y1[j]<=YL[i][j])
Vmed=Vmed+V[j]*y1[j];
else
Vmed=Vmed+V[j]*YL[i][j]-P[j]*(y1[j]-YL[i][j]);
}
Est=(Vmed/L);
}
else
Est=0;

//--- afisare --------


StringGrid1->RowCount=k+2;
StringGrid1->Cells[0][k+1]=k;
for(j=0;j<m;j++)
{
c=y1[j]*pow(10.0,cdv);
y1[j]=c/pow(10.0,cdv);
StringGrid1->Cells[j+1][k+1]=y1[j];
}

c=psimax*pow(10.0,cdv);
psimax=c/pow(10.0,cdv);
StringGrid1->Cells[m+1][k+1]=psimax;

c=Vmax*pow(10.0,cdv);
Vmax=c/pow(10.0,cdv);
StringGrid1->Cells[m+2][k+1]=Vmax;

c=Est*pow(10.0,cdv);
Est=c/pow(10.0,cdv);
StringGrid1->Cells[m+3][k+1]=Est;

//--- Graficul -----------

if(Est==0)
Image1->Canvas->Ellipse(XG3-2,YG3-2,XG3+2,YG3+2);

XG3=XG3+0.4;

if(k==0)
{
XG=10;
YG1=YG-Est*10;
}

if(k==98) U1=Est;
if(k==99) U2=Est;
if(k==100)
{
U3=Est;
if(U1>U2) Est=U1;
else
if(U2>=U3) Est=U2;
else Est=U3;
Image1->Canvas->MoveTo(XG,YG1);
XG=XG+40;
YG1=YG-Est*10;
Image1->Canvas->LineTo(XG,YG1);
}

if(k==198) U1=Est;
if(k==199) U2=Est;
if(k==200)
{
U3=Est;
if(U1>U2) Est=U1;
else
if(U2>=U3) Est=U2;
else Est=U3;

87
Image1->Canvas->MoveTo(XG,YG1);
XG=XG+40;
YG1=YG-Est*10;
Image1->Canvas->LineTo(XG,YG1);
}

if(k==298) U1=Est;
if(k==299) U2=Est;
if(k==300)
{
U3=Est;
if(U1>U2) Est=U1;
else
if(U2>=U3) Est=U2;
else Est=U3;

Image1->Canvas->MoveTo(XG,YG1);
XG=XG+40;
YG1=YG-Est*10;
Image1->Canvas->LineTo(XG,YG1);
}

if(k==398) U1=Est;
if(k==399) U2=Est;
if(k==400)
{
U3=Est;
if(U1>U2) Est=U1;
else
if(U2>=U3) Est=U2;
else Est=U3;
Image1->Canvas->MoveTo(XG,YG1);
XG=XG+40;
YG1=YG-Est*10;
Image1->Canvas->LineTo(XG,YG1);
}

if(k==498) U1=Est;
if(k==499) U2=Est;
if(k==500)
{
U3=Est;
if(U1>U2) Est=U1;
else
if(U2>=U3) Est=U2;
else Est=U3;
Image1->Canvas->MoveTo(XG,YG1);
XG=XG+40;
YG1=YG-Est*10;
Image1->Canvas->LineTo(XG,YG1);
}

if(k==598) U1=Est;
if(k==599) U2=Est;
if(k==600)
{
U3=Est;
if(U1>U2) Est=U1;
else
if(U2>=U3) Est=U2;
else Est=U3;
Image1->Canvas->MoveTo(XG,YG1);
XG=XG+40;
YG1=YG-Est*10;
Image1->Canvas->LineTo(XG,YG1);
}

if(k==698) U1=Est;
if(k==699) U2=Est;
if(k==700)
{
U3=Est;
if(U1>U2) Est=U1;
else
if(U2>=U3) Est=U2;
else Est=U3;

88
Image1->Canvas->MoveTo(XG,YG1);
XG=XG+40;
YG1=YG-Est*10;
Image1->Canvas->LineTo(XG,YG1);
}

if(k==798) U1=Est;
if(k==799) U2=Est;
if(k==800)
{
U3=Est;
if(U1>U2) Est=U1;
else
if(U2>=U3) Est=U2;
else Est=U3;
Image1->Canvas->MoveTo(XG,YG1);
XG=XG+40;
YG1=YG-Est*10;
Image1->Canvas->LineTo(XG,YG1);
}

if(k==898) U1=Est;
if(k==899) U2=Est;
if(k==900)
{
U3=Est;
if(U1>U2) Est=U1;
else
if(U2>=U3) Est=U2;
else Est=U3;
Image1->Canvas->MoveTo(XG,YG1);
XG=XG+40;
YG1=YG-Est*10;
Image1->Canvas->LineTo(XG,YG1);
}

if(k==998) U1=Est;
if(k==999) U2=Est;
if(k==1000)
{
U3=Est;
if(U1>U2) Est=U1;
else
if(U2>=U3) Est=U2;
else Est=U3;
Image1->Canvas->MoveTo(XG,YG1);
XG=XG+40;
YG1=YG-Est*10;
Image1->Canvas->LineTo(XG,YG1);
}

//--- ----------------
for(j=0;j<m;j++)
y1[j]=y2[j];

k++;
}
while(k<=kstop);

if(k>=kstop)
Label13->Visible=true;

}
//---------------------------------------------------------------------------

89
void __fastcall TCazulBForm::Button1Click(TObject *Sender)
{
int i,j,n,m;
String s;
n=m=2;

StringGrid1->ColCount=m+4;
StringGrid1->Cells[0][0]="k";
for(j=1;j<=m;j++)
{
s="y("; s=s+j; s=s+")";
StringGrid1->Cells[j][0]=s;
}
StringGrid1->Cells[m+1][0]="Fi";
StringGrid1->Cells[m+2][0]="V";
StringGrid1->Cells[m+3][0]="Vmed";

StringGrid2->ColCount=m;
/*
StringGrid2->Cells[0][0]=3;
StringGrid2->Cells[1][0]=7;
*/
StringGrid3->ColCount=m;
StringGrid3->Cells[0][0]=20;
StringGrid3->Cells[1][0]=20;

StringGrid4->ColCount=m;
StringGrid4->Cells[0][0]=0;
StringGrid4->Cells[1][0]=0;

StringGrid5->ColCount=m;
StringGrid5->Cells[0][0]=20;
StringGrid5->Cells[1][0]=20;

StringGrid6->ColCount=m;
StringGrid6->Cells[0][0]=0.5;
StringGrid6->Cells[1][0]=1.5;

StringGrid7->ColCount=m;
StringGrid7->Cells[0][0]=0.25;
StringGrid7->Cells[1][0]=0.8;

StringGrid8->RowCount=n;
StringGrid8->Cells[0][0]=3;
StringGrid8->Cells[0][1]=4;

StringGrid9->ColCount=m;
StringGrid9->RowCount=n;
StringGrid9->Cells[0][0]=0.1;
StringGrid9->Cells[1][0]=0.2;
StringGrid9->Cells[0][1]=0.5;
StringGrid9->Cells[1][1]=0.3;
/*
Edit1->Text=2;
Edit2->Text=0.0001;
Edit3->Text=2;
Edit4->Text=20;
Edit5->Text=1000;
Edit6->Text=5;
*/
Label13->Visible=false;

CazulBForm->Enabled=false;
CazulBCerereForm->Show();
CazulBCerereForm->Edit2->Text=n;
CazulBCerereForm->Edit1->Text=m;
CazulBCerereForm->Edit1->Enabled=false;
CazulBCerereForm->Edit2->Enabled=false;
}
//---------------------------------------------------------------------------
Cazul B- Cerere
//---------------------------------------------------------------------------
#include <stdlib.h>
#include <stdio.h>
#include <vcl.h>

90
#pragma hdrstop

#include "CazulBCerere.h"
#include "CazulB.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TCazulBCerereForm *CazulBCerereForm;
//---------------------------------------------------------------------------
__fastcall TCazulBCerereForm::TCazulBCerereForm(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TCazulBCerereForm::BitBtn2Click(TObject *Sender)


{
int j,n,m,k;
String s;
n=StrToInt(Edit2->Text);
m=StrToInt(Edit1->Text);
k=StrToInt(Edit3->Text);

CazulBForm->StringGrid2->ColCount=m;
CazulBForm->StringGrid2->Enabled=true;

CazulBForm->StringGrid3->ColCount=m;
CazulBForm->StringGrid3->Enabled=true;

CazulBForm->StringGrid4->ColCount=m;
CazulBForm->StringGrid4->Enabled=true;

CazulBForm->StringGrid5->ColCount=m;
CazulBForm->StringGrid5->Enabled=true;

CazulBForm->StringGrid6->ColCount=m;
CazulBForm->StringGrid6->Enabled=true;

CazulBForm->StringGrid7->ColCount=m;
CazulBForm->StringGrid7->Enabled=true;

CazulBForm->StringGrid8->RowCount=n;
CazulBForm->StringGrid8->Enabled=true;

CazulBForm->StringGrid9->ColCount=m;
CazulBForm->StringGrid9->RowCount=n;
CazulBForm->StringGrid9->Enabled=true;

CazulBForm->StringGrid1->ColCount=m+4;
CazulBForm->StringGrid1->Cells[0][0]="k";
for(j=1;j<=m;j++)
{
s="y("; s=s+j; s=s+")";
CazulBForm->StringGrid1->Cells[j][0]=s;
}
CazulBForm->StringGrid1->Cells[m+1][0]="Fi";
CazulBForm->StringGrid1->Cells[m+2][0]="V";
CazulBForm->StringGrid1->Cells[m+3][0]="Vmed";

CazulBForm->Label13->Visible=false;

//---------------------------------------
StringGrid1->ColCount=k+1;
StringGrid1->Cells[0][1]="Cererea";
StringGrid1->Cells[0][2]="Probabilitea";

for(j=1;j<=k;j++)
StringGrid1->Cells[j][0]=j;

Button1->Visible=true;
Label13->Visible=false;
Label14->Visible=false;

StringGrid2->RowCount=m;
for(j=1;j<=m;j++)
{

91
s="Y"; s=s+j;
StringGrid2->Cells[0][j-1]=s;
}
}
//---------------------------------------------------------------------------

void __fastcall TCazulBCerereForm::Button1Click(TObject *Sender)


{
int i,j,n,m,k,min,max;
double Y1[50],P[50],Pmax,V=0;
double Y2[50];

Label13->Visible=false;
Label14->Visible=false;

n=StrToInt(Edit2->Text);
m=StrToInt(Edit1->Text);
k=StrToInt(Edit3->Text);

for(j=0;j<k;j++)
{
Y1[j]=StrToFloat(StringGrid1->Cells[j+1][1]);
P[j]=StrToFloat(StringGrid1->Cells[j+1][2]);
}

min=StrToInt(Edit4->Text);
max=StrToInt(Edit5->Text);

Pmax=0;
for(j=0;j<k;j++)
{
if(Pmax<P[j])
{
Pmax=P[j];
Y2[0]=Y1[j];
}
V=V+P[j];
}

randomize();
for(j=1;j<m;j++)
Y2[j]=random(max-min)+min;

//--------------------------
if(V<1) Label14->Visible=true;
if(V>1) Label13->Visible=true;
if(V==1)
for(i=0;i<m;i++)
StringGrid2->Cells[1][i]=Y2[i];

BitBtn1->Visible=true;
}
//---------------------------------------------------------------------------
void __fastcall TCazulBCerereForm::BitBtn1Click(TObject *Sender)
{
int j,m;
m=StrToInt(Edit1->Text);

for(j=0;j<m;j++)
CazulBForm->StringGrid2->Cells[j][0]=StringGrid2->Cells[1][j];

CazulBForm->Edit1->Text=Edit2->Text;
CazulBForm->Edit2->Text=0.0001;
CazulBForm->Edit3->Text=Edit1->Text;
CazulBForm->Edit4->Text=20;
CazulBForm->Edit5->Text=1000;
CazulBForm->Edit6->Text=5;

CazulBForm->Enabled=true;
CazulBCerereForm->Close();
}
//---------------------------------------------------------------------------

void __fastcall TCazulBCerereForm::Button2Click(TObject *Sender)

92
{
CazulBForm->Enabled=true;
CazulBCerereForm->Close();
}
//---------------------------------------------------------------------------

void __fastcall TCazulBCerereForm::Button3Click(TObject *Sender)


{
int j,n,m,k;
String s;

Edit1->Text=2;
Edit2->Text=2;
Edit3->Text=4;

n=StrToInt(Edit2->Text);
m=StrToInt(Edit1->Text);
k=StrToInt(Edit3->Text);

CazulBForm->StringGrid2->ColCount=m;
CazulBForm->StringGrid2->Enabled=true;

CazulBForm->StringGrid3->ColCount=m;
CazulBForm->StringGrid3->Enabled=true;

CazulBForm->StringGrid4->ColCount=m;
CazulBForm->StringGrid4->Enabled=true;

CazulBForm->StringGrid5->ColCount=m;
CazulBForm->StringGrid5->Enabled=true;

CazulBForm->StringGrid6->ColCount=m;
CazulBForm->StringGrid6->Enabled=true;

CazulBForm->StringGrid7->ColCount=m;
CazulBForm->StringGrid7->Enabled=true;

CazulBForm->StringGrid8->RowCount=n;
CazulBForm->StringGrid8->Enabled=true;

CazulBForm->StringGrid9->ColCount=m;
CazulBForm->StringGrid9->RowCount=n;
CazulBForm->StringGrid9->Enabled=true;

CazulBForm->StringGrid1->ColCount=m+4;
CazulBForm->StringGrid1->Cells[0][0]="k";
for(j=1;j<=m;j++)
{
s="y("; s=s+j; s=s+")";
CazulBForm->StringGrid1->Cells[j][0]=s;
}
CazulBForm->StringGrid1->Cells[m+1][0]="Fi";
CazulBForm->StringGrid1->Cells[m+2][0]="V";
CazulBForm->StringGrid1->Cells[m+3][0]="Vmed";

CazulBForm->Label13->Visible=false;

//---------------------------------------
StringGrid1->ColCount=k+1;
StringGrid1->Cells[0][1]="Cererea";
StringGrid1->Cells[0][2]="Probabilitea";

for(j=1;j<=k;j++)
StringGrid1->Cells[j][0]=j;

Button1->Visible=true;
Label13->Visible=false;
Label14->Visible=false;

StringGrid2->RowCount=m;
for(j=1;j<=m;j++)
{
s="Y"; s=s+j;
StringGrid2->Cells[0][j-1]=s;
}

93
StringGrid1->Cells[1][1]=0;
StringGrid1->Cells[2][1]=1;
StringGrid1->Cells[3][1]=2;
StringGrid1->Cells[4][1]=10;

StringGrid1->Cells[1][2]=0.2;
StringGrid1->Cells[2][2]=0.2;
StringGrid1->Cells[3][2]=0.05;
StringGrid1->Cells[4][2]=0.55;

Edit4->Text=2;
Edit5->Text=12;

}
//---------------------------------------------------------------------------
Cazul C
//---------------------------------------------------------------------------
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
#include <vcl.h>
#pragma hdrstop

#include "Index.h"
#include "CazulC.h"
#include "CazulCCerere.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TCazulCForm *CazulCForm;
//---------------------------------------------------------------------------
__fastcall TCazulCForm::TCazulCForm(TComponent* Owner)
: TForm(Owner)
{
Image1->Canvas->MoveTo(0,0);
int X=10,Y=210;
int i,j;
//---- Graficul ------------------
//---- Axa X -------------------
Image1->Canvas->MoveTo(5,Y);
Image1->Canvas->LineTo(440,Y);

//------ Gradatie ----------------


for(i=1;i<=10;i++)
{
Image1->Canvas->MoveTo(X+i*40,207);
Image1->Canvas->LineTo(X+i*40,213);
}

//------- Sageata ----------------


Image1->Canvas->MoveTo(430,205);
Image1->Canvas->LineTo(440,210);

Image1->Canvas->MoveTo(430,215);
Image1->Canvas->LineTo(440,210);

//--------------------------------
//---- Axa Y -------------------
Image1->Canvas->MoveTo(X,10);
Image1->Canvas->LineTo(X,215);

//------ Gradatie ---------------


for(i=1;i<10;i++)
{
Image1->Canvas->MoveTo(7, Y-i*20);
Image1->Canvas->LineTo(13,Y-i*20);
}

//------- Sageata ----------------


Image1->Canvas->MoveTo(10,10);
Image1->Canvas->LineTo(15,20);

94
Image1->Canvas->MoveTo(10,10);
Image1->Canvas->LineTo(5,20);

}
//---------------------------------------------------------------------------
void __fastcall TCazulCForm::Iesire1Click(TObject *Sender)
{
IndexForm->Close();
}
//---------------------------------------------------------------------------
void __fastcall TCazulCForm::Inapoi1Click(TObject *Sender)
{
IndexForm->Show();
IndexForm->Visible=true;
Close();
}
//---------------------------------------------------------------------------
void __fastcall TCazulCForm::BitBtn1Click(TObject *Sender)
{
int i,j,z,n,m,H,k,kstop,c,cdv;
int l,L=1000; // valoarea maxima a psi
double a[20][20],b[20],YL[1005][50],A,B;
double y0[20],y1[20],y2[20],ybar[20],Y[20],Ybar[20],ymin[20],ymax[20];
double psi[20],psimax,Eps;
double teta[20],V[20],P[20],Vmax;
double h;
int Pk;
double PP[20],PY[20],Prnd[20],Pmax,Pmin,Rnd;
double XG=10,YG=210;
double YG1;
int XG2=10,YG2=210;
double U1,U2,U3;

//---- Graficul ------------------


//-- Curatirea ---------------
Graphics::TBitmap *Bitmap;
Bitmap = new Graphics::TBitmap();
Bitmap->Width = 450;
Bitmap->Height = 220;
Image1->Picture->Graphic = Bitmap;

//---- Axa X -------------------


Image1->Canvas->MoveTo(5,YG2);
Image1->Canvas->LineTo(440,YG2);

//------ Gradatie ----------------


for(i=1;i<=10;i++)
{
Image1->Canvas->MoveTo(XG2+i*40,207);
Image1->Canvas->LineTo(XG2+i*40,213);
}

//------- Sageata ----------------


Image1->Canvas->MoveTo(430,205);
Image1->Canvas->LineTo(440,210);

Image1->Canvas->MoveTo(430,215);
Image1->Canvas->LineTo(440,210);

//--------------------------------
//---- Axa Y -------------------
Image1->Canvas->MoveTo(XG2,10);
Image1->Canvas->LineTo(XG2,215);

//------ Gradatie ---------------


for(i=1;i<10;i++)
{
Image1->Canvas->MoveTo(7, YG2-i*20);
Image1->Canvas->LineTo(13,YG2-i*20);
}

//------- Sageata ----------------


Image1->Canvas->MoveTo(10,10);
Image1->Canvas->LineTo(15,20);

Image1->Canvas->MoveTo(10,10);

95
Image1->Canvas->LineTo(5,20);

//randomize();

String s;

Label13->Visible=false;

n=StrToInt(Edit1->Text);
m=StrToInt(Edit3->Text);
Eps=StrToFloat(Edit2->Text);
H=StrToInt(Edit4->Text);
kstop=StrToInt(Edit5->Text);
cdv=StrToInt(Edit6->Text);

for(i=0;i<n;i++)
for(j=0;j<m;j++)
a[i][j]=StrToFloat(StringGrid9->Cells[j][i]);

for(j=0;j<m;j++)
{
y0[j]=0;
Y[j]=StrToFloat(StringGrid2->Cells[j][0]);
y1[j]=StrToFloat(StringGrid3->Cells[j][0]);
ymin[j]=StrToFloat(StringGrid4->Cells[j][0]);
ymax[j]=StrToFloat(StringGrid5->Cells[j][0]);
V[j]=StrToFloat(StringGrid6->Cells[j][0]);
P[j]=StrToFloat(StringGrid7->Cells[j][0]);
}

for(i=0;i<n;i++)
{
b[i]=StrToFloat(StringGrid8->Cells[0][i]);
psi[i]=0;
}

//-----------------------------------------
Pk=StrToFloat(CazulCCerereForm->Edit3->Text);
Pmin=StrToFloat(CazulCCerereForm->Edit4->Text);
Pmax=StrToFloat(CazulCCerereForm->Edit5->Text);

for(i=1;i<=Pk;i++)
{
PY[i]=StrToFloat(CazulCCerereForm->StringGrid1->Cells[i][1]);
PP[i]=StrToFloat(CazulCCerereForm->StringGrid1->Cells[i][2]);
}

Prnd[0]=0;
for(i=1;i<=Pk;i++)
Prnd[i]=Prnd[i-1]+PP[i];
//-----------------------------------------

randomize();
for(z=0;z<L;z++)
{
Rnd=random(1000)/1000.0;
for(i=0;i<Pk;i++)
if((Prnd[i]<=Rnd)&&(Rnd<=Prnd[i+1]))
YL[z][0]=PY[i+1];
for(j=1;j<m;j++)
YL[z][j]=Rnd*(Pmax-Pmin)+Pmin;
}

k=0;
//---------------------------------
do
{
psimax=0;
Vmax=0;
A=0;
B=0;

//-------- Y rnd ------------


Rnd=random(1000)/1000.0;
for(i=0;i<Pk;i++)

96
if((Prnd[i]<=Rnd)&&(Rnd<=Prnd[i+1]))
Ybar[0]=PY[i+1];

for(j=1;j<m;j++)
Ybar[j]=Rnd*(Pmax-Pmin)+Pmin;

//----------------------------
for(i=0;i<n;i++)
{
psi[i]=0;
for(j=0;j<m;j++)
psi[i]=psi[i]+a[i][j]*y1[j];
psi[i]=psi[i]-b[i];
}

for(i=0;i<n;i++)
if(psimax<psi[i])
{
psimax=psi[i];
l=i;
}

//--- teta ------------


if(k==0)
for(j=0;j<m;j++)
Y[j]=Ybar[j];
else
{
for(j=0;j<m;j++)
{
if(y1[j]<=Y[j])
A=A+V[j]*y1[j];
else
A=A+V[j]*Y[j]-P[j]*(y1[j]-Y[j]);
}

for(j=0;j<m;j++)
{
if(y1[j]<=Ybar[j])
B=B+V[j]*y1[j];
else
B=B+V[j]*Ybar[j]-P[j]*(y1[j]-Ybar[j]);
}

if(A<=B)
for(j=0;j<m;j++)
Y[j]=Y[j];
else
for(j=0;j<m;j++)
Y[j]=Ybar[j];
}

if(psimax<=Eps)
for(j=0;j<m;j++)
if(y1[j]<=Y[j])
teta[j]=V[j];
else
teta[j]=-P[j];
else
for(j=0;j<m;j++)
teta[j]=-a[l][j];

h=H/(k+1.0);

for(j=0;j<m;j++)
{
ybar[j]=y1[j]+h*teta[j];
if(ybar[j]<ymin[j])
y2[j]=ymin[j];
else
if(ybar[j]>ymax[j])
y2[j]=ymax[j];
else
y2[j]=ybar[j];
}

97
for(j=0;j<m;j++)
{
if(y1[j]<=Y[j])
Vmax=Vmax+V[j]*y1[j];
else
Vmax=Vmax+V[j]*Y[j]-P[j]*(y1[j]-Y[j]);
}

//--- afisare --------


StringGrid1->RowCount=k+2;
StringGrid1->Cells[0][k+1]=k;
for(j=0;j<m;j++)
{
c=y1[j]*pow(10.0,cdv);
y1[j]=c/pow(10.0,cdv);
StringGrid1->Cells[j+1][k+1]=y1[j];
}

c=psimax*pow(10.0,cdv);
psimax=c/pow(10.0,cdv);
StringGrid1->Cells[m+1][k+1]=psimax;

c=Vmax*pow(10.0,cdv);
Vmax=c/pow(10.0,cdv);
StringGrid1->Cells[m+2][k+1]=Vmax;

//--- Graficul -----------

if(k==0)
{
XG=10;
YG1=YG-Vmax*10;
}

if(k==98) U1=Vmax;
if(k==99) U2=Vmax;
if(k==100)
{
U3=Vmax;
if(U1>U2) Vmax=U1;
else
if(U2>=U3) Vmax=U2;
else Vmax=U3;
Image1->Canvas->MoveTo(XG,YG1);
XG=XG+40;
YG1=YG-Vmax*10;
Image1->Canvas->LineTo(XG,YG1);
}

if(k==198) U1=Vmax;
if(k==199) U2=Vmax;
if(k==200)
{
U3=Vmax;
if(U1>U2) Vmax=U1;
else
if(U2>=U3) Vmax=U2;
else Vmax=U3;
Image1->Canvas->MoveTo(XG,YG1);
XG=XG+40;
YG1=YG-Vmax*10;
Image1->Canvas->LineTo(XG,YG1);
}

if(k==298) U1=Vmax;
if(k==299) U2=Vmax;
if(k==300)
{
U3=Vmax;
if(U1>U2) Vmax=U1;
else
if(U2>=U3) Vmax=U2;
else Vmax=U3;

Image1->Canvas->MoveTo(XG,YG1);
XG=XG+40;

98
YG1=YG-Vmax*10;
Image1->Canvas->LineTo(XG,YG1);
}

if(k==398) U1=Vmax;
if(k==399) U2=Vmax;
if(k==400)
{
U3=Vmax;
if(U1>U2) Vmax=U1;
else
if(U2>=U3) Vmax=U2;
else Vmax=U3;
Image1->Canvas->MoveTo(XG,YG1);
XG=XG+40;
YG1=YG-Vmax*10;
Image1->Canvas->LineTo(XG,YG1);
}

if(k==498) U1=Vmax;
if(k==499) U2=Vmax;
if(k==500)
{
U3=Vmax;
if(U1>U2) Vmax=U1;
else
if(U2>=U3) Vmax=U2;
else Vmax=U3;
Image1->Canvas->MoveTo(XG,YG1);
XG=XG+40;
YG1=YG-Vmax*10;
Image1->Canvas->LineTo(XG,YG1);
}

if(k==598) U1=Vmax;
if(k==599) U2=Vmax;
if(k==600)
{
U3=Vmax;
if(U1>U2) Vmax=U1;
else
if(U2>=U3) Vmax=U2;
else Vmax=U3;
Image1->Canvas->MoveTo(XG,YG1);
XG=XG+40;
YG1=YG-Vmax*10;
Image1->Canvas->LineTo(XG,YG1);
}

if(k==698) U1=Vmax;
if(k==699) U2=Vmax;
if(k==700)
{
U3=Vmax;
if(U1>U2) Vmax=U1;
else
if(U2>=U3) Vmax=U2;
else Vmax=U3;
Image1->Canvas->MoveTo(XG,YG1);
XG=XG+40;
YG1=YG-Vmax*10;
Image1->Canvas->LineTo(XG,YG1);
}

if(k==798) U1=Vmax;
if(k==799) U2=Vmax;
if(k==800)
{
U3=Vmax;
if(U1>U2) Vmax=U1;
else
if(U2>=U3) Vmax=U2;
else Vmax=U3;
Image1->Canvas->MoveTo(XG,YG1);
XG=XG+40;
YG1=YG-Vmax*10;

99
Image1->Canvas->LineTo(XG,YG1);
}

if(k==898) U1=Vmax;
if(k==899) U2=Vmax;
if(k==900)
{
U3=Vmax;
if(U1>U2) Vmax=U1;
else
if(U2>=U3) Vmax=U2;
else Vmax=U3;
Image1->Canvas->MoveTo(XG,YG1);
XG=XG+40;
YG1=YG-Vmax*10;
Image1->Canvas->LineTo(XG,YG1);
}

if(k==998) U1=Vmax;
if(k==999) U2=Vmax;
if(k==1000)
{
U3=Vmax;
if(U1>U2) Vmax=U1;
else
if(U2>=U3) Vmax=U2;
else Vmax=U3;
Image1->Canvas->MoveTo(XG,YG1);
XG=XG+40;
YG1=YG-Vmax*10;
Image1->Canvas->LineTo(XG,YG1);
}

//--- ----------------
for(j=0;j<m;j++)
{
y0[j]=y1[j];
y1[j]=y2[j];
}

k++;
}
while(k<=kstop);

if(k>=kstop)
Label13->Visible=true;

}
//---------------------------------------------------------------------------
void __fastcall TCazulCForm::BitBtn3Click(TObject *Sender)
{
int i,j,n,m;
String s;
n=m=2;

StringGrid1->ColCount=m+3;
StringGrid1->Cells[0][0]="k";
for(j=1;j<=m;j++)
{
s="y("; s=s+j; s=s+")";
StringGrid1->Cells[j][0]=s;
}
StringGrid1->Cells[m+1][0]="Fi";
StringGrid1->Cells[m+2][0]="V";

StringGrid2->ColCount=m;
/*
StringGrid2->Cells[0][0]=3;
StringGrid2->Cells[1][0]=7;
*/
StringGrid3->ColCount=m;
StringGrid3->Cells[0][0]=0;
StringGrid3->Cells[1][0]=0;

100
StringGrid4->ColCount=m;
StringGrid4->Cells[0][0]=0;
StringGrid4->Cells[1][0]=0;

StringGrid5->ColCount=m;
StringGrid5->Cells[0][0]=20;
StringGrid5->Cells[1][0]=20;

StringGrid6->ColCount=m;
StringGrid6->Cells[0][0]=0.5;
StringGrid6->Cells[1][0]=1.5;

StringGrid7->ColCount=m;
StringGrid7->Cells[0][0]=0.25;
StringGrid7->Cells[1][0]=0.8;

StringGrid8->RowCount=n;
StringGrid8->Cells[0][0]=3;
StringGrid8->Cells[0][1]=4;

StringGrid9->ColCount=m;
StringGrid9->RowCount=n;
StringGrid9->Cells[0][0]=0.1;
StringGrid9->Cells[1][0]=0.2;
StringGrid9->Cells[0][1]=0.5;
StringGrid9->Cells[1][1]=0.3;
/*
Edit1->Text=2;
Edit2->Text=0.0001;
Edit3->Text=2;
Edit4->Text=20;
Edit5->Text=1000;
Edit6->Text=5;
*/
Label13->Visible=false;

CazulCForm->Enabled=false;
CazulCCerereForm->Show();
CazulCCerereForm->Edit2->Text=n;
CazulCCerereForm->Edit1->Text=m;
CazulCCerereForm->Edit1->Enabled=false;
CazulCCerereForm->Edit2->Enabled=false;
}
//---------------------------------------------------------------------------
void __fastcall TCazulCForm::Button1Click(TObject *Sender)
{
int i,j,n,m;
String s;
n=m=2;

StringGrid1->ColCount=m+3;
StringGrid1->Cells[0][0]="k";
for(j=1;j<=m;j++)
{
s="y("; s=s+j; s=s+")";
StringGrid1->Cells[j][0]=s;
}
StringGrid1->Cells[m+1][0]="Fi";
StringGrid1->Cells[m+2][0]="V";

StringGrid2->ColCount=m;
/*
StringGrid2->Cells[0][0]=3;
StringGrid2->Cells[1][0]=7;
*/
StringGrid3->ColCount=m;
StringGrid3->Cells[0][0]=20;
StringGrid3->Cells[1][0]=20;

StringGrid4->ColCount=m;
StringGrid4->Cells[0][0]=0;
StringGrid4->Cells[1][0]=0;

StringGrid5->ColCount=m;
StringGrid5->Cells[0][0]=20;

101
StringGrid5->Cells[1][0]=20;

StringGrid6->ColCount=m;
StringGrid6->Cells[0][0]=0.5;
StringGrid6->Cells[1][0]=1.5;

StringGrid7->ColCount=m;
StringGrid7->Cells[0][0]=0.25;
StringGrid7->Cells[1][0]=0.8;

StringGrid8->RowCount=n;
StringGrid8->Cells[0][0]=3;
StringGrid8->Cells[0][1]=4;

StringGrid9->ColCount=m;
StringGrid9->RowCount=n;
StringGrid9->Cells[0][0]=0.1;
StringGrid9->Cells[1][0]=0.2;
StringGrid9->Cells[0][1]=0.5;
StringGrid9->Cells[1][1]=0.3;
/*
Edit1->Text=2;
Edit2->Text=0.0001;
Edit3->Text=2;
Edit4->Text=20;
Edit5->Text=1000;
Edit6->Text=5;
*/
Label13->Visible=false;

CazulCForm->Enabled=false;
CazulCCerereForm->Show();
CazulCCerereForm->Edit2->Text=n;
CazulCCerereForm->Edit1->Text=m;
CazulCCerereForm->Edit1->Enabled=false;
CazulCCerereForm->Edit2->Enabled=false;
}
//---------------------------------------------------------------------------
Cazul C- cerere
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "CazulC.h"
#include "CazulCCerere.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TCazulCCerereForm *CazulCCerereForm;
//---------------------------------------------------------------------------
__fastcall TCazulCCerereForm::TCazulCCerereForm(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TCazulCCerereForm::BitBtn2Click(TObject *Sender)
{
int j,n,m,k;
String s;
n=StrToInt(Edit2->Text);
m=StrToInt(Edit1->Text);
k=StrToInt(Edit3->Text);

CazulCForm->StringGrid2->ColCount=m;
CazulCForm->StringGrid2->Enabled=true;

CazulCForm->StringGrid3->ColCount=m;
CazulCForm->StringGrid3->Enabled=true;

CazulCForm->StringGrid4->ColCount=m;
CazulCForm->StringGrid4->Enabled=true;

CazulCForm->StringGrid5->ColCount=m;
CazulCForm->StringGrid5->Enabled=true;

102
CazulCForm->StringGrid6->ColCount=m;
CazulCForm->StringGrid6->Enabled=true;

CazulCForm->StringGrid7->ColCount=m;
CazulCForm->StringGrid7->Enabled=true;

CazulCForm->StringGrid8->RowCount=n;
CazulCForm->StringGrid8->Enabled=true;

CazulCForm->StringGrid9->ColCount=m;
CazulCForm->StringGrid9->RowCount=n;
CazulCForm->StringGrid9->Enabled=true;

CazulCForm->StringGrid1->ColCount=m+3;
CazulCForm->StringGrid1->Cells[0][0]="k";
for(j=1;j<=m;j++)
{
s="y("; s=s+j; s=s+")";
CazulCForm->StringGrid1->Cells[j][0]=s;
}
CazulCForm->StringGrid1->Cells[m+1][0]="Fi";
CazulCForm->StringGrid1->Cells[m+2][0]="V";

CazulCForm->Label13->Visible=false;

//---------------------------------------
StringGrid1->ColCount=k+1;
StringGrid1->Cells[0][1]="Cererea";
StringGrid1->Cells[0][2]="Probabilitea";

for(j=1;j<=k;j++)
StringGrid1->Cells[j][0]=j;

Button1->Visible=true;
Label13->Visible=false;
Label14->Visible=false;

StringGrid2->RowCount=m;
for(j=1;j<=m;j++)
{
s="Y"; s=s+j;
StringGrid2->Cells[0][j-1]=s;
}
}
//---------------------------------------------------------------------------

void __fastcall TCazulCCerereForm::Button1Click(TObject *Sender)


{
int i,j,n,m,k,min,max;
double Y1[50],P[50],Pmax,V=0;
double Y2[50];

Label13->Visible=false;
Label14->Visible=false;

n=StrToInt(Edit2->Text);
m=StrToInt(Edit1->Text);
k=StrToInt(Edit3->Text);

for(j=0;j<k;j++)
{
Y1[j]=StrToFloat(StringGrid1->Cells[j+1][1]);
P[j]=StrToFloat(StringGrid1->Cells[j+1][2]);
}

min=StrToInt(Edit4->Text);
max=StrToInt(Edit5->Text);

Pmax=0;
for(j=0;j<k;j++)
{
if(Pmax<P[j])
{
Pmax=P[j];

103
Y2[0]=Y1[j];
}
V=V+P[j];
}

randomize();
for(j=1;j<m;j++)
Y2[j]=random(max-min)+min;

//--------------------------
if(V<1) Label14->Visible=true;
if(V>1) Label13->Visible=true;
if(V==1)
for(i=0;i<m;i++)
StringGrid2->Cells[1][i]=Y2[i];

BitBtn1->Visible=true;
}
//---------------------------------------------------------------------------
void __fastcall TCazulCCerereForm::BitBtn1Click(TObject *Sender)
{
int j,m;
m=StrToInt(Edit1->Text);

for(j=0;j<m;j++)
CazulCForm->StringGrid2->Cells[j][0]=StringGrid2->Cells[1][j];

CazulCForm->Edit1->Text=Edit2->Text;
CazulCForm->Edit2->Text=0.0001;
CazulCForm->Edit3->Text=Edit1->Text;
CazulCForm->Edit4->Text=20;
CazulCForm->Edit5->Text=1000;
CazulCForm->Edit6->Text=5;

CazulCForm->Enabled=true;
CazulCCerereForm->Close();
}
//---------------------------------------------------------------------------
void __fastcall TCazulCCerereForm::Button2Click(TObject *Sender)
{
CazulCForm->Enabled=true;
CazulCCerereForm->Close();
}
//---------------------------------------------------------------------------
void __fastcall TCazulCCerereForm::Button3Click(TObject *Sender)
{
int j,n,m,k;
String s;

Edit1->Text=2;
Edit2->Text=2;
Edit3->Text=4;

n=StrToInt(Edit2->Text);
m=StrToInt(Edit1->Text);
k=StrToInt(Edit3->Text);

CazulCForm->StringGrid2->ColCount=m;
CazulCForm->StringGrid2->Enabled=true;

CazulCForm->StringGrid3->ColCount=m;
CazulCForm->StringGrid3->Enabled=true;

CazulCForm->StringGrid4->ColCount=m;
CazulCForm->StringGrid4->Enabled=true;

CazulCForm->StringGrid5->ColCount=m;
CazulCForm->StringGrid5->Enabled=true;

CazulCForm->StringGrid6->ColCount=m;
CazulCForm->StringGrid6->Enabled=true;

CazulCForm->StringGrid7->ColCount=m;
CazulCForm->StringGrid7->Enabled=true;

104
CazulCForm->StringGrid8->RowCount=n;
CazulCForm->StringGrid8->Enabled=true;

CazulCForm->StringGrid9->ColCount=m;
CazulCForm->StringGrid9->RowCount=n;
CazulCForm->StringGrid9->Enabled=true;

CazulCForm->StringGrid1->ColCount=m+4;
CazulCForm->StringGrid1->Cells[0][0]="k";
for(j=1;j<=m;j++)
{
s="y("; s=s+j; s=s+")";
CazulCForm->StringGrid1->Cells[j][0]=s;
}
CazulCForm->StringGrid1->Cells[m+1][0]="Fi";
CazulCForm->StringGrid1->Cells[m+2][0]="V";
CazulCForm->StringGrid1->Cells[m+3][0]="Vmed";

CazulCForm->Label13->Visible=false;

//---------------------------------------
StringGrid1->ColCount=k+1;
StringGrid1->Cells[0][1]="Cererea";
StringGrid1->Cells[0][2]="Probabilitea";

for(j=1;j<=k;j++)
StringGrid1->Cells[j][0]=j;

Button1->Visible=true;
Label13->Visible=false;
Label14->Visible=false;

StringGrid2->RowCount=m;
for(j=1;j<=m;j++)
{
s="Y"; s=s+j;
StringGrid2->Cells[0][j-1]=s;
}

StringGrid1->Cells[1][1]=0;
StringGrid1->Cells[2][1]=1;
StringGrid1->Cells[3][1]=2;
StringGrid1->Cells[4][1]=10;

StringGrid1->Cells[1][2]=0.2;
StringGrid1->Cells[2][2]=0.2;
StringGrid1->Cells[3][2]=0.05;
StringGrid1->Cells[4][2]=0.55;

Edit4->Text=2;
Edit5->Text=12;
}
//---------------------------------------------------------------------------

105

S-ar putea să vă placă și