Solutionarea Problemei Comis Voiajorului cu Ajutorul Algoritmilor Genetici Implementari în Limbajul Java Si Tehnologia J2ee
Cuprins
Introducere …………………………………………………………………………………….7
1. Noțiuni teoretice…………………………………….………………………….…11
1.1 Algoritmi genetici……………………………………………………………………………………..11
Teoria Schemelor………………………………………………………………………………..11
Operațiunea Selecție…………………………………………………………………………….14
Asignarea valorii numerice de conformitate bazată pe rang………………………14
Selecția bazată pe ruletă………………………………………………………………………16
Selecția universală stohastică ……………………………………………………………….17
Selecția locală……………………………………………………………………………………..17
Selecția prin trunchiere…………………………………………………………………………18
Selecția prin tururi……………………………………………………………………………….18
Operațiunea Combinarea (Încrucișarea) ……………………………………………….19
Operațiunea Mutația…………………………………………………………………………….25
Înserarea………………….………………………………………………………………………..26
Tehnologia Enterprise Java Beans ……………………………………………………….28
Noțiuni generale……………………………………………………………………………………28
Conceptele de baza EJB………………………………………………………………………..28
Containere EJB…………………………………………………………………………………….29
Enterprise Beans…………………………………………………………………………………..32
Interfețele indepărtate și gazda ……………………………………………………………..33
Metode business …………………………………………………………………………………..35
Entitațile Beans…………………………………………………………………………………….36
Sesiunile Beans……………………………………………………………………………………..38
Timpul de existența a metodelor …………………………………………………………….40
Mai mult despre interfețe Gazda și Îndepărtată…………………………………………41
Enterprise Beans ca obiecte Distribuite …………………………………………………..42
Descrierea problemei…………………………………………..……………….44
Soluționarea …………………………………………………….……45
Aplicarea a algoritmului genetic ……………………………………….45
Algoritmul dedus …………………………………………………….………50
Soluția soft ………………………………………………………………….…52
Nivelele a aplicației ……………………………………………………….54
Structura fișierului cu date si fișierului răspuns …………………..55
Diagrama claselor de interacțiune a claselor..………………………57
Interacțiunea cu clientul prin nivele exterioare……………………..58
4 Partea economică a proiectului …………………..………………..59
Noțiuni generale…………………………………………..……….…..60
Planificarea rețea ………………………………………..…………….61
Calculul profitului, coieficientului de recuperare a ………….70
investițiilor
Protecția muncii și sanitare de producere ………………………73
Noțiuni generale…………………………………………………………..73
Zgomotul …………………………………………………………………….74
Securitatea electrică ……………………………………………………..75
Microclimatul ……………………………………………………………..75
Securitatea antiincendiară …………………………………………….76
Radiație ………………………………………………………………………78
Parametri vizuali a imaginii …………………………………………..79
Efecte psihofiziologice ………………………………………………….81
Iluminatul …………………………………………………………………….82
Calcularea iluminatului artificial al îmcăperii ………………….83
Ecologie ……………………………………………………………………..85
Concluzii ……………………………………………………………………………..86
Bibliografie ………………………………………………………………………….87
Anexe ………………………………………………………………………………….88
=== RAMA ===
Introducere
Dezvoltarea rapidă a tehnicii de calcul ne-a permis implementarea pe larg a metodelor mai simple de căutare pentru soluționarea problemelor de calcul numeric care prevăd un volum mare de calcul. Tot din aceste metode fac parte algoritmi evoluționiști. Datorită simplicității și robusteții sale sunt aplicate tot mai des și mai des în soluționarea problemelor tehnologice, economice, în modelarea a diferitor sisteme inteligente și în alte domenii.
În ultimii treizeci de ani, mai multe școli au fost preocupate de dezvoltarea a algoritmilor genetici. Cele mai mari din ele sunt: în SUA a lui J.H. Holland (elaborarea a algoritmilor genetici), în Germania au fost dezvoltate de I. Rechenberg strategiilie evoluționiste, și de H.-P. Schwefel – programarea evoluționistă. Fiecare din aceste școli dezvolta o metodă proprie, dar în orice caz ele toate sunt inspirate de aceiași principii a evoluției naturale.
Fig. 1 Schema de imlementare a AG
Algoritmii evoluționiști sunt niște metode stohastice de căutare care simulează legea de evoluție naturală biologică. Algoritmii evoluționiști operează cu populații de soluții potențiale aplicând principiul de vețuire a celor mai buni indivizi care produc mai bune și încă mai bune soluții de aproximare. Fiecare generație este un nou set de aproximări care este creat de procesul de selectare a indivizilor în acord cu gradul de adaptare în domeniul a problemei, care se înmulțesc permanent folosind operațiile născute din genetica naturală. Acest proces duce la evoluția populației de indivizi, prin căpătarea a tot mai buni și mai buni indivizi care se asimilează cu înconjurarea lor eliminând indivizii slabi și neacomodați.
Algoritmii evoluționiști modelează procese naturale așa ca selecția, recombinare(încrucișare) mutația migrația local și cu vecinii săi. Algoritmii evoluționiști lucrează cu populații de indivizi(soluții posibile) în loc de o singură soluție. În cazul dat căutările sunt efectuate într-un mod paralel.
Ca primul pas a algoritmului este generarea haotică a un număr anumit de indivizi care sunt uniți în o populație. După aceia este evaluată funcția obiectiv (funcția de conformitate numerică a soluției). Deci prima (inițială) populație este produsă.
Indivizii sunt aleși conform gradului de adaptare (funcției numerice de conformitate) pentru producerea a indivizilor noi. Părinții sunt recombinați pentru a produce urmași. Asupra urmașilor se efectează operația de mutație cu o care-va probabilitate. După aceasta este calculată funcția lor de conformitate. Urmașii sunt introduși în populație deplasând pe părinți, și producând o nouă generație. Acest ciclu este efectuat până când nu va fi găsită soluția care satisface criteriul de optimizare.
Algoritmii evoluționiști cu o singură populație este un mecanism puternic și lucrează bine cu un larg spectru de probleme. În orice caz rezultate mult mai bune pot fi primite prin introducerea a mai multor populații, care sunt numite subpopulații. Fiecare subpopulație dă naștere la câteva generații izolat (asemănător cu algoritmul cu o singură populație) înainte ca ele să se schimbe cu unu sau mai mulți indivizi (probabil cu cei mai buni). Modele de algoritmi evoluționiști cu multi-populații este o evoluție a diferitor specii și este mult mai asemănător cu natura de cât algoritmii evoluționiști de o singură populație.
Cum o să vedem mai jos, algoritmii evoluționiști diferă substanțial de metode de căutare și optimizare tradiționale. Cele mai mari diferențe sunt:
Agoritmi evoluționiști caută punctele in spațiul de soluții în mod paralel în tot spațiu a populației dar nu parcurgând câte un singur punct.
Algoritmii evoluționiști nu cer informații adăugătoare sau cunoștințe aucziliare. Ele au nevoie numai de funcția obiectiv și nivelul corespunzător de conformitate care influențează asupra direcției de căutare.
Algoritmii evoluționiști folosesc reguli de tranziție probabilistice ci nu deterministe.
Algoritmii evoluționiști sunt mult mai clari și ușori în aplicare.
Algoritmii evoluționiști pot să ofere un număr de soluții potențiale pentru o problemă dată. Valoarea finală este aleasă de utilizator. În așa mod dacă problema nu are o soluție unică, și are ca de exemplu o familie de soluții optimale, cum în cazul de optimizare de calcul a unei mulțimi de soluții a problemelor pentru alcătuirea orarului. Algoritmii au o potențe foarte înaltă pentru generarea a mulțimilor de soluții simultan.
Deoarece toate aplicațiile moderne care lucrează cu algoritmi genetici cer o mulțime de cunoștințe adiționale legate de modul de programare, deprinderea cu stilul de programare, limbajele folosite, și așa mai departe De aceea scopul lucrării date este ales proiectarea unei aplicații (poate fi distribuită) cu interfețe foarte comode pentru comunicarea cu utilizatori. Aceste pot fi: interfețe de tipul WEB-Browser, o aplicație de tip Windows, interfața de accesare directă a funcțiilor care construiesc algoritmul genetic, comunicarea prin poștă electronică, comunicarea prin intermediul standardelor accesibile pentru toate platforme și majoritatea aplicațiilor(XML , pdf). Tot odată aplicația trebuie să ofere o posibilitate ușoară de a mări numărul de funcții diverse sau optimizate care sunt implicate în algoritmi genetici. Pentru îndeplinirea a tuturor sarcinilor sus enumerate eu am ales specificația a platformei de aplicații server J2EE. Care ne oferă o interfața de programare prin componente Java Enterprise Beans. In acest standard este unită securitatea, siguranța susținerea pe multe platforme al limbajului Java cu prioritățile a serverilor de aplicație.
J2EE este mult mai mult de cât o tehnologie JAVA este o completă filozofie de programare Enterprise. Sistemele J2EE includ trei componente cheie:
Specificația platformei este o listă variate API care definește cererile minime pentru J2EE pe care toți distribuitorii trebuie s-o suporte.
Implementarea de referință este disponibilă fără plată, poate fi un server de aplicații pentru platforma J2EE pentru testarea componentelor în o înconjurare compatibilă c specificarea dată.
Pachetul de testare a compatibilității. este un set deplin de programe de testare pe care distribuitorii pot s-ă le folosească pe deplin pentru validarea faptului că implementarea lor este corespunzătoare cu specificarea J2EE.
Standardul J2EE cere ca să scriem o aplicație enterprise bazată pe componente. Componentele majore a acestui sistem sunt:
Componente care conțin în sine prezentarea și logistică business.
Containere care ne oferă contextul pentru componentele noastre.
Conectoare care ne oferă accesul la bazele de date.
Pe piața a componentelor de software este o prognoză o creștere aproximativ de 4,4 miliarde USD pentru anul 2002 din care 1.0 miliarde USD de la vânzări a produselor software și 3.4 miliarde de la serviciile oferite.(Sursa: „PricewaterhouseCooper”).
Tradițional, aplicațiile server, care de obicei sunt proiectate folosind sisteme monitorizate de procesare a tranzacțiilor, care îngreuna de a scrii soft portabil de o clasa enterprise. Acum, cu ajutorul a Enterprise JavaBeans Component, partea server poate fi creată ca o colecție de componente soft enterprise beans. Aceste aplicații care sunt bazate pe EJB componente pot fi elaborate și rulate pe oricare servere de aplicații ca Sun-Netscape Alliance iPlanet, IBM WebSphere, BEA WebLogic or IONA iPortal Application Server. Crește numărul de programiști, care sunt preocupați de proiectarea a softului bazat pe componente, ce îi ajută să reducă timpul de aflare a lor pe piață, și îmbunătățește calitatea softului.
Dece procurarea a componetelor soft este o idee bună ? Oricine incluzind și programatoru de soft admit că ei infăptuesc ceva, scrie un program sau subrutină și în primul caz mai bine de cât în al doelea. Aceasta este esența a „componentelor” construirea și în continuu înbunătățirea sau incapsularea a noilor capacități de business logistică. Prin procurarea a acestui component programatorul poată să funcționalitatea păstrând calitatea. Și calitatea trebue numaidecât să se mărească deoarece componenta o să treacă prin intermediul a unui set de modificări primind răspunsuri de la utilizatori. Ca un alt caz, când noi rezolvăm o problema sofisticată este posibilă procurarea parțială a care-va componente. Și programarea proprie a componentelor care sunt necesare.
Noțiuni teoretice
Algoritmi genetici
1.1.1 Teorema Schema și noțiuni teoretice.
Teoria a algoritmilor genetici este bazată pe conceptul a schemelor. Schema este un șablon care parțial specifică soluția în spațiul genotipului. De obicei genotipul este format din șiruri. Șirurile, la rândul său, sunt formate din șiruri de simboluri care formează un alfabet A. Deci schema este un șir format din simboluri care aparțin mulțimii A U [*]. Acest simbol trebuie să fie înțeles ca orice simbol, sau simbol necunoscut. Cromosoma conține schema dată, dacă valorile pozițiilor definite în shemă sunt egale cu valorile a genelor corespunzătoare a cromosomei. De exemplu: Cromosoma 10011010 corespunde schemei 1******* și **011*** dar nu corespunde schemei: *1*11*** deoarece ele diferă în gena secundă. Schema poate fi văzută ca un hyperplan în spațiul – dimensional care reprezintă un set de soluții cu proprietăți comune. Este clar că numărul de soluții care corespund schemei H depinde de numărul de poziții care sunt definete în ea (orânduirea lor este reprezentată o(H) ). Un alt concept este lungimea definită a schemei reprezentată (H), ce reprezintă distanța între prima și ultima poziție definită în chema. Mai jos este un exemplu:
Tab.1
Lungimi și numarul de poziții definite în scheme.
Tab. 2
Fig.2 Shema in spațiul tridimensional
Algoritmii genetici progresează prin alocarea șirurilor de valori noi la cele mai bune scheme exponențial, prin generarea succesivă, ținând mecanismul de selecție respunzător pentru acest proces. O altă însărcinare pentru operațiunea de încrucișare este explorarea a noilor combinații în schema prezentă pentru a primi mai buni indivizi. În final, scopul a operațiunii de mutație este de a introduce materialul proaspăt în populație (este foarte important în caz de procesare a mai multor generații).
Efectul de la operația Selecția:
Efectul de la operația Încrucișarea:
Efect de la operația Mutația:
Effect combinat: teorema schema:
Pe schurt, schemele cu o definire joasă a pozițiilor, cu media a valorii numerice de conformitate mai mare de cât media a valorii numerice de conformitate pe toată populația sunt alese ca instanțe pentru creșterea următoare exponențială. Tot acest proces este descris analitic prin intermediul teoremei schemelor unde P’ este probabilitatea a încrucișării și mutației și m(H,t) este numărul de instanțe (string) a chemei H care are numarul de generare t.
1.1.2 Operațiunea Selecția
Primul pas a algoritmului este calcularea pentru fiecare individ a valoarii lui numerice de conformitate. Fiecare individ din pulul necesar de selecție primește o probabilitate proprie de reproducere în dependență de valoarea lui proprie obiectiv și a valorilor obiective a altor indivizi în pool-ul de selecțe. Această valoare este folosită și în următoarele etape pentru selectare.
În urmare vom folosi următori termeni necesari pentru compararea a diferitor scheme de selecție. Definirea a acestor termeni este urmîtoare
Presiunea selecției (selective pressure): Probabilitatea că cel mai bun individ va fi selectat în comparație cu probabilitatea de selecție a oricărui individ din populația dată.
Abaterea (bias): Diferența absolută între indivizii cu valoarea funcției de conformitate normată și probablilitatea de reproducție așteptată al lor.
Domeniu (spreed): Domeniu de valori posibile pentru un număr de mostenitori unui individ.
Pierderea diversității (loss of diversity): Proporția de indivizi din populație care nu va selectată în timpul fazei de selecție.
Intensitatea de selecție (selction intensity): Valoarea medie a funcției de conformitate a populației care este așteptată după aplicarea a metodei de selectare cu o distribuție Gaussiană normalizată.
Abaterea selecției (variația a selecției): Dispersia asteptată a funcției numerice de conformitate a populației după aplicarea metodei de selecție cu o distribuție Gaussiană normalizată.
1.1.3 Asignarea valorii numerice de conformitate bazată pe rang
În procesul de asignare a valorii numerice de conformitate bazate pe rang, populația este sortată conform valorii obiective a fiecărui cromosom. Valoarea este asignată pentru fiecare individ în dependență de faptul dacă această poziție întră în rangul necesar sau nu.
Asignarea valorii de conformitate conform rangului generează o nouă problemă de asignare a conformității proporțională.(În caz de presiunea selecției este foarte joasă poate să apară stagnarea sau poate să apară convergența prematură în caz contrar, când selecția se efectuează pe o porțiune foarte îngustă.). Rangul de reproducție este limitat, de aceea nu poate fi generat de la un individ un număr excesiv de urmași. Rangul introduce o scalare uniformă pentru întreaga populație, și oferă o cale simplă și efectivă de control a presiunii selecției.
Asignarea valorilor bazate pe rang se comportă în un manieră mult mai robust de cât asignarea proporțională, și deci este metoda pe care noi o alegem.
Considerăm :
Nind – numărul de indivizi în populație.
Pos – poziția a individului în populație(cel mai rău are valoarea 1 cel mai bun Nind)
SP – presiunea de selectare.
Valoarea de conformitate numerică este calculată ca:
Rank-area lineară (aranjarea lineară):
Conform(Pos) = 2 – SP + 2 * (SP – 1) * (Pos -1) / (Nind – 1) (7)
Ne oferă valori pentru presiunea selecției între [1.0,2.0]
Noile metode de gradare (Ranking )ne permit să folosim presiuni selectiei mult mai înalte. Aceste metode sunt metode de gradare non-lineare.
Rank-area nonlineară:
Fitness(Pos) = Nind*X^(Pos – 1) / sum(X^(i – 1)); unde i = 1:Nind (8)
X este calculat ca rădăcina polinomului:
0 = (SP – 1)*X^(Nind – 1) + SP*X^(Nind – 2) + … + SP*X + SP (9)
Rank-area non-lineară ne oferă presiunea selectivă la valorile[1.0,Nind – 2.0]
Figura 3 ne arată probabilitatea că fiecare individ va fi selectat pentru încrucișare depinde de valoarea numerica de conformitate a lor normată de valoarea numerică de conformitate totală a populației.
Fig.3 Asignarea valorii numericede conformitate pentru rankarea liniară și non liniară.
1.1.4 Selecția bazată pe ruletă
Este cea mai simplă metodă de selectare, sau mai este numită metoda stohastică cu deplasare. Acest algoritm este stohastic și implică următori pași:
Indivizii sunt amplasați pe o dreaptă continue formată din segmente și fiecare segment este egal cu valoarea numerică de conformitate a individului. Pe drapta principală sunt aruncate puncte în mod aleator și este selectat individul proprietar a segnentului pe care a nimerit aces punct. Acest proces este repetat până când nu se va selecta numărul necesar de indivizi (populația pentru încrucișare). Această tehnică este asemănătoare cu ruletă de cazino de oarece fiecare dispărțitură este proporțională în lungime cu valoarea numerică de conformitate. Acest proces de culegere a punctelor aleatoare de pe draptă formată din segmete cu intervale egale cu valori numerice de conformitate a indivizilor este arătat în figura 4.
Fig.4 Exemplu de selecție
Selecția bazată pe ruletă ne oferă o abatere egală cu 0 dar nu garantează minimul necesar pentru progresarea a populației.
1.1.5 Selecția universală stohastică
Selecția universală stohastică ne oferă o abatere 0 și minimul necesar pentru progresare. Indivizii sunt stocați pe o linie continuă în așa mod ca fiecare segment a individului este egal în lungime cu funcția lou de conformitate, asemănător cu selecția bazată pe ruleta de cazino. Pe drapta sunt amplasate pucte pe intervale egale între ele. Să considerăm N – numărul de indivizi care este necesar de selectat, atunci distanța între puncte este egală 1/N și poziția a primului punct este generat aleator între rangul[0, 1/N].
Pentru 6 indivizi este necesar de selectat distanța între puncte și ea este egală cu 1/6=0.167. Valoarea aleatoare pentru primul interval este între intervalul [0,0.167] și este egală cu 0.1. Acest proces este reprezentat în Figura 5.
Fig. 5 Selecția universală stohastică
Selecția stohastică universală ne dă o garanție mult mai mare de selecție a idivizilor de cât selecția bazat pe principiul ruletei de cazino.
1.1.6 Selecția locală
În selecția locală fiecare individ este amplasat în o înconjurare închisă denumită vecinătatea locală. Indivizii interacționează numai cu indivizii din vecinătatea lor proprie. Vecinătatea depinde de structura a populației în care ei sunt distribuiți și toți vecinii pot fi priviți ca un grup de parteneri potențiali pentru încrucișare.
Structura de vecinătate poate fi:
Lineară: Ringul deplin, jumătate de ring
În două dimensiuni: Cruce plină jumătate de cruce, Stea plină, Jumătate de stea
Tri-dimensional și cu o complexitate mult mai mare cu diferită combinație a structurilor de mai sus
Distanța dintre vecinii posibili poate fi aleasă conform mărimii a populației.
Între indivizi poate exista o distanță de izolație. Cu cât mai mică este vecinătatea cu atât este mai mare distanța de izolare. În orice caz deoarece se generează o noua populație aliator formată din indivizii aleși propagarea este informației este prezentă.
Mărimea a vecinătății determină viteza de propagare a informației între indivizi a populației, în așa mod noi trebue să decidem între propagare rapidă sau susținerea a unei diversități înalte în populație. O diversitate înaltă este deseori necesară pentru prevenirea așa dificultăților ca minimul local. Selecția locală cu marimea de vecinătate mică performează mai bine de cât selecțîa locală cu o distanță de vecinătate mai mare. Deci pentru pentru vecinătatea 2 dimensională cu o structură jumătate de stea este recomandată distanța 1 pentru selecția locală. În orice caz dacă populația este mai mare (>100 de indivizi) este recomandată distanța mai mare sau o altă vecinătate 2-dimensională poate fi folosită.
1.1.7 Selecția prin trunchiere.
Comparând cu alte modele de selectare care modelează selecția naturală metoda de selectare prin trunchiere este o metodă de selectare artificială. Ea se folosește pentru aplicarea selecției asupra foarte mari populații și foarte masive.
În selecția prin trunchiere indivizii sunt sortate în conformitate cu funcția lor de conformitate. Numai cei mai buni indivizi sunt selectați pentru a prelua rolul de părinți. Acești părinți selectați produc urmași în mod aleator. Parametru pentru selecția prin trunchiere este pragul de trunchiere Trunc. Acest parametru indică proporția a populației care va fi selectată ca părinți și poate lua valori între 50%-10%. Indivizii care urmează după pragul de trunchiere nu produc urmași. Termenul intensitatea de selecție este foarte des folosit în selecția prin trunchiere, tabela de mai jos ne prezintă relația între aceste două variabile.
Tab.3
Relația între pragul de trunchiere și intensitatea de selecție
1.1.8 Selecția prin tururi
În selecția prin tururi un număr Tour a indivizilor este ales aleator din populație și cel mai bun din acest grup este selectat ca părinte. Acest proces este repetat atâtea ori de câți părinți noi avem nevoie. Acești părinți produc urmași aleator conform legii de distribuție uniformă. Parametru pentru selecția prin tururi este: Tour- câți indivizi se vor selecta în un tur. Acest parametru poate lua valori de la 2 până la Nind (numărul de indivizi în populație). Tabela de mai jos ne arată relația între Tour și intensitatea de selecție:
Tab. 4
Relația între intensitatea de selecție și mărimea a turului
Intensitatea de selecție:
SelIntTour(Tour) = sqrt(2*(log(Tour)-log(sqrt(4.14*log(Tour))))) (10)
Formula 10 este aproximativă.
Perderea diversității:
LossDivTour(Tour) = Tour^-(1/(Tour-1))-Tour^-(Tour/(Tour-1)) (11)
(Aproape 50% din populație este pierdută la coeficientul Tour=5).
Dispersia a selecției:
SelVarTour(Tour) = 1-0.096*log(1+7.11*(Tour-1)) (12)
SelVarTour(2) = 1-1/pi, (approximation) (13)
1.1.9 Operațiunea de combinare
Încrucișarea cromosomilor cu valori reale:
Recombinarea discretă efectuează schimbul de valori a genelor între indivizi. Considerăm următori doi indivizi fiecare cu trei variabile, care vor fi folosite pentru ilustrarea a altor tipuri de recombinări.
Individul 1 12 25 5
Individul 2 123 4 34
Pentru fiecare variabilă se calculă apartenența a fiecărei genene date la participarea de generare a genei noi. Această valoare se ea aleator:
Variabila 1 2 2 1
Variabila 2 1 2 1
După recombinare șunt create următorii noi indivizi:
Individul 1 123 4 5
Individul 2 12 4 5
Posibile poziții a cromosomilor generați după încrucișare
Fig. 6 Pozițiile posibile a urmașilor după încrucișarea discretă
Recombinarea discretă generează colțurile a unui hypercub care sunt definite de părinți. Figura 6 (de mai sus) ne arată efectul geometric a recombinării discrete.
Recombinarea discretă poate fi efectuată asupra diferitor tipuri de variabile(booleene, întregi, flotante).
Recombinarea intermediară este metoda care poate fi aplicată numai la variabile reale. Aici valorile variabilelor sunt alese undeva pe lângă sau între valorile variabilelor a părinților.
Cromosomul nou este generat conform regulii:
Fiu = părinte 1 + Alpha ( părinte 2 – părinte 1) (14)
Unde Alfa este un factor de scalare care este ales uniform aleator pe intrvalul: [-d, 1+d]. În recombinarea intermediară d este egal cu 0. Pentru recombinarea intermediară extinsă factorul de scalare d > 0. O foarte bună alegere este d = 0.25. Fiecare variabilă a fiilor este rezultatul recombinării a variabilelor în acord cu expressia de mai sus, cu Alfa aleasă nouă pentru fiecare variabilă.
Fig.7 Domeniul de valori a urmașilor și a părinților în recombinarea intermediară
Considerăm următori doi indivizi:
Individul 1 12 25 5
Individul 2 123 4 34
Cu variabila Alfa pentru acest exemplu:
Variabila 1 0.5 1.1 -0.1
Variabila 2 0.1 0.8 0.5
Noii indivizi sunt calculți ca:
Fiul 1 67.5 1.9 2.1
Fiul 2 23.1 8.2 19.5
Recombinarea intermediară poate genera orice punct în hypercub care este foarte puțin mai larg de cât definit de părinți
Fig.8 aria de cuprindere a urmașilor după recombinarea binară
Recombinarea lineară este similară cu recombinarea intermediară cu o excepție: numai o valoare a Alfa-ei pentru toate variabile este folosită:
Individul 1 12 25 5
Individul 2 123 4 34
Volorile lui Alfa pentru acest exemplu:
Variabila 1 0.5
Variabila 2 0.1
Noii indivizi sunt calculți ca:
Fiul 1 67.5 14.5 19.5
Fiul 2 23.1 22.9 7.9
Recombinarea lineară poate genera orice punct pe linia care este definită de către părinți
Recombinarea lineară extinsă generează fii în direcția defenită de către părinți (recombinare lineară). Ele sunt generate mult mai departe de aria defenită de către părinți, și în direcția a părintelui 1.
Fig.9 Pozițiile posibile a urmașilor după combinarea lineară
Recombinări binare (crossover)
a) Încrucișare bazată pe un singur punct
În încrucișarea bazată pe un singur punct k[1,2,…,Nvar-1], unde Nvar numărul de indivizi. Sunt oferite vecinului șirurile de gene până la acest punct și luate de la el șirurile după. Figura 10 ilustrează acest proces.
Considerăm următorii doi indivizi cu 11 variabile binare:
individul 1 0 1 1 1 0 0 1 1 0 1 0
individul 2 1 0 1 0 1 1 0 0 1 0 1
Punctul de încrucișare este ales 5
După încrucișare sunt creați următorii indivizi:
fiul 1 0 1 1 1 0| 1 0 0 1 0 1
fiul 2 1 0 1 0 1| 0 1 1 0 1 0
Fig.10 Încrucișarea pe un singur punct
b) Încrucișarea multi-punct:
Pentru încrucișarea multi-punct, sunt m puncte de încrucișare ki[1,2,…,Nvar-1], i=1:m, Nvar: numărul de variabile a indivizilor care sunt alese aleator fară duplicări și sortate după orânduirea crescătoare. După aceasta Variabilele între punctele alese de ăncrucișare sunt interschimbate între doi indivizi și se produc doi noi indivizi.
Considerăm următori doi indivizi:
Individul 1 0 1 1 1 0 0 1 1 0 1 0
Individul 2 1 0 1 0 1 1 0 0 1 0 1
Pozițiile de încrucișare. Sunt alese următoare (m=3):
2 6 10
După incrucișare sunt creați următorii indivizi:
Fiul 1 0 1| 1 0 1 1| 0 1 1 1| 1
Fiul 2 1 0| 1 1 0 0| 0 0 1 0| 0
Fig.11 Încrucișarea multipunct
Ideia de bază a încrucișării multi-punct și a mai multor tipuri de încrucișari este ca nu numai de căt partea cea mai bună a cromosomei să fie prezentă în urmașii săi. Pe viitor natura disruptivă a încrucițarii multipunct se transformă în politica de încurajare a exploararării a spațiilor noi de căutare, mai mult de cât favorizarea politicii de a aduce la convergența a indivizilor care sunt mai mult adaptați pentru rezolvarea problemei, ceia ce face câutarea mult mai robustă.
c) Încrucișarea uniformă
Încrucișare pe un punct și pe mai multe puncte defenește punctele de încrucișare ca locuri în care indivizii sunt rupți. Încrucișarea uniformă generalizează aceste scheme făcând fiecare locus ca un punct de încrucișare potențial. Masca de încrucișare are tot aceiași lungime ca și structura indivizilor. Ea este creată aleator și paritatea a biților în mască indică care părinte o să transfere bitul său cu care bit.
Considerăm următori doi indivizi cu 11 variabile binare în fiecare:
Individul 1 0 1 1 1 0 0 1 1 0 1 0
Individul 2 1 0 1 0 1 1 0 0 1 0 1
Pentru fiecare variabilă a părinților care contribue pentru generarea noilor copii sunt aleși aleator cu aceiași probabilitate. Aici, dacă copilul 1 este produs, luănd un bit de la părintele 1 numai dacă bitul corespunzător din masca este egal cu 1, în caz opus (masca este egala cu 0) butul corespunzător se ea de la masca doi.
După încrucișare sunt create următorii fii:
fiul 1 1 1 1 0 1 1 1 1 1 1 1
fiul 2 0 0 1 1 0 0 0 0 0 0 0
Încrucizarea uniformă asemănător cu încrucizarea multipunct sunt necesare pentru reducerea a abaterii asociată cu lungimea a reprezentării binare folosite și codificarea particulară pentru setul de parametri dat.
Aceasta ajută de trece abaterea în încrucișarea pe un singur punct spre subșiruri scurte fără de a înțelegerea cerută a impotranței a biturilor individuale în reprezentarea individuală.
Spears și De Jong a u demonstrat cum încrucișarea uniformă poate fi parametrizată prin aplicarea a probabilității pentru biturile schimbătoare. Acesti extra parametri pot fi folosiți pentru a controla numărul de rupturi pe parcursul recombinării fără a introduce direcția abaterii a lungimii care este folosită.
Algoritmul de încrucișare uniformă este identic cu recombinarea discretă..
c) Încrucișare compusă (amestecată)
Acest tip de încrucișare reiese din încrucișarea uniformă. Se selectează un singur punct de încrucișare. Dar înainte de a schimba variabilele ele sunt aleator orânduite în amândoi părinți. După recombinare variabilele în urmași sunt decodificate. Aceasta elimină abaterea pozițională de oarece variabilele sunt aleator refăcute fiecare dată când se îndeplinește încrucișarea.
1.1.10 Operațiunea Mutația.
După recombinare asupra urmașilor se efectuează operațiunea Mutația. Variabilele a urmașilor sunt permutate cu niște valori aleatoare foarte mici ( mărimea de pași de mutație). Probabilitatea a variabilei de mutație este un set invers proporțional decât numărul de variabili. (dimensiunea). Mai mare dimensiune de indivizi are mai mică probabilitate de mutație.
In diferite lucrări sunt raportate rezultatele pentru rate optimale ale mutației. Majoritatea scriu că rata 1/n produce un foarte bun rezultat pentru o largă clasă de funcții testate. În orice caz rata de mutație este independentă de mărimea de populație. Expereiențe au demonstrat mărirea sau micșorarea ratei de mutație aduc schimbări neimportante pentru creștere.
Mutația în numere reale. Figura de mai jos ne arată posibile permutări pentru un individ cu două dimensiuni.
Fig.12 Posibile urmări a efectului de mutație
Numărul a pași efectuați pentru mutație este complicat de ales. Mărimea optimală a pașilor depinde de problema considerată și poate varia în decursul procesului de optimizare. Pașii micuți sunt reușite foarte des. Dar câte odată pașii mai mari sunt mai rapizi.
Sunt propuși următori operatori ai mutației:
Variabila mutantă = variabila ± rang*delta ( + sau – cu aceeași probabilitate) (15)
Rang = 0.5 * domeniul a variabilei (intervalul de cautare) (16)
delta = sum(a(i) 2^-i), a(i) = 1 cu probabilitatea 1/m, în alt caz a(i) = 0; m = 20. (17)
Acest algoritm a mutației ne dă o posibilitate să generăm majoritatea a punctelor în hypercube defenit de variabilele a indivizilor și rangul a mutațiilor. În orce caz, a fost testat, mult mai des să nimerim asupra variabilei necesare efectuănd pași mici de cât să lucrăm cu variabile mari. Cu m = 20 algoritmul de mutație are posibilitatea să localizeze optimumu cu cea mai înnaltă precizie (range·2^-19).
Mutație binară
Mutația binară înseamnă schimbarea valorii a variabilelor. Pentru fiecare individual valoarea variabilei este schimbată aleator. Tabela 1 arată un exemplu a mutației binare pentru un individ cu 11 variabile unde variabila 4 este schinbată.
Tab. 5
Indivizii înnainte și după mutație
Dacă să ne imaginăm că indivizii de sus codifică un număr real între[1,10], efectul a mutației actuale depinde de codificarea. Tabela 6 ne arată diferite numere a indivizilor înainte și după mutație pentru codificarea binară/obișnuită și aritmetică/logaritmică
Tab.6
Rezultatele a mutației binare.
1.1.11 Înserarea
După ce urmașii au fost selectați, recombinați, s-a efectuat operațiunea de selectare din populația veche, se poate de determinat valoarea numerică de conformitate a urmașilor. Dacă sunt produși mai puțini urmași de cât dimensiunea a populației originale, pentru a menține mărimea a populației originale urmașii sunt inserați în populația veche. Similar, dacă nu toți urmași sunt folosiți pentru fiecare generație sau mai mulți urmași sunt generați de cât mărimea a populației veche atunci trebuiește folosită o schemă de reinserare. Pentru a determina care individ există în populație nouă.
Metoda de selectare folosită determină schema de inserare: inserare locală pentru selecția locală și inserarea globală pentru toate celelalte metode de selectare.
De oarece noi nu vom folosi metoda de selectare locală, mai jos noi vom analiza numai metoda globală de inserare.
Inserare globală. Există mai multe scheme de inserare globală:
Produce toți atâți urmași ca și părinți și îi elimină pe toți părinții (inserare pură).
Prooduce mai puțini urmași cât părinți și elimină părinții aleator după legea uniformă (inserare uniformă).
Produce mai puțini urmași de cât părinți și elimină pe cei mai răi părinți (inserare de elită).
Produce mai mulți părinți de căt este necesar pentru inserare și inserează numai pe ce mai buni urmași(inserare bazată pe valoarea funcției de conformitate).
Inserare pură este cea mai simplă metodă de inserare. Fiecare individ trăiește numai o generație. Această schemă este folosită pentru cel mai simplu algoritm genetic. În orice caz este foarte asemănător cu aceia că cei mai buni indivizi sunt deplasați fără a a salva informația lor pentru viitor și deci ea este pierdută..
Metoda de elită combinată cu metoda bazată pe funcția de conformitate previne pierderea informației și este metoda care este recomandată. Pentru fiecare generație, un număr concret de părinți cu o funcție de conformitate mică de căt un prag este eliminat cu tot același număr de cei mai potriviți urmași. Schema bazată pe funcția numerică de conformitate implementează metoda de trunchiere înainte de a insera în o populație nouă. În orice caz în fiecare generație sunt inserați noi indivizi. Nu este verificat dacă părinții mai buni sunt înlocuiți cu încă mai buni urmași.
Deoarece părinții pot fi deplasați cu urmașii cu o funcție numerică de conformitate mai joasă valoarea medie a valorii numerice a funcției de conformitate poate să scadă. Dar în orice caz ei pot fi eliminați de urmașii care sunt înserați în generația următoare.
Tehnologia Enterprise Java Beans
1.2.1 Noțiuni generale
Tehnologia soft Enterprise Java Beans este o specificare a unui model de componente server pentru construirea aplicașiilor de o clasă comercială. Specificația Enterprise JavaBeans descrie architectura pentru sisteme orientate pe obiecte bazate pe componente tranzacționale și ditribuite. Specificația obliga un model de programare, care sunt convenții sau protocoale și seturi de classe și interfețe definite in EJB API. Modelul de programare EJB asigură programatorii și distribuitorii server EJB cu un set de obligațiuni care descriu o platforma comuna pentru dezvoltarea a aplictiilor. Sensul a acestor contracte este o garanție a portabilitații in partea opusa a distribuitorului (vînzătorului) in același timp oferind toata bogatia a functionalitații.
Programatorul a aplicațiilor enterprise poate construi aplicația sa ca un set de bean-uri interconectate și rularea lor ca o aplicație în EJB server de aplicații. Specificarea dată oferă serverului de EJB aplicații de a efectua un set de servicii comerciale prin intermediul a interfețelor Java bine defenite. De asemenea standardul descrie câteva interfețe pe care toți programatorii trebue să implementeze, pentru a fi rulate pe un EJB-compatibil server de aplicații. Altfel spus serverul EJB oferă un set de servicii și ca răspuns așteaptă ca componentele (enterprise beans) să implementeze care-va intefețe pentru ca el să poată să direjeze cu ele. Standartul EJB deschide posibilitatea pentru programatorii enterprise să se focuseze asupra logistica actuală a aplicației, codarea în beans și serverul EJB este responsabil pentru toate servicii comerciale așa ca Concurrency, Persistence, Transaction Management, Security Management, Naming Services, Object Distribution și Resurse Management. Aplicațiile bazate pe EJB sunt de o securitate innalta, robuste, scalabile, portabile, și intemediare.
1.2.2 Conceptele de baza EJB
Componentele EJB sunt găzduite pe servere. Ele sunt rulate în obiecte speciale numite containere. Funcționalitatea lor este este oferită pentru clienți și metodele lor de cerere prin intermediul a intefețelor bine defenite. Cerințele pot să fie în tot acelaș spațiu de procesare ca și obiectul server șau poate să fie în alt process sau pe altă mașină. Obiectul care efectuiaza cererea comunică cu serverul prin intermediul a obiectului Client-Proxy. Obiectul client-proxy are tot aceiași intefața ca și componenta EJB, dar pentru fiecare metodă de invocare proxy numai trimete cererea corespunzătoare pentru beanul real.
1.2.3 Containere EJB
Componentele software Enterprise beans care rulează în o inconjurare soft specială care este numită EJB container. Hostul (gazda) de containere conduce cu componentele Enterprise beans în tot aceiasi maneră cum și Java Web Server deserveste servleturi sau HTML browser gazdueste apleturi. Componentele Enterprise beans nu au nici o funcționalitate în afara EJB containerului. Acest container duce evidența a oricărui aspect a enterprise bean în runtime în care se include accesul îndepărtat a componentei bean, securitate, stabilitate, transferabilitate, exactitate, si accesul la resurse comune.
Containerul izolează componentele Enterprise beans de la accesul direct de aplicația client. Când aplicația clientului cheamă o metodă îndepartată a enterprise bean, containerul primul intercepe (primește) invocarea pentru garantarea, stabilitații, transferabiliitații si securității în general, este aplicată către fiecare operație pe care clientul o efectuiază cu componenta bean. Containerul efectuează operațiile de securitate, stabilitate și transferabilitate autamat pentru bean, în așa mod programatorul de componente bean nare nevoie de a scri aceste functii în singurul cod. Programatorul se poate concetra asupra incapsularii a business-algoritmului, pâna când containerul duce evidența despre toate celelalte.
EJB Containere gestioneaza enterprise beans ca aplicații.
Containerul gestioneaza mai multe componente beans simultan in tot același mod cu și Java WebServer gestioneaza mai multe servleturi. Pentru a reduce consumarea a memoriei și timpul procesorului, contanerul grupează resursele și gestionează cu ciclurile de viață al fiecărui beans foarte atent. Daca componenta bean nu mai este utilizată, containerul o va plasa în grupa resurselor care permite reutilizarea a resurseslor de un alt client, sau extragerea din memorie si reintoarcerea a lui în cel mai potrivit moment.
Fig.13 Containere EJB efectuiază managementul Beans-urilor în timpul rulării
Deoarece aplicația clientului nu poate accesa componenta beans direct, containerul este un nivel dintre beans și client – aplcatia a clientului nu poate ști nici decum despre ceia ce resurse gestioneaza containerul. Beanul, care nu este gestionat in momentul dat, ca de exemplu, poate fi retras din memoria a serverului pâna cind nu sunt rechemări îndepărtate. Cînd clientul recheama metoda in aplicația îndepartată, atunci containerul pur și simpu re-încarcă bean-ul pentru a deservi cererea. Aplicația clientului este in neștiința completă a acestui process.
Enterprise beans depinde complect de container și accesează toate obiectele de care are nevoe prin intermediul ei pentru toate cele ce are nevoie. Daca enterprise bean are nevoie sa acceseze o conectare JDBC sau un alt bean, toate aceste lucruri se efectuiaza prin intermediul containerului, dacă are nevoe să acceseze identitatea care o cheamă el o primește singurul pe sine, proprietățile acestea sunt accesate tot prin intermediul containerului. Enterprise beans interacționează cu containerul prin intermediul a altor mecanizme: metoda callback, intefața EJBContext sau Java Naming and Dicectory Intrface (JNDI).
Metoda-Callback
Orice bean implementează un subtip a interfeței EnterpriseBean care definește câteva metode, care sunt numite callback metode. Fiecare metoda callback anunța componenta bean despre diferite evenimente petrecute, și containerul o să cheme aceste metode pentru a anunța componenta bean când acestea vor activa componenta, bean pastraza înscrierile in baza de date, termina tranzacțiia, extrage componeta bean din memorie și altele. Metoda callback permite componentei bean a șansa de executa ceva lucru imediat dupa sau înainte de careva eveniment. Metoda Callback este discutata in secție mai jos.
EJBContext
Fiecare bean obține obiecte EJBContext, care este referința direct catre container. Interfața EJBContext distribuie metode pentru interacțiunea cu contanerul in așa mod ca bean sa poata cere informația despre imprejurarea asemanator cu identificarea a acestui client, statutul a tranzacței, sau obținerea referinței îndepărtate catre un obiect pentru el.
Java-Naming-and-Directory-Interface
Java Naming and Directory Interface (JNDI)este extensie standardă pentru platforma Java, destinată pentru accesarea sistemelor de nume, asemanator cu LDAP, NetWare, file systems, etc.. Fiecare componentă bean o sa aiba access la un special sistem de nume care este numit Environment Naming Context (ENC). Componenta ENC este gestionată de container și accesată de beans folosind JNDI. JNDI ENC da posibilitatea pentru bean a accesa resursele asemanatoare cu JDBC conectare li altele enterprise beans, și proprietați specifice pentru acest bean.
Specifiacația EJB descrie contractul bean-container, care include mecanizmul (callback, EJBContext, JNDI ENC) descrise mai sus ca un set strict de reguli care descrie cum enterprise beans și containerul lui sor comporta în comum, cum nivelul de securitate este accesat, cum tranzacția este gestionata, cum persistența este aplicata etc.
Contractul bean-conainer este destinat pentru a face enterprise beans portabil intre EJB containere in așa mod ca enterprise beans sa poata sa fie dezvoltate odata si sa ruleye in orice container. Distribuitorii (vinzatorii) așa ca BEA, IBM, și GemStone vînd aplicații pentru servere care includ containere EJB. Ideal, orice aplicație enterprise beans trebuie sa ruleze , conform specificației in orce EJB container.
Portabilitatea este proprietatea principala pe care EJB ne ofera. Portabilitatea ne garantează ceia că o componentă bean dezvoltată pentru o aplicație poate migra catre un alt producator daca un alt producataor ne ofera o performanța mai buna.
Portabilitatea incă inseamna ca programatorul a bean componentelor poate mari performanța sa prin intermediul a câtorva EJB container vendori, efectuând organizarea și dezvoltarea cu mai multe oportunitați.
Portabilitatea este pur și simplu ceia ce face modelul EJB valuabil. Deoarece containerul gestionează taskuri complexe asemanatoare cu securitatea, tranzacții, persistență, acordanță și gestionarea resurselor, programatorul a bean aplicațiilor se concentrază asupra afacerilor proprii si asupra modelului de programare care este foarte simplu. Un model de programare simplu înseamnă că beans poate fi dezvoltat mai repede fără a cere acces în obiectele distribuite, tranzacții si alte sisteme. EJB ne aduce procesarea tranzacțiilor si dezvoltarea obiectelor distribuite pe o faza cea mai principala.
2.2.4 Enterprise Beans
Pentru crearea componentelor a aplicației-server EJB, programatorul imparte în două interfețe care definesc business metode a bean-ului, plus classa actuală de implementare. Atunci clientul folosește interfețele publice bean, pentru crearea, manipularea și ștergerea beans din EJB server. Clasa de implementare, poate fi numită clasa bean, este instalată în regim runtime și se transformă în obiect distribuit.
Enterprise beans care sunt traite in EJB container și sunt accesate de aplicațiile client prin intermediul rețelei și cu ajutorul interfețelor indepartate și gazda. Interfețele indepartate și gazda ne dezvaluie posibilitațile a bean și repartezeaza toate metodele care sunt necesare pentru crearea, innoirea, interacțiunii între ele, și ștergerea a beanului. Bean este o componentă a serverului asemanatoare cu Customer sau HotelClerk.
Fig.14 O vedere conceptuală a arhitecturii EJB
1.2.5 Interfețele indepărtate și gazda.
Interfețele indepartate și cele gazda reprezinta metodele care țin de ciclul vieții a aplicației (crearea, distruge, găsește) pâna când interfața îndepărtată reprzintă metodele business din bean. Metodele indepartate și cele gazda sunt moștenite din intefețele: javax.ejb.EJBObject și javax.ejb.EJBHome respectiv. Tipurile de interfețe definesc un set standart de metode utile și reprezintă un tip comun de bază pentru toate interfețe gazdă și îndepartate.
Clientul folosește înterfața gazdă bean pentru a obține legatura catre interfața îndeprtată. Interfața îndepartată definește business metode asemănătoare cu metoda de access, metoda de scimb a proprietăților, sau metode care prelucrează acțiunile asemanatoare cu metodele HotelClerk bean pentru rezervarea unei încăperi în hotel. Din aplicația de mai jos se poate vedea cum o aplicație bean (Customer) are posibilitatea de a accesa din aplicația client. In cazul acesta intefața gazda este de tipul CustomerHome dar intefața indepartata de tipul Customer:
CustomerHome home = // … Obținerea interfeței care
// implementeaza interfața gazdă.
// Folosim interfața gazdă pentru crearea
// a unei noi instanțe a beanului Customer.
Customer customer = home.create(customerID);
// folosim metode business în Customer.
customer.setName(someName);
Fig.15 Diagrama de classe a interfețelor Remote și Home
Intefața indepartata definește business metode de la bean. Aceste metode sunt specifice pentru conceptele bssines pe care ele le reprezintă. Intefețele indepartate sunt sublcasse din javax.ejb.EJBObject care este subclassa a intefeței java.rmi.Remote. Importanța a structurii de moștenire va fi discutată mai tîrziu. Acum ne vom concentra atenția asupra business metodelor și sensului pe care ele îl au. Mai jos este definiția pentru interfața îndepartată pentru Customer bean.
import javax.ejb.EJBObject;
import java.rmi.RemoteException;
public interface Customer extends EJBObject {
public Name getName()
throws RemoteException;
public void setName(Name name)
throws RemoteException;
public Address getAddress()
throws RemoteException;
public void setAddress(Address address)
throws RemoteException;
}
Interfața îndepartată descrie metode accessor și mutator pentru a citi și a transforma informația despre business reprezentare. Acestea sunt tipice pentru tipure de bean care sunt numite entitați bean, care reprezinta business obiecte persistente; business-obiecte datele caruia au fost stocate în baze de date. Entități beans reprezintă business date în baza de date și adaugă un comportament specific pentru aceste date.
1.2.6 Metode business.
Metodele business reprezintă taskurile pe care bean le executa. În așa mod entitățile bean foarte des au metode orientate pe tascuri, tascurile sunt niște tipuri mai speciale din classa beanurilor care sunt denumite session bean (de tip sesiune). Session bean nu reprezină detele asemanator obiectelor entity bean. Ele reprezinta procesele business sau agenți care le executa ca servicii, de exemplu funcția care efectuiaza rezervația in hotel. Mai jos avem definiția a unei intefețe remote pentru beanul HotrelClerk, care este de tipul sessiune bean.
import javax.ejb.EJBObject;
import java.rmi.RemoteException;
public interface HotelClerk extends EJBObject {
public void reserveRoom(Customer cust, RoomInfo ri,Date from, Date to)
throws RemoteException;
public RoomInfo availableRooms(
Location loc, Date from, Date to)
throws RemoteException;
}
Business metode definite în interfața remote HotelClerk reprezinta procese mai rapid și mai precis de cât un simplu accesor. Bean-ul HotelClerk acționează ca un agent ivind ca sens de a executa tascurile pe jumatatea utilizatorului, dar fară acționare în baza de date. Noi nu avem nevoe de informația despre HotelClerk, noi avem nevoe ca HotelClerk se execute taskuri pentru noi. Aceasta este o comportare tipica a unei componente bean-sesiune.
În enterprise beans există două componente de bază : entități beans care reprezintă date in baza de date și beans-sesiune, care reprezinta procese de acțiuni,acționează ca agenți care prelucreaza acțiuni. Când construim o aplicație în EJB noi avem nevoie de mai multe componente de enerprise beans, fiecare reprezinta diferite business concepte. Fiecare business concept o sa fie sau entity bean sau session bean. Noi o să avem nevoie sa alegem care tip de bean o sa fie de bază, și cum dorim săl utilizam.
1.2.7 Entitațile Beans
Pentru fiecare intefața remote exista classa de implementare; un business obiect care implemeteaza business metode care sunt descrise in interfața remote. Aceasta este bean class un element cheie in bean. Mai jos este o difeniție parțiala a Classei Customer bean.
Fig.16 Diagrama de classe pentru Beans-ul entitate.
import javax.ejb.EntityBean;
public class CustomerBean implements EntityBean {
Address myAddress;
Name myName;
CreditCard myCreditCard;
public Name getName() {
return myName;
}
public void setName(Name name) {
myName = name;
}
public Address getAddress() {
return myAddress;
}
public void setAddress(Address address) {
myAddress = address;
}
….
}
CustomerBean este classa de implementare. Ea conține datele și repartezeaza metodele accessor si altele business metode. Ca și entity bean CustomerBean ofera oaabiecte penru vizualizarea obiectelor a clienților, aplicația poate pur și simplu utiliza interfața remote pentru beanul Customer pentru accesarea datelor. Beans-entitate pot implementa tipul javax.ejb.EntityBean care descrie un set de metode de anunțare pe care beanul le folosește pentru interacțiunea cu containerul. Aceste metode de anunțare for fi examinate mai detailat mai jos.
1.2.8 Sesiunile Beans
Beanul HotelClerk este un bean-sessiune, care este similar cu mai multe etitați bean respectiv. Bean sessiune reprezinta un set de processe sau tascuri caree sunt prelucrate din numele aplicației client. Sessiunile bean pot fi folosite pentru alte componente beans pentru indeplenirea a tascurilor sau accesarea a bytelor de date direct. Un mic fragment de cod ne arată cum o sessiune bean face acestea. Metoda reserveRoom() aratată mai jos, folosește câteva alte beans pentru terminarea taskurilor, pâna când metoda avaliableRooms() folosește JDBC pentru accesarea a datelor direct.
import javax.ejb.SessionBean;
public class HotelClerkBean
implements SessionBean {
public void reserveRoom(Customer cust, RoomInfo ri,
Date from, Date to) {
CreditCard card = cust.getCreditCard();
RoomHome roomHome =
// … primește referința gazdă
Room room =
roomHome.findByPrimaryKey(ri.getID());
double amount = room.getPrice(from,to);
CreditServiceHome creditHome =
// … primește referința gazdă
CreditService creditAgent =
creditHome.create();
creditAgent.verify(card, amount);
ReservationHome resHome =
// … primește referința gazdă
Reservation reservation =
resHome.create(cust,room,from,to);
}
public RoomInfo[] availableRooms(
Location loc,Date from,Date to) {
// Execută conectarea SQL pentru
// căutarea a gazdelor oferite
Connection con =
// … prea conecțiunea la baza de date
Statement stmt = con.createStatement();
ResultSet results =
stmt.executeQuery("SELECT …");
…
return roomInfoArray;
}
}
Noi putem sa anunțam ce fel de classe bean definite mai jos nu implementeaza interfețele indepartate sau gazda. Nu este necesar ca EJB sa ceara implementarea a acestor interfețe. In realitate tipul de baza a interfețelor gazda și remote (EJBObject și EJBHome) definite o mulțime de alte funcții care sunt defenite automat. Classa bean nu numaidecît trebue sa efectueze implementarea pentru toate busness metode descrise in interfața remote.
1.2.9 Timpul de existență a metodelor
În adăugare pentru interfața remote, toate beansurile au interfața gazda. Interfața gazda descrie metodele pentru existența, nașterea, distrugerea si locarea beansurilor. Acestea comportari de existența sunt separate în afara a interfețelor remote deoarece ele reprezintă comportamentul care este specific nu numai pentru a singură instanță. Mai jos este definiția a unei intefețe gazda pentru Customer Bean. Evedențiem ca ele sunt extinse de la intefața javax.ejb.EJBHome care la rindul sau este extinsă de la intefața java.rmi.Remote.
import javax.ejb.EJBHome;
import javax.ejb.CreateException;
import javax.ejb.FinderException;
import java.rmi.RemoteException;
public interface CustomerHome
extends EJBHome {
public Customer create(Integer
customerNumber)
throws RemoteException,
CreateException;
public Customer findByPrimaryKey(Integer
customerNumber)
throws RemoteException,
FinderException;
public Enumeration findByZipCode(int zipCode)
throws RemoteException,
FinderException;
}
Metoda create() este folosită pentru crearea a noei entități. Aceasta va fi ca rezultat o noua înscriere în baza de date. Interfața gazda poate avea mai multe metode create(). Numarul și tipurile de date pentru fiecare create() ,este lasată pe sama bean programistului, dar tipul intors trebuie sa fie acelaș cu tipul intefeței remote. În acest caz invocarea create() în implematarea create() a CustomerHome interfețe o să întoarcă instanța a obiectului Customer. Metodele FindByPrimaryKey() și findByZipCode() sunt folosite pentru localizarea a instanței specifice pentru Customer Bean.
1.2.10 Mai mult despre interfețe Gazda și Îndepărtată.
Interfețele date sunt folosite de aplicații pentru acesarea enterprise beans ca runtime (in ciclul de lucru). Intefața gazda permite applicației crearea și localizarea a beanului, in timpul cela interfața remote permite aplicației de a aplica business metode bean. Un fragmet de cod ne ilustrează aceasta:
CustomerHome home =
// Primirea referinței la
// obiectul CustomerHome
Customer customer = home.create(new Integer(33));
Name name = new Name("Richard", "Wayne", "Monson-Haefel");
customer.setName(name);
Enumeration enumOfCustomers = home.findByZip(55410);
Customer customer2 = home.findByPrimaryKey(new Integer(33));
Name name2 = customer2.getName();
// Șirul de eșire este "Richard Wayne
//Monson-Haefel"
System.out.println(name2);
Intefața javax.ejb.EJBHome definește și alte metode pentru pe care CustomerBean poate automat sț le moștenească. De inclus și un set de remove() metode care permite aplicației sa distruga instanțierea bean.
1.2.11 Enterprise Beans ca obiecte Distribuite
Interfețele îndepărtate și gazdă sunt de tipuri Java RMI Remote. Interfața java.rmi.Remote este folosită de obiecte distribuite pentru reprezentarea beanului în diferite spații de adrese (procese sau mașine). Și un enterprise bean este un obiect distribuit. Aceasta înseamnă că clasa bean este instanțiată și exista în container dar poate fi accesată de aplicațiile care există în alt spațiu de adrese.
Pentru a face ca instanța unui obiect dintr-un spațiu de adrese să fie valabil in alt, se cere de facut un mic truc care este legat de socketuri din rețea. Pentru a face trucul dat lucrator, noi învelim instanțierea în un obiect special care este numit skeleton, care are o conectare prin rețea cu un alt special obiect care este numit stub. Stub implementeaza o interfață remote, în așa mod este foarte asemănător cu un business obiect. Dar un stub nu conține business-logic, el ține socket conecțiune prin rețea cu un skeleton. De fiecare data o business metoda este invocata in interfața remote de tip stub. Stub transmite message prin intemediul rețelei skeletonului in care îl anunța ce metoda a fost implementata. Când skeletonul primește mesajul de la stub el identifica metoda implementata și argumente, după aceasta implementează metoda corespunzatoare în instanța actuala. Ea execută business metodele și întoarce rezultatul ca skeleton care este transmis pentru stub. Diagrama de mai jos ilustraza aces process:
Fig.17 Interacțiunea între programul client și gazdă
Stubul intoarce rezultatul aplicației care a implemetnat aceasta intefața remote. Din prima vedere a aplicației care folosește stub el lucreaza local. Actual stub este un obiect de rețea tacut care numai transmite cererile prin intermediul rețelelei pentru un sceleton care intoarce metodele implementate de actuala instanța. Insanța singura lucreaza, stub și sckeleton numai transmit metode și argumetne incolo incoace prin rețea.
In EJB skeletonul pentru interfața remote și gazda este implementată de container nu de classa bean. Aceasta este foarte sigur deoarece orice metoda implementata în aceste tipuri de referințe a aplicației client sunt prelucrate de container și peurmă sunt transmise la instanța bean. Contanerul trebuie sa primeasca toate cererile și să le retransmita pentru bean in așa mod este aplicata persistența a tranzacției și controlul automatic.
Protocolul a obiectelor distribuite descrie un format a mesagelor de rețea transmise intre spațiul de adrese. Protocolul a obiectelor distribuite face foarte complicat, dar spre fericire utilizstorii (programatorii) nu vad toate acestea elemente deoarece ele sunt dirijate automat. Majoritatea servere EJB susțin amindoua Java Remote Method Protocol (JRMP) sau CORBA Internet Inter ORB Protocol (IIOP). Bean și programatorul a aplicației pot vedea numai classa bean și interfața remorte, detaliele a comunicației prin rețea sunt ascunse.
Programatorul nu trebuie sa aiba grija despre ce protocol este folosit EJB API singur folosește protocolul necesar (JRMP sau IIOP) sau poate utiliza amândoua protocoale in tot același timp. Specificația EJB cere ca noi sa folosim o verisiune a Java RMI API specificata, cînd lucram cu Java beans prin rețea. In așa mod EJB server poate suporta JRMP sau IIOP dar bean și in aplicații intodeauna se folosește tot același Java RMI API. In special pentru serverul EJB care trebuie sa susțina RMI și IIOP au fost elaborate veriuni a protocolului RMI-IIOP. Java RMI – IIOP foloseste IIOP ca protocol și Java RMI ca API. EJB servere nu folosesc IIOP dar ei respecta Java RMI-IIOP restricții in așa mod EJB 1.1 foloseste speciale convenții și tipuri dar protocolul de baza poate fi oarecare.
=== RAMA1A ===
Descrierea problemei
Programarea unui soft care ne va permite rezolvarea problemei comis voiajorului cu ajutorul algoritmilor genetici. Eu am ales anume problema dată de oarece pentru toate celelalte probleme a fost stabilit un șablon care este mult mai ușor de implementat și de programat. Deci pentru soluționarea problemei date este necesar de avut cunoștințe generale care sunt aplicabile pentru toate tipuri de probleme genetice plus este nevoe de avut ceva cunoștințe adăugătoare. Plus la aceasta tipul de probleme date este pe larg folosit în telecomunicații, pentru găsirea a soluției a căii cele mai scurte prin metode rapide între puncte de rutare a datelor. Plus la aceasta acest tip de probleme este foarte răspândit în domeniul a managementului economic.
Deci softul realizat trebue să ofere următoare facilități:
Să fie ușor accesibil pentru clienți și pentru alte programe. Aceasta înseamna că trebue să ofere funcții comune și ușor accesibile pentru mai multe interfețe de interacțiune. Interfețele de interacțiune pot fi următoare:
Aplicație simplă, cănd utilizatorul singur introduce datele sau atașează un fișier cu un standart anumit.
Aplicație- server și oferă posibilitate de interacționa pentru mai mulți utilizatori prin intermediul interfețe de client programabilă, din rețea.
Aplicație – server care ne oferă mai multe funcții accesibile care pot fi accesate de alte programe, pentru automatizarea comunicării dintre diferite nivele de programe și transmiterii datelor sau a rezultatelor, poate fi folosit și în rețea.
Aplicație – server care poate fi folosită pentru accesarea datelor prin intremediul Internetului adică să ofere interfața utilizator pentru browsere WEB.
Ar fi bine ca aplicația să ofere pentru utilizatori funcțiile care configurează lucrul algoritmului genetic.
Rezultatul trimis utilizatorilor să fie în standarte comode pentru vizualizarea utilizatorilor.
Soluționarea
Aplicarea a algoritmului genetic
Problema comis voiajorului (Traveling Salesman Problem TSP) are ca scop parcurgerea a N orașe fără a trece tot acela oraș de mai multe ori și a găsi distanța cea mai scurtă între orașele date. Calea pe care o alege voiajorul este numit tur.
Dacă să testăm fiecare posibilitate pentru N orașe noi vom primi N! modalități de parcurgere. Pentru 30 de orașe vom primi 2.65x 10 la puterea 32 de variante. Dacă sa verificăm 1 miliard de posibilități pe secundă atunci noi o să avem nevoe de mai mult de 8.000.000.000.000.000 de ani. Adăugăng un oraș atuncci numărul de orașe necesare de parcurs va crește cu un factor de 31. Este clar că este o soluție imposibil de rezolvat.
Noi vom folosi algoritmul genetic pentru a soluțioa problema dată in un timp mult mai scurt decât este propus. Probabil soluția data nu va fi cea mai bună dar poate să fie una din cele mai bune și poate fi calculată în un timp mai scurt de o 1 minută. Vor fi doua etape de baza cu implicația a algoritmilor genetici. Prima este crearea un grup de mai multe tururi aleatoare care vor fi o populație. Viecare tur va fi o cromosomă. A două etapă este de a selcta cei mai buni părinți în populație și a le combina folosind încrucișare (crossover). pentru a crea o soluție nouă copil cu o care-va speranță ca el va fi o soluție mai bună. Încrucișarea se efectuîază în felul următor, se alege un locus aleator în șirul părintesc și după care se efectuiază schimbarea volorii pentru fiecare genă. Cema bună soluție se va reproduce din cea mai bună soluție trecută și toate soluțiile rele sunt șterse. Cel mai probabil GA tind spre acea ca fiecare soluție să arate identic. Acesta nu este un caz ideal. Și sunt două posibilități de a prelucra aceste situați. Prima de a folosi o populație foarte mare care ne va permite soluționarea problemei date. Prima este de a iniațializa o foarte mare populație inițială, ce ne va da posibilitae de mari numarul de populații generate și va genera o solușie cea mai bună. A doua este posibilitate este mutație. Mutația în mod aleator schimbă o soluție. Câte odată mutația ne va permite să găsim cea mai bună soluție pe care încrucișarea nu poate so găseaască.
Problema care este nevoe de soluționat pentru un algoritm genetic care rezolvă TSP folosind un algortm genetic este codificarea soluției și efectuarea operațiunei de încrucișare. În literatură de domeniu am întîlnint o următoare modalitate de soluționare. O genă este reprezentată prin un set de biți numărul de gene în o cromosomă este egal cu numărul de biți în o geană. Aceasta va fi rerezentarea a unei matrice de adeacență dacă bitul va fi setat atunci aceste două orașe vor fi conectate. Deci fiecare tur va fi reprezentat prin o matrice de adiacență[N,N] și dacă elementul [X,Y] va fi setat atunci se va orașele X și Y se vor fi conectate Incrucișarea se va efectua ăn modul următor. Se ia fiecare gena a cromosomului părinte și se efectuiază operația AND dacă în cazul dacă se va produce un conflict (un oraș setat de două ori atunci sau nu ajunge conecțiunenea la un oraș atunci se generază o soluție aleatoare.
Deoarece algoritmul este foarte complex operația de mutație nu se va efectua.
Dar poate fi dedusă o altă metodă mai simplă: Fiecare oraș care participă la calcule se numerotează. Se generează mai multe rute aleatoare în următoare modalitate: pentru fiecare poziție a individului se generează un număr aleator în intervalul de la primul oraș și ultimul. Trebue să ducem evidența orașelor generate ca să nu se repete tot același punct de mai multe ori. Deci avem un cromosom in care fiecare genă păstrează informația despre numărul orașului din listă. De exemplu o listă generată din șapte orașe : 4 7 2 6 5 1 3
Deci un individ va conține informația despre ruta posibilă din domenul posibil de soluții. Reprezentarea dată este mai simplă pentru înțelegere dar generează dificulțăți adăugătoare la generarea cromosomilor. Încrucișarea se va efectua în felul următor: la doi cei mai buni cromosomi se compară două gene și dacă ele sunt egale ele se păstrează, dacă ele nu sunt egale se generează o genă noua aleatoare în așa mod se va genera un cromosom fiu. Noi numaidecăt trebue să ducem evidența a punctelor de orașe care deja există în individ, c-a să evităm parcurgerea de mai multe ori a tot aceluiași oraș și tot odată genele unui cromosom trebue să cuprindă toate orașe care este necesar de parcurs. Mutația putem efectua fără a schimba valoarea nu schimba valoarea a unei gene ci scimbând aleator cu locurile pozițiile a două genele în un cromosom. Cu informația care ei o țin în dânsa.
Am întrodus o inovație în lucrul algoritmului genetic in operația de selectare combinând metoda de selecție bazată pe truchiere cu metoda Universală stohastică de selecție: Inovația este următoare din un șir de cromosomi mai întăi se selectează cei mai buni cromosomi (5%-30%) După aceasta asupra cromosomilor rămași se efectuiază selecția Universală Stohastică ( 7%-20%). În locul selecției date putem să folosim selecția bazată pe rang (Ranking selecțion).
Selecția bazată pe trunchiere foarte bine optimizează populația spre o soluție mult mai bună dar crește probabilitataea de a găsi numai soluțile locale, ce este ca rezultat a prematurității a populației și a pierderii foarte mari a diversității a populației. Ceea ce am demonstrat și în mod practic. De aceea, adăugător, asupra cromosomilor rămași se aplică o metodă de selecție care ne oferă o diversitate a populației mult mai mare. De aceea noi putem folosi careva din metode care ne dau posibilitatea de alegere din tot spațiu al problemei.
Fig.18 Operațiile de bază a algoritmului.
Să calculăm numărul de cromosomi necesari de generat pentru convergența a populației:
Deci probabilitatea apariției unei scheme de rang minim, care conține numai o conecțiune între două orașe din ruta finală este:
P = (Pij * Pk,h) /n unde:
k != i și h = j+1 sau j-1
Pij – probabilitatea că orașul i se va afla pe poziția j
n – numărul de orașe
Pij = n2 și Pkh = (n-1)2
În rezultat primim o următoare formulă probabilitatea ca în mulțimea inițială de indivizi se va afla măcar un cromosom care conține numai o interacțiune dintre două orașe care participă în cea mai bună:
P = n * (n-1)2
Și numărul de indivizi necesar pentru populația inițială = 1 / P;
Deoarece soluția cea mai bună o să aibă repartiția Gauss în spațiul populației de acea noi vom efectua selecția în următoare proporții:
Selecția prin trunchiere: 10%-20% din populație.
Selecția universală stohastică: 50-70% din populație.
Tot în modalitatea de mai sus este calculată probabilitatea apariției a noilor conecțiuni între orașe care participă în cea mai bună rută, în rezultatul operației de încrucișare și mutație.
O operație foarte necesară care tot participă la procesul de evoluție și foarte importantă pentru creșterea evoluționistă a populației este migrația.
Sunt posibile trei tipuri de migrație. Migrația pe cerc, migrația a vecinilor și migrația toți la toți ceea ce este arătat în figura 19. Fiecare populație are unumar anumit de subpopulații și are un model concret de migrație. Migrațiile se efectuiază după un număr anumit de generații. În modelul meu este prezentă încă o inovație parțiala. Este format un block principal care stă pe deasupra la toate celelalte populații și efectuiaza schimbul cu cei mai buni cromosomi între populații principale. În literatura străină acest bloc este numit „farmer” ceea ce înseamnă fermer, persoana care cultivă. Blocul meu eu lam numit „creeer” de oarece eu am întrodus elemente de intelegență artificială în el: selectează pe cei mai buni indivizi din fiecare populație și efectuiază operația de optimizare locală a soluției.
Deci schema de generații-migrației va fi următoare:
Se efectuiază cel puțin 3 generații în sub-populații.
Se efectuiază o migrație locală.
Se produc operațiile 1) 2) de mai sus de cel puțin 3 ori.
Se efectuiază operțiunea de migrație spre „creer”
„Creer”-ul efectuiază operația de optimimizare
Se efectuiază raspândirea a cei mai buni indivizi în populații.
Operațiileele de mai sus(1, 2, 3, 4, 5, 6) se repetă până când nu se va găsi soluția optimală.
Mai jos este prezentată schema de migrații posibile:
Fig.19 Scheme de migrații posibile
Algoritmul dedus
Mai jos vă prezentăm block schema a algoritmului:
Fig.19 Block – schema a algoritmului
Din partea stângă este denumirea blocului ear din partea dreaptă este descrisă funcționarea blocului dat.
Tab.7
Descrierea componentelor a algoritmului
Continuare Tab.7
Modernizările efectuate mai sus ne dau posibilitate de a programa o aplicație mult mai efecientă, cu o viteză mult mai înnaltă. Mai jos noi vom analiza pașii efectuați pentru a programarea algoritmului dat propriu zisă.
Soluția soft
Să presupunem că de derviciul de prelucrare a informației cu ajutorul algoritmului genenetic trebue să se folosească mai mulți utilizatori, deci noi avem nevoie de dezvoltat o aplicație de multi-nivel pentru a viziona și a prelucra niște tabele în o bază de date, prin intermediul a unei interfețe WEB. Noi putem să scriem o aplicație pentru baze de date folosind JDBC, o intefață WEB folosind JSP/Servlet, și o interfață distribuită folosind CORBA/RMI. Dar încă ce considerații adăugătoare noi trebuie să avem în vedere, când programăm sisteme distribuite mai mult de cât să cunoaștem API?. Mai jos prezentăm ceva considerații adăugătoare:
Performanța: Obiectele distribuite trebuie să aibă o performanță foarte înaltă, cum și să aibă posibilitatea să deservească mai mulți clienți în un singur timp. Noi vom avea nevoie de așa tehnici de optimizare ca caching-ul pooling-ul resurselor asemănătoare cu connecțiuni la baze de date. Noi avem nevoie de efectuat menengementul a perioadei de viață a obiectelor distribuite.
Scalabilitatea: Obiectele distribuite trebuie să fie scalabile. Scalabilitatea în o aplicație distribuită înseamnă că un număr concret de instanțe a obiectelor distribuite poate fi mărit și mutat pe o mașină de calcul adăugătoare fără a efectua schimbări în codul sursă.
Securitatea: Obiectele distribuite deseori pot să ofere managementul autorizării a clienților care accesează aplicația dată. În mod ideal noi trebuie să adăugăm utilizatori moi fără a introduce schimbări care-va în codul sursă.
Tranzacțiile distribuite: Obiectele distribuite trebuie să poată să se efectueze tranzacții distribuite foarte ușor și clar. De exemplu dacă noi lucrăm cu două baze de date în paralel noi trebuie să putem să le prelucrăm pe ambele simultan cu aceiași tranzacție și să le întoarcem înapoi dacă careva criterii nu ne satisfac.
Folosirea multiplă: Un obiect distribuit ideal poate fără nici un effort adăugător mutat pe un alt server de aplicații a unui alt producător fără a efectua care-vă schimbări adăugătoare. Este foarte atrăgător pentru noi posibilitatea de a vinde obiecte distribuite fără a efectua care-va schimbări în ele, sau de cumpărat obiecte noi și de folosit pe ele fără a efectua care-va schimbări în codul sursă sau o recompilare adițională.
Avalabilitatea: Dacă una din mașini din sistem sa defectat clientul trebuie să fie mutat cu fișiere de rezervă-copii pe mașina care rulează.
Aceste considerații trebuiesc luate în vedere în adăugarea a problemei business (programarea propriu zisă a algoritmului gnenetic și interfețelor pentru utilizatori) pe care noi trebuie so rezolvăm și fac ca timpul de programare să devină foarte mare.
Aceste considerații trebuiesc luate în vedere în adăugarea a problemei business pe care noi trebuie so rezolvăm și fac ca timpul de programare să devină foarte mare. În orice caz toate punctele enumerate mai sus în excepția a problemelor business pe care noi trebuie să le rezolvăm sunt redundante și nu trebuiesc din nou inventate pentru fiecare aplicație distribuită.
SUN pe lângă a altor distribuitori de aplicații distribuite au realizat idea că fiecare proces de dezvoltare trebuie să creeze module referitoare la problema sa particulară. În așa mod a fost creată specificația Enterprise Java Beans (EJB). EJB descrie modelul server de componente care ea în seamă toate considerațiile enumerate mai sus folosind o metodă standard care permite programatorilor să creeze componente business care sunt denumite EJB care sunt izolate de la nivelul cel mai de jos și este focusat numai asupra problemei de logistică business. Deoarece EJB este definit în o cale standard el poate fi spus că este independent de distribuitori. Și grupul de programare are numai o însarchinare: șă programeze cât mai eficient blocul business (algoritmul genetic).
Nivelele a aplicației
Cum am arătat mai sus pentru un lucru mai eficient a aplicției nostre noi avem nevoie de mai multe nivele de programare. Mai jos o să prezint structura și orinduirea nivelelor programate.
Primul nivel (cel mai de jos) prezintă classele, modulele programabile care realizează propriu zis algoritmul genetic.
Al doilea nivel prezintă clase-învelișuri EJB care adapteaază clasele mai sus enumerate pentru lucrul cu serverele EJB. Descrie funcțiile care pot fi accesate din servere, web-servere, interfețe utilizator îndepărtate.
Al treelea nivel prezină interfața de prezentare care este direc accesibilă de utilizator. Prin intermediul interfeței date utilizatorii interacționează direct cu algoritmul dat. Aceste intefețe pot fi paginile JSP, servletulri, aplicații programabile în formă de programă server.
Deoarece noi avem mai multe nivele care pot fi realizate prim mai multe modalități de programare și pot fi programate în mod autonom, este necesar de specificat metodele, modul de comunicare între aceste diferite nivele.
Între primul nivel și nivelul doi comulnicarea se va efectua prin intermediul a Obiectelor definite în limbajul JAVA, și variabilelor primitive. Al doilea nivel va comunica cu nivelul trei prin intermediul transferului de fișiere xml, sau txt, sau variabilelor primitive, în direcția spre aplicație și în direcția spre utilizatori prin intermediul a fișierilor cu extensii: txt, sau xml, sau pdf, sau html, sau a datelor primitive și a obiectelor java. În Fig. Este prezentată schema de interacțiune pe nivele
Fig.20 Structura de interacțiune între nivelele programului
3.5 Structura fișierului cu date si fișierului răspuns
Cum a mai fost scris mai sus formatul fișierelor cu date care necesită a fi prelucrate sunt txt și xml. În fișierul de date noi trebue să specificăm configirația principală de date a algoritmului necesită a fi minimizată problema sau maximizată, trebue de întors în punct inițial sau nu este nevoie și să putem specifica distanța de la un oraș la altul deci formatul fisieruli txt este următor:
Minimize= (boolean)
StartIsFinal=(boolean)
X11 X 12. . .X1i . . . X1n
X21 X22 . . .X2i . . . X2n
. . . . . . . . . . . . . . . . . .
Xn1 Xn2 . . .Xji . . . Xnn
Unde Minimize este true dacă funcția necesită a fi minimizată și false în caz contrar. StartIsFinal este true în cazul dacă punctul inițial este tot odată și punct final și false în caz contrar. Xji – este valoarea distanței de drum de la orașul j spre orașul i.
Mai jos este prezentat standardul unui fișier de tip xml alegerea standardului dat este bazată pe faptul acest standard este foarte răspândit pentru schimbarea datelor automată între baze de date:
<?xml version="1.0" ?>
<doc>
<data>
<aditional_data>
<minimize>boolean</minimize>
<start_is_finish>boolean</start_is_finish>
<number_of_sity>int</number_of_sity>
</aditional_data>
<function>
<rute>
<sity>float</sity>
<sity>float</sity>
. . . . . . . . . . .
</rute>
<rute> <sity>float</sity>
<sity>float</sity>
. . . . . . . . . .
</rute>
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
</function>
</data>
</doc>
Fișierul prezentat mai sus nu necesită descriere de oarece denumirile tegurilor ne specifică toate denumirile a tegurilor.
Fișierere de tipul Răspuns prevăd inhibarea în sine a informației necesare de prelucrat cum și soluțiile generate de algoritm. Mai jos prezentăm fișierul xml care ne trimite înnapoi răspunsul:
<?xml version="1.0"?>
<doc>
<data> <!- – datele trimise pentru prelucrare –>
</data>
<rezult>
<number_of_rutes></number_of_rutes>
<coments></coments>
<rutes>
<rute><value></value>
<sity></sity>
<sity></sity>
<sity></sity>
</rute>
<rute><value></value>
<sity></sity>
<sity></sity>
<sity></sity>
</rute>
</rutes>
</rezult>
</doc>
Rezultatul primit în standartul xml poate fi transformat cu ajutorul XSLT transformarilor î alte tipuri de fișiere de exemplu HTML sau fișiere .fo care după aceasta pot fi transformate în fișiere .pdf.
3.6 Diagrama de interacțiune a claselor
În anexa numarul este prezentată diagrama de interacțiune detaliată a claselor care participă la generarea algoritmului genetic. Tot în anexă este desfășurată ierarhia structurilor de date și scheme de migrație între ele în timpul rulării algoritmului. Sunt arătați parametri care configurează marimea a obiectelor numărul de variabile primitive.
Interacțiunea cu clientul prin nivele exterioare.
După programarea a algoripmului propriu zisă merge etapa de transformare în componentele EJB.
Ce facilități noi putem avea efectuănd operațiunea data? Fiecare componetă soft care efectuiază o operațiune concretă de exemplu classa Mutation sau clasa CrossoverTSP va fi transformată în componenta EJB de tipul session ceea ce ne va permite cășarea ei, sau altfel spus componenta va fi păstrată pentru folosire și pentru alți utilizatori. Apare posibilitatea de a lucra ăn paralel cu tot acceeași componentă numai odată încărcată în memorie
Componentele date instalate pe un server de aplicații care susține specificarea J2EE ne dau posibilitatea de a interacțiune cu clienți îndepărtați. Nare importanță ei interacționează prin intermediul a WEB browserului sau accesează funcțiile direct. Mai jos este prezentată o posibilă interacțiune între client și program care accesează aplicația prin intermediul brouserului.
În figura de mai jos este prezentat interacțiunea între diferite nivele de aplicații. În cazul noi putem să acționam prin mai multe modalități. Una din ele este instalarea interfeței de client pe WEB serverser. Prin intermediul WEB browserului se încarcă pagina care ne propune mai mute posibilități de a trimite date către algoritmul genetic. Prima și cea mai incomodă este de a îndepleni tablelul în pagina care va fi descisă. O altă opțiune este trimiterea fișierului atașat cu date care era deja complectat.
Fig.21 Accesarea applicației prin intermediul browserului.
=== RAMA2 ===
Partea economică a proiectului.
4.1 Introducere
Pe piața a componentelor de software este prognozată o creștere aproximativ de 4,4 miliarde USD pentru anul 2002 din care 1.0 miliarde USD de la vânzâri a produselor software (componentelor) și 3.4 miliarde de la serviciile oferite (arendarea, consultări).(Sursa: „PricewaterhouseCooper”).
Tradițonal, aplicațiile server, care de obicei sunt proectate folosind sisteme monitorizate de procesare a tranzacțiilor, care ingreuna de a scri un soft portabiil de o classa enterprise. Acum, cu ajutorul a Enterprise JavaBeabs Component, partea server poate fi creată ca o colecție de componente soft numite enterprise beans. Aceste aplicații care sunt bazate pe EJB componente pot fi elaborate și rulate pe oricare server de aplicații ca Sun-Netscape Alliance iPlanet, IBM WebSphere, BEA WebLogic or IONA iPortal Application Server. Crește numărul de programiști, care sunt preocupați de proiectarea a softului bazat pe componente, ce îi ajută să reducă timpul de aflare a lor pe piață, și îmbunătățește calitatea softului.
Dece procurarea a componetelor soft este o idee bună ? Oricine incluzind și programatoru de soft admit că ei infăptuesc ceva, scrie un program sau subrutină și în primul caz mai bine de cât în al doelea. Aceasta este esența a „componentelor” construirea și în continuu înbunătățirea sau incapsularea a noilor capacități de business logistică. Prin procurarea a acestui component programatorul poată să funcționalitatea păstrând calitatea. Și calitatea trebue numaidecât să se mărească deoarece componenta o să treacă prin intermediul a unui set de modificări primind răspunsuri de la utilizatori. Ca un alt caz, când noi rezolvăm o problema sofisticată este posibilă procurarea parțială a careva componente. Și programarea proprie a componentelor în care noi suntem încrezuți. Tot tehnologia J2EE ne oferă o posiblilitate nouă de comercializare softului arenda, sau ofeririea îndepartată pe o perioadă de timp a accesării la funcții necesare pentru utilizator pentru o anumită plată. După analiză a statisticii folosirea tehnologiei J2EE micsorează timpul necesar pentru programarea a unei aplicații de două pânâ la patru ori.
După o analiză mai aprofundată a pieții de soft din domeniul intelegenței artificiale am constatat ca softul existent este foarte sofisticat pentru înțelegerea și folosirea de către utilizator de aceea hotărârea mea de a programa o aplicație din domeniul Algoritmilor Genetici plus la aceasta programarea unei funcții inteligente care îl va ajuta pe utilizator să configureze algoritmul dat. Deci eu am găsit un segment pe piață de soft până cănd slab dezvoltat și care are o perspectivă ăn viitor. Realizănd scopul principal al domeniului de IT: ușurează lucrul și viața a unui simplu utilizator. Eu mam străduit cât e de posibil să simplific interacțiunea între utilizator și programist dar și păstrând maximal posibil putereea de calcul a algoritmilor genetici.
4.2 Planificarea rețea
Proiectele tehnologice contemporane sunt caracterizate de următoarele particularități:
tehnica nouă utilizată este foarte complexă și este construită utilizând ultimele elaborări științifice.
accelerării vitezei de elaborare a proiectelor.
proiectele referitoare la complexele tehnicii de calcul și softului sunt supuse uzurii morale foarte rapide.
necesitatea proiectării de sistemă la elaborarea softului și sistemelor tehnice.
Toate acestea au dus la necesitatea de creare a noi metode de planificare. Una din aceste metode prezintă modelarea procesului de elaborare, adică prezentarea legăturilor și caracteristicilor lucrărilor în procesul elaborării proiectului.
Metodele tradiționale de planificare presupun utilizarea celor mai simple modele de tipul construirea diagramelor de tip consecutive și ciclice.
Dar în asemenea diagrame nu este posibil de a prezenta legăturile dintre niște lucrări, de unde rezultă imposibilitatea de a afla cât de importantă este lucrarea dată pentru executarea scopului final. Pot apărea diferite întârzieri în timp, ce apar pe porțiuni de interconectare a lucrărilor, care sunt complicat de prezentat în diagrame. De obicei, în procesul dirijării se culege informația despre lucrările efectuate și aproape nu se culege și nu se prezintă informația referitor la prognoza finisării lucrărilor viitoare, de aceia este imposibil de a prognoza rezultatele diferitor variante de soluționare la modificările planului inițial de lucru. Este de asemenea complicat de a reflectași dinamica lucrărilor, de a corecta toată diagrama în legătură cu schimbarea termenilor de efectuare a unei lucrări, ce este necesar de a efectua ca să nu schimbăm termenul de efectuare a întregului complex de lucrări.
Aceasta este doar o parte mică din neajunsurile metodelor utilizate în prezent pentru planificare și prezentarea grafică a planurilor de pregătire a producerii. Aceste neajunsuri în mare pare sunt excluse de către sistemele de planificare și dirijare în rețea utilizate în prezent.
Sistemele de planificare și gestiune în rețea prezintă un complex de metode grafice și de calcul, metode de control și de organizare, care asigură modelarea, analiza și reconstruirea dinamică a planului de executare a proiectelor complexe.
Sistemele de planificare și gestiune în rețea este o metodă cibernetică creată pentru gestiunea cu sisteme dinamice complexe cu scopul asigurării condiției de optim pentru careva indicatori. Așa indicatori, în dependență de condițiile concrete, pot fi:
timpul minim pentru elaborarea întregului complex de lucrări;
costul minim al elaborării proiectului;
economia maximală a resurselor;
Particularitățile sistemului de planificare și gestiune în rețea în general sunt următoarele:
se realizează metoda proiectării de sistem la rezolvarea problemelor de organizare a gestiunii proceselor.
se utilizează modelul informațional-dinamic special (graful-rețea) pentru descrierea matematico-logică a procesului și calculul automat (conforma algoritmului) a parametrilor acestui proces (durata, costul, forțele de muncă, etc.)
se utilizează sisteme de calcul pentru prelucrarea datelor operative pentru calcului indicatorilor și primirea rapoartelor analitice și statistice necesare.
Documentul de bază în sistemul de planificare și gestiune în rețea este graful-rețea (modelul rețea), care prezintă modelul informațional-dinamic, în care sunt prezentate legăturile și rezultatele tuturor lucrărilor, necesare pentru atingerea scopului final.
Tab.8
Descrierea a evenimentelor din graf
Continuare Tab.8
Continuare Tab.8
Continuare Tab.8
Continuare Tab.8
Fig.21 Elaborarea grafului rețea.
Tab.9
Durata efectuării lucrărilor.
Continuare Tab.9
4.3 Calculul profitului, coieficientului de recuperare a investițiilor.
Graful format mai sus este o variantă ideala de executare a unui proiect și va fi util pentru prezentarea ca un plan de lucru pentru lucrul în colectiv. Deoarece toate lucrările au fost efectuate de un singur programator toate zilele trebuiesc sumate conform tabelei și vom primi rezultatul real sau timpul real cheltuit pentru realizarea în viață a proiectului dat.
Nzile = 1 + 10 + 2 + 3 + 2 + 3 + 3 + 3 + 2 + 5 + 5 + 5 + 4 + 3 + 3 + 5 + 3 + 2 + 3 + 2 + 5 + 1 + 3 + 1 + 3 + 1 + 1 + 4 + 3 = 91 zile
Lucrările cu codurile : 2-3 2-10 3-9 9-11 10-21 11-21 23-24 pot fi efectuate în paralel deoarece majoritatea duratei de timp cheltuite pentru etapele date sunt pentru asteptare sau dublarea lucrarilor. Noi putem să scadem zilele date (21 zile) din suma totala de zile primim durata de elaborare a proiectului egală cu 70 zile.
Nzile = 70zile
Deci proiectul a fost realizat în 70 de zile. Mai jos prezintăm calculele cheltuielilor pentru a calcula costul productului.
Deoarece lucrul cu calculatorul se începe de la etapa 2 noi avem nevoe de calculator numai 59 zile ce constitue 2 luni deci arenda încăperii durează tot 2 luni:
Cheltuieli pentru de priectare și elaborare a softului
Tab.10
Repartizarea a cheltuielilor
Continuare Tab.11
Prețul de vânzare a produsului (Componentele ejb Client Server WEB) 149 USD fără dreptul de revânzare și arendă a componentelor.
Arenda componentelor (Clientul își încarcă interfața utilizator sau sau prin intermediul WEB Brouserului sau accesează funcțiile a algoritmului îndepărtat) 29 USD pentru 10 zile.
După analiza a pieței și studiul de marcheting efectuat noi putem să prognozăm următoare vânzâri a produsului.
Prima luna 3 cienți la arendă.
Următoarele luni 2- 3 vânzări pe luna și 5-6 arendași de soft în sumă primim:
Venitul anual pentru vînzarea productului:
Vv = 2,5 * 11 * 149 = 4097,5 USD
Venitul anual pentru arenda a produsului:
Va = 29 * (3 + 11 * 5,5) = 1841,5 USD
Venitul total:
V = Va +Vv = 5939 USD
Taxa pe valoare adăugată:
TVAv = 29,8 * 2,5 * 11 = 819.5 USD
TVAa = 5,8 * (3 + 11 * 5,5) = 368.3 USD
TVA = 1187.8 USD
Summa de cheltuieli este de:
1670 USD + 1442 USD = 3112 USD
Profit anual:
Pa = 5939 – 3112 – 1187.8 = 1639.2 USD
Deci putem să calculăm coeficientul de recuperare a investițiilor capitale:
Kr = Profit anual / Cheltuieli capitale = 1639.2 / 1670 = 0,9815
Valoarea numerică a coeficientului este destul de înalta ceea ce ne arată de o planificare financiară corectă a proiectului.
5 Protecția muncii și sanitarie de producere.
5.1 Noțiuni generale
Proiectul de diplomă prezintă elaborarea unui set de programe pentru culegerea și prelucrarea informației. Rezultă problema protecției muncii atât a persoanelor care elaborează programele, cât și a utilizatorilor ei. Lucrările în sistemul menționat vor fi efectuate utilizând calculatoare personale, adică prezintă lucrul programatorilor și a operatorilor tehnicii de calcul, e necesar de a precauta cerințele pentru protecția muncii la lucrul cu tehnica de calcul, în special a calculatoarelor personale cu diferite sisteme periferice, utilizate de către personalul centrului de calcul (CC) în procesul activității vitale. Evident, integrarea și utilizarea pe larg a calculatoarelor electronice pe lângă factorii pozitivi mai are și nuanțe negative asupra persoanelor care le exploatează.
Lucrul operatorilor tehnicii de calcul necesită o atenție mare, posibilitatea de a rezolva în timp limitat probleme complexe, responsabilitatea față de acțiunile întreprinse ce duce la o tensionare emoțională și stres.
Operatorii tehnicii de calcul, programatorii, și alți colaboratori ai CC sunt supuși unor factori nocivi și periculoși cum ar fi:
nivelul ridicat de zgomot;
insuficiența iluminatului natural;
insuficiența iluminatului locurilor de muncă;
temperatura ridicată a mediului ambiant;
diferite forme de iradieri, etc.
Acțiunea factorilor indicați duce la micșorarea capacității de muncă, ca rezultat al obosirii. Apariția și dezvoltarea obosirii este legată de schimbările, ce apar în procesul muncii în sistemul nervos central, cu procese de încetinire în creier. De exemplu, zgomotul mare conduce la dificultăți în perceperea semnalelor colore, micșorează viteza de percepție a culorilor, adaptarea vizuală, micșorează capacitatea de a acționa rapid și efectiv, micșorează cu 5-12% capacitatea de muncă și duce la deteriorarea auzului.
Aflarea îndelungată a persoanei într-un mediu în care acționează mai mulți factori nocivi poate duce la o îmbolnăvire profesională.
Pentru crearea condițiilor de lucru prielnice e necesar de a lua în considerare particularitățile psiho-fiziologice ale oamenilor, plus starea igienică generală. Un rol important îl are amplasarea postului de lucru, economia energiei electrice și timpului operatorului, utilizarea rațională a suprafețelor utilizate, comodității utilizării tehnicii de calcul, respectarea regulilor de protecție a muncii.
5.2 Zgomotul
Zgomotul este unul din factori care influențează omul când el lucrează cu CE, aceasta este condiționat de funcționarea dispozitivelor ce sunt necesare în CC.
Sursele principale de zgomot în încăperi amenajate cu tehnica de calcul sunt imprimantele, tastatura, instalații pentru condiționarea aerului, dar în CE – ventilatoarele sistemelor de refrigerare și transformatoare.
La influența zgomotului pe un timp îndelungat la colaboratorii CC se observă micșorarea atenției, dureri de cap, se micșorează capacitatea de muncă. În documente de însoțire a utilajului ce produc zgomot se aduc normele timpului de lucru la acest utilaj.
În conformitate cu GOST 12.1.003-91 “Zgomot. Cerințele generale de protecție” caracteristica de normă a zgomotului locurilor de muncă sunt nivelurile presiunii de sonor (zgomot). Nivelurile accesibile a zgomotului, lucrând cu CE, sunt prezentate în tabelul 1:
Tab.12
Nivelurile admisibile a zgomotului.
Pentru micșorarea zgomotului la locurile de muncă se efectuează următoarele acțiuni:
Arhitectural-planificative. Clădirile se proiectează și se construiesc în așa mod ca la locurile de muncă să nu fie depășit nivelului admisibil. Întrucât sistemul va fi utilizat la CC existent aici se poate de obținut micșorarea zgomotului amplasând în încăperi vecine utilajului cu zgomot ridicat.
Tehnico-organizatorice. Pentru micșorarea zgomotului la CC se efectuează reparația și ungerea utilajului (imprimantelor). Se poate de aranjat utilajul în așa fel ca el să facă mai puțin zgomot.
Acustice. În CC se instalează podele tehnologice și poduri fixate în balamale. Distanța între podul de bază și podul fixat în balamale 0,5-0,8 m, iar înălțimea podelei tehnologice 0,2-0,6 m.
5.3 Securitatea electrică
Utilajul CE este foarte periculos pentru operatori, deoarece lucrând la acest utilaj operatorul poate să atingă unele părți care sunt sub tensiune. Trecând prin om curentul electric efectuează influența optică, biologică termică, ce poate aduce la traumă electrică (GOST 12.1.009-91).
O importanță mare pentru emiterea cazurilor neplăcute și periculoase are organizarea corectă a exploatării utilajului electric, efectuarea lucrărilor de montare și profilactică.
Legarea la nul este o măsură de protejare de electrocutare prin deconectarea strictă și în viteză a rețelei în caz de apariție a tensiunii pe carcasă sau în cazul străpungerea izolării. Deconectarea strictă se efectuează, dacă curentul de scurt circuit format prin faza și firul nul este destul de mare ca declanșatorul să lucreze corect.
Scopul calculării este determinarea secțiunii firului nul, care satisface condiția funcționării protecției maximale de curent. Valoarea protecției se determină după puterea instalației electrice proiectate.
Curentul de scurtcircuit trebuie să fie mai mare de trei ori decât curentul nominal a siguranței Is.c. ≥ 3In
5.4 Microclimatul
Deoarece CE sunt surse de eliminare a căldurii, ce poate ajunge la mărirea temperaturii și micșorarea umidității aerului. În încăperi se atrage atenție la controlul parametrilor microclimatului în Săli de Calcul (SC). În SC mărimea medie a eliminărilor de căldură constituie 310 W/m2. Eliminările de căldură de la instalații de iluminare tot sunt mari, mărimea specifică a lor este 35-60 W/m2. În afară de aceasta la microclimatul încăperi încă influențează surse exterioare de eliminare a căldurii, cum sunt căldura de la radiația solară ce intră prin fereastră, și afluența căldurii prin construcții de barieră ce nu sunt transparente.
Asupra corpului omului și lucrului utilajului a CC influențează foarte mult umiditatea aerului relativă. La umiditatea aerului egală cu 40% lenta magnetică devine mai fragilă, se mărește uzura capilor magnetice și apare câmpul magnetic static la mișcarea purtătorilor de informației în CE.
La efectuarea controlului locurilor de muncă se măsoară temperatura, umiditatea relativă și viteza de mișcare a aerului în încăperi, totodată se efectuează măsurări la începutul, mijlocul și sfârșitul perioadelor calde și rece a anului.
Se măsoară temperatura și umiditatea aerului cu psihometre aspiratoare, iar viteza de mișcarea a aerului – cu electro-anemometre, catatermometre. Ordinea de măsurare a indicilor microclimatului se stabilește în conformitate cu GOST 12.1.005-91. Parametrii se normează după acest GOST și sunt prezentați în tabelul 2.
Tab.13
Normele microclimatului.
În acest tabel se aduc parametrii pentru categoriile de lucru 1a (mai puțin de 120 kkal/oră, lucrul șezând) și 1b (de la 120 până la 150 kkal/oră, lucrul șezând), deoarece lucrul programatorului sau operatorului se poate atribui la una din aceste categorii.
Pentru crearea la locuri de muncă a condițiilor meteorologice bune se efectuează condiționarea și ventilarea aerului, utilizarea ventilatoarelor înăuntru CE pentru a reduce eliminările de căldură. Utilajul se aranjează în așa fel ca influența căldurii asupra corpul omului va fi cea mai mică.
5.5 Securitatea antiincendiară
Focul este o forță gigantică. Oamenii antici vedeau în el o sursă a vieții și în prezent el încălzește și hrănește doar cu acea diferență că pentru contemporanul nostru la nivelul actual de dezvoltare a condițiilor sociale că această întrebare a scăzut cu mult. Însă acest fapt nu ne permite să neglijăm focul, doar o mică neatenție și marea lui forță poate aduce o nenorocire. Iată de ce e atât de important rolul securității antiincendiare în organizarea protecției muncii la întreprinderi și în încăperi administrative.
Incendiul se numește arderea necontrolată în afara unui focar special care aduce pierderi materiale. Dacă această ardere nu cauzează pierderi materiale, atunci ea se numește inflamare. Explozia este o transformare chimică momentană, caracterizată prin degajarea de energie și crearea de gaze comprimate.
După gradul de ardere (oxidare însoțită de degajarea unei cantități mari de căldură) materialele de construcție se împart în următoarele tipuri: nearzătoare – sub acțiunea focului nu se inflamează, nu se corodează; greu inflamabile – sub acțiunea focului se inflamează, se carbonizează doar în prezența sursei de inflamare, iar după lichidarea ei arderea sau carbonizarea încetează (materialele se gips sau beton, materiale din argilă); inflamabile – sub acțiunea focului se inflamează și se carbonizează și continuă acest proces și după lichidarea sursei de inflamare (toate materialele organice, ce nu corespund cerințelor indicate anterior).
Materialele, ce posedă capacități ridicate de inflamabilitate se numesc periculoase din punct de vedere incendiar, iar capabile de explozii și detonare fără participarea oxigenului.
Cauzele incendiilor și exploziilor pot fi electrice după caracter și neelectrice. La categoria electrice se referă: scânteia în aparatele electrice, descărcările electrostatice, fulgerele ș.a.
Cauzele incendiilor și exploziilor cu caracter neelectric pot fi: exploatarea incorectă a aparatului de sudură cu gaz, pistoalele de lipit, dereglarea dispozitivelor de încălzire, a echipamentului de producție, încălcarea procesului tehnologic ș.a.
În dependență de procesele tehnologice și proprietățile materialelor după gradul de pericol incendiar și exploziv încăperile și clădirile se împart în cinci categorii A, B, V, G, D în conformitate cu normele proiectării tehnologice.
Aceste categorii sînt stabilite și aprobate de către ministerele ramurilor corespunzătoare. Majoritatea clădirilor industriei radioelectronice se referă la categoria V.
Clădirile și edificiile se împart după gradul de stabilitate antiincendiară (SNIP 201.02-85), care se determină de limitele minimale de stabilitate incendiară ale construcțiilor de bază și limitele maximale de răspundere în ele a focului. Aceste limite se determină în baza testării probelor în cuptoare speciale.
Protecția antiincendiară a obiectelor naționale este reglementată de STAS 12.11.033-81 “Cerințe generale”, normelor și regulilor constructive, regulilor protecției antiincendiare a ramurii.
Factorii principali pentru viața omului ce apar în timpul incendiului sunt: focul deschis, temperatura ridicată a aerului și obiectelor, produsele toxice ce ard, fumul, micșorarea concentrației de oxigen în aer, distrugerea încăperilor, echipamentului și explozia.
Pentru prevenirea incendiului trebuie luate următoarele măsuri:
excluderea apariției mediului arzător;
excluderea apariției în mediul arzător a surselor de inflamare;
menținerea temperaturii și presiunii mediului arzător mai jos de nivelul maxim admisibil de ardere.
Pentru prevenirea incendiului sunt aplicate un șir de măsuri. Barajele antiincendiare din clădiri și edificii la care se referă pereții antiincendiari, barajele și acoperirile antiincendiare, ușile și altele trebuie să fie executate din materiale ne inflamabile și de asemenea să fie prevăzută autoînchiderea lor. Ferestrele antiincendiare nu trebuie să aibă posibilitate de deschidere.
Pentru anunțul incendiului se utilizează legăturile radio și telefonice, sirenele, traductoare de semnalizare a incendiului. Fiecare unitate economică trebuie să dispună de mijloace de legătură pentru chemarea urgentă a pompierilor. Toate mijloacele de legătură antiincendiare trebuie să aibă acces deschis în orice timp.
Cel mai răspândit și ieftin mijloc de stingere a incendiului este apa care permite consumarea efectivă a căldurii aruncate de focarele de incendiu. Totodată apa nu poate fi folosită pentru stingerea lichidelor ușor inflamabile (benzină, gazul lampant, uleiuri minerale) și a materialelor care în contact cu ea elimină substanțe inflamabile (carbonatul de calciu).
În încăperile închise pentru lichidarea incendiului se recomandă utilizarea vaporilor de apă atât pentru stingerea materialelor solide cît și a substanțelor lichide.
În condițiile de laborator pentru stingerea incendiului poate fi folosit instinctorul cu volumul de șapte litri ce conține 97% etil bromic și 3% soluție de oxid carbonic. Componența aflată sub presiune în timpul utilizării se elimină sub formă de spumă. Durata funcționării este de circa 40s, distanța de aplicare – 4- 5 metri. El se utilizează la stingerea instalațiilor electrice aflate sub tensiune, deoarece brom etilul nu conduce curentul electric. Pentru protecția oamenilor de produsele toxice ale arderii și de fum se utilizează ventilatoarele și canalele de ventilare.
5.6 Radiație
Intensitatea radiației Roentgen de energie joasă se controlează la locuri de muncă cu monitoare, care lucrează sub tensiunea la cinescop 15 kV și mai mult. Norma nivelului de radiație roentgen este 100 mcP/oră, dar în timpul de azi se utilizează mai mult monitoare cu nivelul radiație mai mică, ce aduce la micșorarea influenței factorilor dăunători asupra programatorului sau operatorului. La efectuarea tezei de licență a fost utilizat monitorul cu tensiunea la cinescop mult mai mică de 15 kV, și de aceea acest factor nu a fost înregistrat de dispozitiv, adică a fost mai puțin de normă.
Încă se măsoară și se normează intensitatea radiației ultraviolete (la lungimea de undă 336 nm) și infraroșie (la lungimea de undă 700 – 1050 nm) ce influențează asupra omului, nu trebuie să depășească 10 W/m2.
Radiația electromagnetică se normează după componente electrice (50 V/m) și magnetice (50 A/m) de aflare în această zonă de radiere în timp de 8 ore. Tensiunea înaltă a câmpului electric între monitorul și operatorul aduce la efecte neplăcute. La distanța de 5 – 30 cm de la monitor tensiunea nu trebuie să depășească nivelul admisibil după norme, ce sunt stabilite în dependența de timpul aflării la locul de muncă. Niveluri admisibile de tensiune sunt prezentate în tabelul 3.
Tab.14
Niveluri admisibile de tensiune.
Controlul radiației de toate tipurile se efectuează în conformitate cu regulile ce sunt expuse în îndrumare speciale.
Parametrii vizuali a imaginii
Efectuând controlul asupra condițiilor de lucru la locuri de muncă cu monitoare trebuie să fie măsurate și evaluate următorii parametri a imaginii:
deformarea imaginii;
contrastul de strălucire a imaginii;
variația strălucirii elementelor simbolului;
lungimea, lățimea, raportul lățimii la lungimea;
lățimea liniei de contur a simbolului;
modulație de strălucire a rasterului;
distanța între cuvinte, rânduri;
vibrația și fugă (licărire) imaginilor.
Prezența sau lipsa licăririi imaginii se stabilește după metode experimentale sau de calcul. Metoda experimentală permite de evaluat și vibrarea imaginii. Prezența vibrării se determină prim metodă măsurărilor directe. Celelalte caracteristici a ecranului se stabilesc după rezultatele măsurărilor directe și indirecte. După control, parametrii se compară cu recomandațiile prezentate în tabelul 4.
Tab.15
Parametrii monitorului.
Continuare Tab.15
Totodată o importanță mare are rezoluția ecranului, care se determină de tipul adaptorului grafic (CGA, EGA, VGA, SVGA), adică cât mai mare este rezoluția ecranului atât mai bună este imaginea.
5.8 Efecte psihofiziologice
Lucrul operatorilor cere încordarea mintală și emoțională foarte mare, concentrarea atenției și responsabilitatea de lucrul efectuat. Operatorii foarte des suferă de diferite stări proaste a vederii, dureri de cap, dureri de mușchi în regiunea spatelui. În afară de asta, în mare măsură se exprimă senzația oboselii și încordarea mintală în timpul lucrului; ei nu se simt odihniți după somn de noapte.
Sarcina asupra vederii și caracterul încărcării lucrului provoacă la operatori disfuncția stării a analizatorului de vedere și sistemei nervoase centrale. În procesul de lucru la dânșii se micșorează rezistența vederii clare, sensibilitatea electrică și labilitatea analizatorului de vedere, și încă apar disfuncții a mușchilor ochilor.
Sunt interesante cercetările stării psihofiziologice a operatorilor de introducere a datelor, care efectuează lucrul monoton în timp de 2 ore în condiții favorabile de muncă. Tot odată s-a arătat că din 80% de persoane supuse experienței capacitatea de lucru și activitatea mintală se micșorează peste 45 – 60 minute de lucrului neîntrerupt. În afară de aceasta la persoanele supuse experienței la sfârșitul zilei de lucru sa mărit timpul de reacție și cantitatea greșelilor la executarea problemelor. S-a micșorat frecvența de contractare a inimii de la 64 până la 40 batăi/min; la 74% persoane s-a tulburat bilanțul mușchilor ochiului.
Efectuarea multor operații la CC cer încărcarea îndelungată a mușchilor spatelui, gâtului, mâinilor și picioarelor ce aduce la apariția oboselii. Motive principale de apariția oboselii sunt înălțimea irațională a suprafeței de lucru, masei și scaunului, lipsa spatelui de sprijin și brațelor, unghiuri incomode de îndoire în articulațiile umărului și cubitului, unghiul de înclinare a capului, repartizare incomodă a documentelor, monitoarelor și tastaturii, lipsa spațiului și suportului pentru picioare.
Iluminatul
La lucrul cu CE o importanță mare are crearea mediului de iluminare optimal, adică organizarea rațională iluminatului natural și artificial în încăperi și la locuri de muncă, deoarece lucrând la CE încărcarea în general cade pe organe de vedere. Dacă omul lucrează mai mult de o jumătate a zilei de lucru la CE la el se observă înrăutățirea vederii, ce constituie 62-94%. Asta în primul rând este oboseala ochilor, dureri foarte mari și simțul de nisip în ochi, mâncărime și senzație de usturare în ochi. Totodată senzațiile dureroase în ochi apar în general la sfârșitul zilei de lucru. Din această cauză toate locurile de muncă cu CE se amplasează în locuri ce sunt protejate de căderea luminii difuzate pe ecranul terminalului. Pentru asta se utilizează încăperi cu iluminarea unilaterală (într-o singură direcție), totodată ferestrele trebuie să fie cu storuri sau jaluzele pentru excluderea efectului de orbire și strălucirea ecranului terminalului.
Iluminarea artificială a locului de muncă se efectuează în felul următor, nivelul iluminării locului de muncă trebuie să corespundă caracterului de lucru vizual, iluminarea încăperii să nu depindă de timpul de afară, fluxurile de lumină să aibă direcția optimală și utilajul trebuie să fie economic, inofensiv, durabil și simplu în exploatare.
La instalarea iluminatului artificial se fac următoarele măsurări:
iluminarea la locuri de muncă;
caracterul de strălucire a ecranului, mesei;
strălucirea petelor reflectate în ecran.
Se efectuează măsurări de control a iluminării și strălucirii la locuri de muncă cu diferite terminale care sunt în încăperi și care se află în diferite condiții de iluminare, acolo unde sunt plângeri ale personalului. Măsurarea iluminatului se efectuează în timpul întuneric a zilei.
Punctele de control pentru măsurările iluminatului la locuri de muncă se amplasează:
în centrul ecranului;
pe tastatură;
pe document în planul amplasării lui;
pe masă în zona de lucru.
Efectuarea măsurărilor se efectuează în conformitate cu GOST 2.4.940-91. Măsurarea caracterului de strălucire a ecranului se efectuează la strălucirea ecranului nu mai puțin de 35 c/m2. Iluminarea locului de muncă se normează după SniP II-4-91 și depinde de caracterul lucrului vizual, contrastul obiectului, fonului și tipul fonului.
Calcularea iluminatului artificial a încăperii.
Pentru organizarea activității normale a omului o mare însemnătate are crearea condițiilor normale de iluminare naturală și artificială la locul de muncă.
Iluminarea de producție, corect proiectată și îndeplinită, aduce la rezolvarea următoarelor probleme:
ea îmbunătățește condițiile de muncă, micșorează oboseala, contribuie la creșterea productivității muncii și a calității producției, acționează binefăcător asupra mediului de producere, acționează pozitiv din punct de vedere psihologic asupra lucrătorului, ridică securitatea muncii și micșorează traumatismul în producție.
Analizatorul vizual percepe ca lumină oscilațiile electromagnetice cu lungimea de undă 380-770 nm.
Iluminarea optimă se alege în dependență de particularitățile (coeficientul de reflecție) suprafeței de lucru și detaliile ce sunt analizate pe ea (lungimea perioadei de lucru vizual, precizia, caracterul procesului de lucru).
O cerință importantă este menținerea regimului de iluminare. La iluminarea artificială devierile în rețea nu trebuie să depășească + 2.5 – 3 %.
Prin norme sunt introduse valorile minimale a iluminării care permit realizarea cu succes a lucrului vizual.
În dependență de sursa de lumină, iluminarea de producere poate fi de două tipuri: naturală (lumina de zi) și artificială, generată de lămpile electrice.
Iluminatul artificial poate fi de lucru, de pază, de serviciu, de evacuare, de avarii.
Iluminatul de lucru poate fi local, total și combinat.
Este interzis de a folosi la întreprinderile mari iluminatul local, deoarece el trebuie să constituie nu mai puțin de 10 % din iluminatul total.
Normarea iluminatului artificial se efectuează de SNiP-II-4-79.
La fel se normează iluminarea locurilor de muncă în funcție de :
1. categoria lucrului vizual
a) precizie înaltă E =5000 lx
b) fără precizie E =30 lx
2. în dependență de tipul de iluminat-adică total sau local.
3. în dependență de fon.
4. în dependență de contrast.
Raportul dintre fon și contrast indică subcategoria (a,b,c,d).
Iluminatul artificial există datorită becurilor incadiscente și fluoriscente.
Deci după cum știm, iluminatul natural este schimbător în timp sau chiar poate să nu existe, de aceia se folosește iluminatul artificial, iar pentru instalarea corectă a iluminatului artificial se fac careva calcule.
Calcularea iluminatului artificial se face conform metodei randamentului de flux de lumină.
După această metodă se găsește fluxul de lumină a becurilor care asigură iluminarea locurilor de muncă, normarea
unde:
Sp – suprafața podelei
En – iluminarea normată minimală, 500 lx (precizie mijlocie)
z – coeficientul iluminării neuniforme, Z=1.1-1.2
Kr – coeficientul de rezervă, se ține cont de tipul de becuri și de tipul de încăpere.
N – numărul de instalații de iluminat
n – numărul de becuri într-o instalație
Kuf- coeficientul utilizării de către lampele radiante a fluxului de lumina pe
suprafața calculată.
Se determină în dependență de tipul becului, coeficientului de reflectare a podelei, pereților, tavanului, indicile încăperii:
unde
A,B – dimensiunile încăperii
h – înălțimea suspensiei lămpilor de aspra suprafeței de lucru.
Kum – coeficientul de umbrire, se introduce pentru încăperile cu poziția fixă a lucrătorilor, și este egal cu 0.8-0.9.
Înălțimea lampei asupra ariei de iluminare se calculează după formula:
Hc=H-Hl-Ht;
unde
H – înălțimea încăperii 4,00 m.
Hl- distanța de la pod până la partea de jos a lampei, 0,5 m
s Ht- distanța de la podea până la suprafața iluminată, 0,75 m
Hc=4,00 – 0,10 – 0,75 = 3,15 m
Calculăm i,
Având coeficientul de reflectare a tavanului și pereților egal cu 0.7 și după indicile calculat i, coeficientul de folosire a fluxului de lumină din tabel egal =0,30
Calculăm
Pentru iluminare utilizăm 10 instalații a câte 2 becuri fiecare. Alegem cea mai apropiată lampă de tipul EA-80 cu fluxul de lumină 5220 lm care asigură pe deplin iluminarea centrului de calcul.
5.11 Ecologia.
Elaborarea și exploatarea produselor soft este una din cele mai curate din punct de vedere ecologic activitatea de producere a oamenilor. Sunt utilizate numai surse de energie electrică. Hârtia nu se utilizează în cantități mari, și ea poate fi ușor reciclată după utilizare. Calculatoarele nu poluează mediul în tipul exploatării.
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: Solutionarea Problemei Comis Voiajorului cu Ajutorul Algoritmilor Genetici Implementari în Limbajul Java Si Tehnologia J2ee (ID: 161088)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
