Lucrare de licență [307771]
Lucrare de licență
Domeniul: INGINERIA SISTEMELOR
Specializarea: AUTOMATICĂ ȘI INFORMATICĂ APLICATĂ
Indrumator:As. dr. ing. Oana Flangea
Student: [anonimizat]-Marian Mircea
ANUL DE STUDII IV
CUPRINS
1.Introducere în tematica lucrării………………………………………………………………3
2.Concepte si tehnologii folosite în elaborarea proiectului……………………………………4
2.1. Generalități despre tehnologiile bazelor de date și java………………………………….4
2.1.1.Generalități cu privire la tehnologiile bazelor de date………………………………4
2.1.2.Generalități cu privire la tehnologiile java…………………………………………6
2.2 Noțiuni fundamentale în realizarea aplicației conform Normativului 600/2010 pentru
intersecțile semaforizate: formule, explicații…………………………………………………7
2.2.1.Generalități cu privire la intersecțiile semaforizate………………………………..7
2.2.2.Geometria intersecției semaforizate…………………………………………….….7
2.2.3.Stabilirea grupurilor de benzi și a mișcări efectuate de vehicule………….…….…8
2.2.4.Verificarea traficului de vehicule într-o întersectie semaforizată si determinarea nivelului de serviciu pentru întarzierile de control obtinute………………………………8
2.2.5.[anonimizat]-o intersectie
semaforizată și determinarea nivelului de serviciu pentru întarzierile de control obăținute…18
3.Instrumente utilizate………………………………………………………………………….32
3.1. Mediul de dezvoltare (IDE) Netbeans…… ……………………………………….…….32
3.2. Mysql……………………………………………………………………………………39
3.3. Legătura MySql cu Netbeans……………………………………………………………41
3.4. Mediul de dezvoltare Unity 3D (C#)……………………………………………………48
3.5. [anonimizat]……………………………………………………………………50
4.Studiu de caz………………………………………………………………………………….51
4.1. Ghid de funcționare și de utilizare a aplicației realizate………………………………………….52
4.1.1.Ghid de funcționare și de utilizare a interfeței Java………………….…………52
4.1.2. Ghid de funcționare și de utilizare a [anonimizat]…………………66
4.1.3. Ghid de funcționare și de utilizare a aplicației Unity……………………………68
5.Concluzii si contributii……………………………………………………………………….76
Bibliografie………………………………………………………………………………………77
Anexe…………………………………………………………………………………………….78
I. Introducere in tematica lucrarii
În prezent transportul constituie un factor important in viața de zi cu zi. De aceea este necesară implementarea unor sisteme inteligente care să asigure un transport cât mai eficient din punct de vedere al timpului necesar unor persoane de a-[anonimizat], al confortului acestora (ex : reducerea stresului acumulat la volanul unui autoturism si a [anonimizat].), [anonimizat].
În orasele mari transportul este influențat de mai mulți factori: [anonimizat], transportul public.
Pentru a [anonimizat], pasaje, [anonimizat], etc. Datorită costurilor mult prea mari autoritățile neglijează aceste lucruri ceea ce duce la producerea unor probleme de transport .[1].
Dezvoltarea transport public nu a [anonimizat] , iar in Europa o problema majora îl constituie numărul ridicat de autoturisme care îngreuneaza traficul. În partea de nord a Europei se ofera subvențiii transportului public. În Suedia s-a introdus sistemul Länstrafik pentru dezvoltarea transportului public ; în Finlanda transportul public este extins in Helsinki , iar statul oferă ca și în Suedia subventii în orase. În Marea Britanie incepând cu 1990 a avut loc o creștere a numărului de cetăteni care folosesc autobuzele , deși a scazut cu 30% în Scotia , cu 28% în Tara Galilor și cu 22% în zonele rulare). [1]
În Statele Unite , transportul public este non-existent , dominând transportul public (singura exceptie o constituie New York City , unde jumătate din locuitori nu dețin mașini personale .
În România transportul este unul variat , din acest motiv țara este situate la un nivel acceptabil față de celelalte țări. [10]
În prezent nu se cunoaște numărul de personae care folosesc transportul în comun , vehiculele personale , alte mijloace ( de exemplu : biciclete , scutere ,etc.), ci doar cele referitoare la traficul interurban . Astfel s-a înregistrat în anul 2008 un număr de 384.515.000 de călători , dintre care 296.954.000 ( 77%) au ales transportul rutier și 78.252.000(20%) transportul în comun. [10]
Pentru zonele urbane și suburbane , în 2006 s-a estimat o valoare de circa 2.110.579 de mii mii de călători , respective 5.782.408 călători pe zi. [10]
În România transportul urban se desfășoară cu autobuze, microbuze ,tramvaie și trolebuze pentru transportul suprateran și cu metroul pentru cel subteran. [10]
În București rețeaua de transport constituie un factor important în infrastructura orașului.
Bucureștiul are cea mai mare rețea de transport în comun din toată țara, și printer cele mai mari din Europa. [11]
Rețeaua autonomă de Transport București (RATB) este a patra după mărime de ăe continent ce înregistrează în medie un transport zilnic de cetățeni de circa 2,15 milioane pe 110 linii de autobus , 15 linii de trolebuz și 24 de linii de tramvai. [11]
În București mai există și un transport bine dezvoltat de microbuze care asigură legătura între orașe și alte locații. [11]
Din punct de vedere al transportului rutier , Bucureștiul reprezintă cel mai important punct de comunicații rutiere din România. [11]
Scopul acestei lucrări este de a realiza o aplicatie care sa ajute la fluidizarea traficului. Proiectul va consta intr-o aplicatie software care va simula traficul intr-o intersectie semaforizata si va optimiza modul de functionare al semafoarelor pentru imbunatatirea traficului.Aceasta aplicatie este realizata conform Normativ_intersectii_600_2010 pentru intersectii.
Aplicația foloseste diverși algoritmi de calcul , precum : volumul critic pe banda al intersecției, calculul capacității intersectiei, al intârzierilor de control, etc . iar la sfârsit ofera un nivel de serviciu. În functie de nivel de serviciu obtinut se va considera daca este necesar sau nu să se optimizeze semafoarele .Acesti algoritmi vor fi prezentati ulterior
II. Concepte si tehnologii folosite in elaborarea proiectului
2.1. Generalitati despre tehnologiile bazelor de date si java
2.1.1Generalitati cu privire la tehnologiile bazelor de date
O bază de date reprezintă o colecție de date utilizată cu scopul furnizării si distribuirii datelor în timp real, acestea urmând a fi utilizate în diferite activități.
O bază de date ajută la reducerea supraincărcării aplicațiilor cu date care se pot repeta , la sporirea securității si a integrității datelor , este eficientă din punct de vedere a partajării datelor, poate fi accesată și pe plan global, se poate standardiza pentru a putea fi utilizată pentru efectuarea mai multor operații, precum sortarea datelor după anumite criterii, evitarea duplicațiilor, etc.
Sistemele informatice (programele) ce utilizează bazele de date , ce permit utilizatorilor să interacționeze cu acestea , ce permit crearea , actualizare și interogarea acesteia poartă numele de siteme de gestiune a bazelor de date (SGBD).
Principalele caracteristici ale unui SGBD sunt:
-asigură distribuția datelor în baza de date;
-permite actualizarea si eliminarea datelor din baza de date;
-asigură accesul în baza de date;
-păstrează independența structurii bazei – programe.
Pentru a accesa baza de date este nevoie de cunoasterea unui limbaj de manipulare a datelor (DML) , care să efectueze urmatoarele operații:
-extragerea de date din baza de date;
-introducerea de noi date din baza de date;
-ștergerea datelor din baza de date ;
-actualizarea valorilor unor date din baza de date;
Exemple de limbaje de manipulare a datelor :
SQL(Structured Query Language) este un limbaj de interogare structurat,un limbaj de programare specific pentru manipularea datelor în sistemele de manipulare a bazelor de date relaționare (RDBMS), iar la originea acestuia stă un limbaj bazat pe algebra relaționară; [3]
Information Management System (IMS) este un limbaj de manipulare a datelor folosit de către firma IBM . Acest limbaj folosește un model ierarhic de stocare a datelor , care sunt implementate folosind blocuri de date cunoscute sub denumirea de segmente,fiecare segment continând mai multe părți de date. Aceste segmente poartă denumirea de zone(de exemplu: avem o bază de date Client cu un segment rădacină (sau un segment care se află în vârful ierarhiei ) având urmatoarele campuri: nume,prenume,varstă,număr de telefon,etc. [3]
IDMS(Managementul sistemelor integrate a bazelor de date) este un limbaj pentru servere proiectat de către firma B.F. Goodrich , în prezent drepturile asupra acestui limbaj îi revin firmei CA technologies (Computer Associates technologies). IDMS își organizează baza de date sub forma unor serii de fișiere, la urma lor acestea fiind formatate și afisate sub forma unor zone. Zonele sunt subdivizate în pagini , care corespund blocurilor fizice de pe HardDisck. [3]
Etc.
În aplicatia dezvoltată am folosit limbajul de manipulare a datelor SQL ,deoarece este cel mai folosit limbaj de acest fel și mi-a permis să lucrez cu un server local de baze de date pentru stocarea datelor . Serverul local conține toată informația inregistrată de către aplicația realizată în mediul de dezvoltare Netbeans .Acest mediu de dezvoltare va fi prezentat în unul din capitolele ce urmează.
Un limbaj de manipulare a datelor este similar unui limbaj de programare și este folosit pentru selectare, inserare, ștergere si actualizare de date în baza de date .
Pentru a efectua operații în baza de date folosind limbajul SQL se utilizează următoarele interogari:
SELECT………FROM……..WHERE………;
INSERT INTO …….. VALUES……………;
UPDATE ……..SET……….WHERE……….;
DELETE FROM ………….WHERE……….;
Acestea ne permit preluarea informației din baza de date , inserarea de noi date, modificarea acestora și ștergerea datelor.
2.1.2.Generalitati cu privire la tehnologiile Java
Java este un limbaj de programare orientat obiect. Cu ajutorul acestui limbaj se pot crea clase de obiecte și instanțe ale acestora, în care se pot inregistra informații, se pot moșteni variabile și metodele de la o clasă la alta etc.
Spre deosebire de alte limbaje de programare , java nu permite moștenirea multiplă , aceasta putând fi realizată într-un mod mult mai simplu , și anume prin interfețe, care permit definirea unui anumit comportament pentru o clasa de obiecte ,altul decât cel definit de clasa de bază. [4]
Tehnologia Java cuprinde patru componente:
Mașina virtuală , denumita JVM (Java Virtual Machine) are rolul de a traduce din limbaj mașină fișierele cu extensia .class ce conține biți (0 și 1) în limbaj uman (ce poate fi interpretat de către om); [4]
Limbajul Java propriu-zis. Limbajul Java este similar ca și sintaxa cu limbajul C++; [4]
Compilatorul care generează fișierele cu extensia .class .Compilatorul are rolul de a traduce instrucțiuniile scrise in limbajul Java (stocate în fișierele cu extensia .java) în instructiuni de tip cod de biți (stocate în fișierele cu extensia .class), scrise în limbaj mașină; [4]
Biblioteca de clase Java, denumită și Java API. Aceasta conține un set de componente ce pot fi refolosite în diverse aplicații. [4]
Ca și tehnologie Java mai este folosit Java J2SE, care reprezintă un mediu de dezvoltare al aplicațiilor de tip “client-side” (care rulează pe PC). [4]
Aplicația software care implementează platforma J2SE și care este folosit pentru dezvoltarea de aplicații specific acesteia este J2SDK (Java 2 Software Development Kit, Standard Edition) – este o aplicație gratuită. Acestă aplicație include unelte ce ne permit crearea programelor Java (compilatorul și alte unelte pentru dezvoltare de programe) și unelte de punere în execuție ale acestora ( mașina virtuală, biblioteca de clase Java API etc).Exemple de unelte incluse in aplicația J2SDK: javac (compilatorul Java), java (interpretorul Java), etc. [4]
J2RE (Java 2 Runtime Environment , Standard Edițion) reprezintă o modalitate de a executa aplicația realizată fară a fi nevoie sa accesezi întreg mediul de dezvoltare. Acesta are extensia .jar. [4]
În prezent pachetul J2SDK folosește pentru dezvoltarea aplicațiilor java , medii integrate de dezvoltare de programe (IDE). Exemple de medii de dezvoltare IDE : Netbeans, Eclipse , JCreator, Proccesing,BlueJ,JBuilder,etc. [4]
Prin utilizarea unui mediu IDE , programatorul beneficiază de un set de unelte : Debugger-e pentru a executa aplicația pas cu pas , ierarhizarea claselor si metodelor existente în cadrul unui proiect, completarea automată a codului, etc.
Pentru dezvoltarea aplicației am folosit mediul de dezvoltarea NetBeans IDE 8.1, fiind un soft liber si care mi-a permis conectarea directă la baza de date realizată în MySQL.
2.2.Noțiuni fundamentale în realizarea aplicației conform Normativului 600/2010 pentru intersecțile semaforizate: formule, explicații
2.2.1Generalitati cu privire la intersecțiile semaforizate
Pentru a dimensiona , a stabili geometria si pentru a efectua anumite calcule asupra unei intersectii semaforizate trebuie sa se tina cont de debitul critic de banda al circulatie. [2]
O banda de circulație constă într-o coloana de vehicule cu o lungime si lățime stabilită care poate intra în contact sau nu cu o intersecție. Benzile pot fi de doua tipuri: benzi simple cu o singura direcție sau benzi mixte cu mai multe directii.
În cadrul intersecțiilor semaforizate benzile se grupează în mai multe faze de semaforizare. O fază de semaforizare este formată din mai multe grupuri de benzi și are ca scop permiterea pătrunderii în intersectie a grupurilor de benzi într-un interval de timp stabilit.
Debitul critic de banda reprezintă suma debitelor critice pentru fiecare fază de semaforizare.
De exemplu pentru figura de mai jos: Dcf1=620 veh/h; Dcf2=140 veh/h;Dcf3=300/2=150 veh/h;Dcf4=250/2=175veh/h. Rezulta că :
Dcb= Dcf1+ Dcf2+ Dcf3+ Dcf4=620+140+150+175=1085 (veh/h) (2.2.1.1)
,unde Dcf = debitul critic pentru fiecare faza,
Dcb = debitul critic de banda.
Fig.2.2.1.1. Fazele de semaforizare cu debitele de vehicule aferente
Pentru o circulație fluentă este recomandat ca debitul critic de banda să nu depașească valoarea 1600 veh etalon/h. [2]
2.2.2.Geometria intersectiei semaforizate
Pentru a asigura o circulație fluentă geometria intersecției reprezintă un factor important.
Factorii care țin de geometria unei intersecții semaforizate sunt :
Lungimea si lățimea intersecției;
Existența sau nu a unor buzunare pentru viraje a vehiculelor (benzi care nu necesită implementarea unui interval de timp (care nu necesită un system de semaforizare) care să permită vehiculelor pătrunderea în intersecție);
Existenta sau nu a trecerilor de pietoni , a benzilor pentru bicicliști ; [2]
Existenta sau nu a semafoarelor care asigură controlul vehiculelor;
Numărul de benzi care intra în intersecție;
Etc.
2.2.3. Stabilirea grupurilor de benzi si a miscarilor care pot fi efectuate de vehicule
Grupurile de benzi sunt combinații de benzi si mișcări care pot fi efectuate în același timp
în cadrul unei faze de semaforizare. [2]
Fig 2.2.3.1 Grupurile de benzi pentru intersectia semaforizata aleasă
Se poate observa în figura de mai sus că grupurile sunt formate din mai multe benzi care permit o anumită mișcare a vehiculelor . De exemplu pentru grupul 1 ales avem doua benzi : una simpla cu o singura posibilitate de deplasare și anume înainte și o banda mixta care permite atât virajul la dreapta a vehiculelor cât și continuarea deplasării înaintea a vehiculelor.
Mișcările sunt de doua tipuri : [2]
1)Mișcări protejate;
2)Mișcări premise.
1)Mișcarea protejată reprezintă mișcarea efectuată de vehicule atunci când faza de semaforizare corespunzatoare grupurilor de benzi unde se află vehiculele indică culoarea verde și atunci când nu intervin alți factori care să nu le permită pătrunderea în intersecție (de exemplu: pietoni, bicicliști , alte vehicule,etc). [2]
2)Miscarea permisa reprezintă mișcarea efectuată de vehicule atunci când faza de semaforizare corespunzatoare grupurilor de benzi unde se află vehiculele indică culoarea verde și atunci când intervin alți factori care cedeză dreptul de a pătrunde în intersecție (de exemplu: pietoni, bicicliști , alte vehicule,etc). [2]
2.2.4.Verificarea traficului de vehicule într-o intersecție semaforizată si determinarea nivelului de serviciu pentru întârzierile de control obținute.
Pentru a realiza verificarea traficului de vehicule într-o intersecție semaforizată și pentru a stabili nivelul de serviciu pentru întârzierile de control obținute trebuie parcurse următoarele etape:
Determinarea debitului de saturație pentru fiecare grup de benzi;
Determinarea nivelului de serviciu pentru întârzierile de control obținute.
Determinarea debitului de saturație pentru fiecare grup de benzi
Debitul de saturatie pentru fiecare grup de benzi este fluxul de vehicule care poate fi preluat de grupul de benzi presupunand ca faza cu drept de acces pentru grupul respective (culoarea verde) dureaza 100% din timp (g/C=1). [2]
[2] (2.2.4.1)
,unde [2] :
s este debitul de saturatie pentru un grup de benzi (veh/ora);
este debitul de saturatie de baza pe banda (veh et/ora);
N este numarul de benzi din grupul de benzi,
este factorul de ajustare pentru latimea benzilor;
este factorul de ajustare pentru procentul de vehicule grele;
este factorul de ajustare pentru declivitatea accesului;
este factorul de ajustare pentru numarul manevrelor de parcare;
este factorul de ajustare pentru numarul de opriri ale autobuzelor;
este factorul de ajustare pentru zona in care se afla intersectia;
este factorul de ajustare pentru utilizarea benzilor;
este factorul de ajustare pentru virajele la stanga din grupul de benzi;
este factorul de ajustare pentru virajele la dreapta din grupul de benzi;
este factorul de ajustare pentru virajul la stanga datorat pietonilor;
este factorul de ajustare pentru virajul la dreapta datorat pietonilor;
2) Valoarea debitului de saturație de baza pe banda () se alege între 1850-1900 veh/h. Aceasta valoare va fi corectată ulterior în urma efecturaii calculelor ce urmeaza. [2]
4)Factorul de ajustare pentru lațimea benzii ( reprezinta impactul negativ pe care îl au benzile înguste asupra debitului de saturație al unui grup de benzi. Acesta are urmatoarea formula: [2]
(2.2.4.2)
W ≥ 2.4 m
,unde : W – reprezinta lătimea benzilor pentru grupul respectiv ;
Dacă W ≥ 4.8 m este indicat ca banda respectiva să fie impărțită în doua benzi mai mici, astfel rezultand într-un debit de saturatie mai mare , deoarece se modifica N. [2]
5) Factorul de ajustare pentru procentul de vehicule grele ( ) reprezintă impactul negativ pe care îl au vehiculele grele (de exemplu : camioane , autobuze, utilaje,etc.) asupra traficului, datorită necesitătii asigurării unui spatiu mult mai mare pentru deplasare , timpului mult mai greu de manevrare, etc. Pentru ca un vehicul șă fie considerat un vehicul greu trebuie să aibă mai mult de 4 pneuri (roți) care ating partea carosabilă. Echivalentul unui vehicul greu în vehicule etalon pentru verificarea capacității de circulație se face cu ajutorul coeficientului ET = 2 vet/HV.
Pentru determinarea factorului de ajustare pentru procentul de vehicule grele se folosește formula: [2]
(2.2.4.3)
,unde: %HV – procentul de vehicule grele din grupul de benzi.
6) Factorul de ajustare pentru declivitate () reprezintă impactul negativ pe care îl are înclinația terenului asupra vehiculelor .Are urmatoarea formula: [2]
(2.2.4.4)
,unde: %G – declivitatea terenului. [2]
Declivitatea terenului negativă se consideră la coborare, iar cea pozitivă se consideră la urcare. [2]
7) Factorul de ajustare pentru parcare reprezintă impactul negativ pe care îl are prezența parcărilor laterale în grupurile respective de benzi asupra fluxului de saturatie .Acesta are urmatoarea formulă: [2]
, (2.2.4.5)
,unde : N – reprezintă numărul de benzi din grup; [2]
– reprezintă numărul de manevre de parcare efectuate într-o ora , [2]
O manevră de parcare duce în medie la o întârziere , de 18 secunde. [2]
Se accepta maxim 180 de manevre de parcare. [2]
În cazul în care nu avem zona de parcare , = 1 . [2]
8)Factorul de ajustare pentru opririle autobuzelor ( reprezintă impactul negativ care-l au stațiile de autobuz asupra debitului de saturație, excluzând cazul în care sunt amenajate alveole ( buzunare pentru orpirile autobuzelor). S-a estimat că fiecare autobuz duce la o întarziere de 14,4 secunde pentru fiecare ciclu de semaforizare. Numărul de opriri ale autobuzelor nu trebuie să depaseasca 250 într-o ora. Factorul de ajustare pentru opririle autobuzelor are următoarea formulă: [2]
(2.2.4.6)
,unde: N- reprezintă numărul de benzi din grupul respectiv; [2]
-reprezină numărul de opriri ale autobuzelor într-o ora. [2]
9)Factorul de ajustare pentru tipul zonei ( reprezintă impactul negativ pe care-l au zonele populate asupra debitului de saturație. Acesta ia urmatoarele valori: [2]
10)Factorul de ajustare pentru utilizarea benzilor ( reprezintă impactul negativ pe care îl are distribuția inegala a traficului pe benzile de circulatie. Acesta are urmatoarea formula: [2]
(2.2.4.7)
,unde : – reprezintă volumul de vehicule neajust al grupului de benzi (veh/h); [2]
– reprezintă volumul de vehicule neajusta al grupului de benzi (veh/h); [2]
N – reprezintă numarul de benzi din grupul respective. [2]
Dacă distributia pe benzi este uniforma , se poate considera . [2]
11)Factorul de ajustare pentru virajul de stânga ( reprezintă impactul negativ pe care îl au virajele de stânga a vehiculelor. Există mai mulți factori ce influențeaza virajele de stânga a vehiculelor, de exemplu: [2]
Tipul benzilor : dacă sunt simple (doar viraj la stanga) sau mixte ( dacă permit atât virajul la stânga , cât și alt tip de deplasare a vehiculelor (înainte, de dreapta));
Vehiculele care virează la stânga;
Conflictul dintre vehiculele care virează la stânga și alte vehicule care vin de pe alte benzi , pietoni , bicicliști,etc. Dacă există faze de semaforizare nu ar trebui să existe conflicte în trafic.;
Dacă faza de semaforizare nu este aleasă corect ( de exemplu se aleg grupuri de benzi care intră în conflict , adică le este permisă trecerea simultană prin intersecție a doua grupuri de benzi la culoarea verde a semafoarelor care intră in conflict și duc la producerea de coliziuni între vehicule).
Formula corespunzatoare factorului de ajustare pentru virajul la stanga ( se ia din tabelul urmator: [2]
Tabel 2.2.4.1 . Factorului de ajustare pentru virajul la stânga (
,unde reprezintă proporția de vehicule grele care virează la stanga și are urmatoarea formula: [2]
(2.2.4.7)
,unde: – reprezintă volumul de vehicule care virează la stânga; [2]
– reprezintă suma volumelor de vehicule din grupul respectiv. [2]
Dacă nu există viraj la stanga factorului de ajustare pentru virajul la stanga ( este 1. [2]
11)Factorul de ajustare pentru virajul de dreapta ( reprezintă impactul negativ pe care îl au vehiculele care virează la dreapta asupra debitului de saturație. Există mai mulți factori ce influențează virajele de dreapta a vehiculelor, precum: [2]
Tipul benzilor : dacă sunt simple (doar viraj la dreapta) sau mixte ( dacă permit atât virajul la stânga , cât și alt tip de deplasare a vehiculelor (înainte, de stânga));
Vehiculele care virează la dreapta;
Conflictul dintre vehiculele care virează la dreapta și alte vehicule care vin de pe alte benzi , pietoni , bicicliști,etc. Dacă există faze de semaforizare nu ar trebui să existe conflicte în trafic.;
Dacă faza de semaforizare nu este aleasa corect ( de exemplu se aleg grupuri de benzi care intră în conflict , adică le este permisă trecerea simultană prin intersecție a doua grupuri de benzi la culoarea verde a semafoarelor care intră in conflict.
Formula corespunzătoare factorului de ajustare pentru virajul la stânga ( se ia conform relațiilor următoare: [2]
(2.2.4.8)(2.2.4.9)
,unde reprezintă proporția de vehicule care vireaza la dreapta si , are urmatoarea formula:
(2.2.4.10)
,unde : – reprezintă volumul de vehicule care virează la dreapta [2]
– reprezintă suma volumelor de vehicule din grupul respectiv [2]
Dacă nu există viraj la stânga factorului de ajustare pentru virajul la dreapta ( este 1.
12)Factorul de ajustare pentru impactul pietonilor asupra virajelor ( reprezintă impactul negativ pe care îl are traversările pietonilor asupra debitului de saturație. S-au stabilit urmatoarele valori pentru factorul de ajustare al impactul pietonilor asupra virajelor: [2]
Tabel 2.2.4.2. Alegerea factorul de ajustare pentru impactul pietonilor asupra virajelor
B.Determinarea nivelului de serviciu pentru întârzierile de control obținute.
Nivelul de serviciu reprezintă un calificativ obținut în urma determinării întarzierilor de control pentru fiecare grup de benzi. Pentru aceasta trebuie efectuate urmatoarele calcule: [2]
Determinarea capacității de circulatie pentru grupul de benzi respectiv;
Determinarea raportului volum de vehicule neajustat pentru grupul de benzi respectiv – capacitate de circulatie pentru grupul de benzi respectiv (;
Calculul întârzierilor de control;
Afișarea nivelului de serviciu.
Determinarea capacității de circulatie pentru grupul de benzi respectiv se determina pentru fiecare grup de benzi în parte si reprezintă debitul de vehicule maxim care poate să treacă prin intersecție într-o ora .Se calculează cu urmatoarea formulă: [2]
(2.2.4.11)
,unde : – reprezintă capacitatea de circulație pentru grupul de benzi i; [2]
– reprezintă volumul de saturație pentru grupul de benzi i; [2]
– reprezintă raportul dintre timpul de verde neajustat ales și lungimea efectivă a ciclului (timpul total de roșu , galben și verde ) pentru grupul de benzi i . [2]
2)Determinarea raportului volum de vehicule neajustat pentru grupul de benzi respectiv – capacitate de circulatie pentru grupul de benzi respectiv ( se calculează pentru fiecare grup de benzi în parte și ne ajută să determinăm dacă avem un trafic redus sau nu în intersecție la ora respective .Are următoarea formulă: [2]
(2.2.4.12)
,unde : -reprezintă raportul debit-capacitate pentru grupul de benzi i; [2]
–reprezintă debitul de saturație pentru grupul de benzi i; [2]
– reprezintă raportul dintre timpul de verde neajustat ales și lungimea efectivă a ciclului (timpul total de roșu , galben și verde ) pentru grupul de benzi i . [2]
Dacă voalorile lui (v/c) sunt aproximativ egale cu 0 , înseamnă că în intersecție traficul este redus; [2]
Dacă voalorile lui (v/c) sunt aproximativ egale cu 1, înseamnă că în intersecție traficul a ajuns aproape la capacitate maximă. [2]
3)Calculul întârzierilor de control ne ajută la determinarea nivelului de serviciu. Trebuie efectuate următoarele calcule: [2]
Determinarea întârzierilor uniforme;
Determinarea factorului de progresie;
Determinarea întârzierilor incrementale;
Determinarea întârzierilor inițiale din cozile de așteptare;
Determinarea întârzierilor de control;
Agregarea întârzierilor.
a)Determinarea întârzierilor uniforme () .Are următoare formula: [2]
(2.2.4.13)
,unde : -reprezintă raportul debit-capacitate pentru grupul de benzi i; [2]
–reprezintă debitul de saturație pentru grupul de benzi i; [2]
– reprezintă raportul dintre timpul de verde neajustat ales și lungimea efectivă a ciclului (timpul total de roșu , galben și verde ) pentru grupul de benzi i . [2]
b)Determinarea factorului de progresie ( . Are următoarea formulă:
(2.2.4.14)
,unde : – reprezintă factorul de progresie pentru grupul de benzi i; [2]
– reprezintă numarul de vehicule care ajung în intersecție pe durata luminii verzi; [2]
– reprezintă raportul dintre timpul de verde neajustat ales și lungimea efectivă a ciclului (timpul total de roșu , galben și verde ) pentru grupul de benzi i . [2]
c)Determinarea întârzierilor incrementale () .Are următoarea formula: [2]
(2.2.4.15)
,unde : – reprezintă întarzierile incrementale pentru grupul de benzi i; [2]
T – reprezintă perioada de analiză în ore ; [2]
-reprezintă raportul debit-capacitate pentru grupul de benzi i; [2]
– reprezintă capacitatea de circulație pentru grupul de benzi i. [2]
d)Determinarea întârzierilor inițiale din cozile de așteptare ().Pentru determinarea acestei valori trebuie să se cunoască valorile cozilor de așteptare inițiale (), masurată în număr de vehicule. În cazul în care ,atunci: [2]
În cazul în care și 1 , atunci întârzierilor inițiale din cozile de așteptare () au următoarea formulă: [2]
(2.2.4.16)
, unde: u are urmatoarea formulă: [2]
(2.2.4.17)
În cazul în care și 1, atunci întârzierilor inițiale din cozile de așteptare () are următoarea formulă: [2]
(2.2.4.18)
,unde : – reprezintă capacitatea de circulație pentru grupul de benzi i; [2]
-reprezintă raportul debit-capacitate pentru grupul de benzi i; [2]
-reprezintă cozile de așteptare inițiale. [2]
e)Determinarea întarzierilor de control .Are următoarea formulă: [2]
(2.2.4.19)
,unde : –reprezintă întârzierile uniforme pentru grupul de benzi i; [2]
– reprezintă factorul de progresie pentru grupul de benzi i; [2]
– reprezintă întârzierile incrementale pentru grupul de benzi i; [2]
– reprezintă întârzierile inițiale din cozile de așteptare. [2]
f) Agregarea întarzierilor.Ne ajută la determinarea timpului necesar vehiculelor pe fiecare grup de benzi de a pătrunde în intersecție (se măsoară în sec/veh).Reprezintă suma produselor întârzierilor de control pe fiecare grup de benzi și volumele neajustate pe fiecare grup de benzi raportată la suma de volume neajustate pe fiecare grup de benzi.În funcție de acesta se determină nivelul de serviciu. Are următoarea formulă: [2]
(2.2.4.20)
4)Afișarea nivelului de serviciu.
Nivelul de serviciu se ia în funcție de agregarea obținută. Calificativul obținut se ia din tabelul urmator:
Tabel 2.2.4.1. Nivelul de serviciu.
2.2.5.Optimizarea semafoarelor ,fluidizarea traficului de vehicule într-o intersecție semaforizată și determinarea nivelului de serviciu pentru întârzierile de control obținute.
Pentru a realiza optimizarea semafoarealor ,fluidizarea traficului de vehicule într-o intersecție semaforizata și pentru a stabili nivelul de serviciu în funcție de întârzierile de control obținute trebuie percurse următoarele etape:
Determinarea debitului de saturație pentru fiecare grup de benzi;
Determinarea elementelor semaforizarii;
Determinarea nivelului de serviciu pentru întarzierile de control obținute.
Etapa de optimizare a semafoarelor într-o intersecție semaforizată este similară cu etapa de verificare a traficului într-o intersectie semaforizată prezentată în subcapitolul anterior , cu diferența că optimizarea semafoarelor conține o etapa suplimentară de determinare a elementelor semaforizarii situată înaintea etapei de determinare a nivelului de serviciu pentru întârzierile de control obținute.
A.Determinarea debitului de saturație pentru fiecare grup de benzi
Debitul de saturatie pentru fiecare grup de benzi este fluxul de vehicule care poate fi preluat de grupul de benzi presupunand ca faza cu drept de acces pentru grupul respective (culoarea verde) dureaza 100% din timp (g/C=1). [2]
[2] (2.2.5.1)
,unde [2] :
s este debitul de saturatie pentru un grup de benzi (veh/ora); [2]
este debitul de saturatie de baza pe banda (veh et/ora); [2]
N este numarul de benzi din grupul de benzi; [2]
este factorul de ajustare pentru latimea benzilor; [2]
este factorul de ajustare pentru procentul de vehicule grele; [2]
este factorul de ajustare pentru declivitatea accesului; [2]
este factorul de ajustare pentru numarul manevrelor de parcare; [2]
este factorul de ajustare pentru numarul de opriri ale autobuzelor; [2]
este factorul de ajustare pentru zona in care se afla intersectia; [2]
este factorul de ajustare pentru utilizarea benzilor; [2]
este factorul de ajustare pentru virajele la stanga din grupul de benzi; [2]
este factorul de ajustare pentru virajele la dreapta din grupul de benzi; [2]
este factorul de ajustare pentru virajul la stanga datorat pietonilor; [2]
este factorul de ajustare pentru virajul la dreapta datorat pietonilor. [2]
2) Valoarea debitului de saturație de baza pe banda () se alege între 1850-1900 veh/h. Aceasta valoare va fi corectată ulterior în urma efecturaii calculelor ce urmeaza. [2]
4)Factorul de ajustare pentru lațimea benzii ( reprezinta impactul negativ pe care îl au benzile înguste asupra debitului de saturație al unui grup de benzi. Acesta are urmatoarea formula: [2]
(2.2.5.2)
W ≥ 2.4 m
,unde : W – reprezinta lătimea benzilor pentru grupul respectiv ; [2]
Dacă W ≥ 4.8 m este indicat ca banda respectiva să fie impărțită în doua benzi mai mici, astfel rezultand într-un debit de saturatie mai mare , deoarece se modifica N. [2]
5) Factorul de ajustare pentru procentul de vehicule grele ( ) reprezintă impactul negativ pe care îl au vehiculele grele (de exemplu : camioane , autobuze, utilaje,etc.) asupra traficului, datorită necesitătii asigurării unui spatiu mult mai mare pentru deplasare , timpului mult mai greu de manevrare, etc. Pentru ca un vehicul șă fie considerat un vehicul greu trebuie să aibă mai mult de 4 pneuri (roți) care ating partea carosabilă. Echivalentul unui vehicul greu în vehicule etalon pentru verificarea capacității de circulație se face cu ajutorul coeficientului ET = 2 vet/HV. [2]
Pentru determinarea factorului de ajustare pentru procentul de vehicule grele se folosește formula: [2]
(2.2.5.3)
,unde: %HV – procentul de vehicule grele din grupul de benzi. [2]
6) Factorul de ajustare pentru declivitate () reprezintă impactul negativ pe care îl are înclinația terenului asupra vehiculelor .Are urmatoarea formula: [2]
(2.2.5.4)
,unde: %G – declivitatea terenului. [2]
Declivitatea terenului negativă se consideră la coborare, iar cea pozitivă se consideră la urcare. [2]
7) Factorul de ajustare pentru parcare reprezintă impactul negativ pe care îl are prezența parcărilor laterale în grupurile respective de benzi asupra fluxului de saturatie .Acesta are urmatoarea formulă: [2]
, (2.2.5.5)
,unde : N – reprezintă numărul de benzi din grup; [2]
– reprezintă numărul de manevre de parcare efectuate într-o ora , [2]
O manevră de parcare duce în medie la o întârziere , de 18 secunde. [2]
Se accepta maxim 180 de manevre de parcare. [2]
În cazul în care nu avem zona de parcare , = 1 . [2]
8)Factorul de ajustare pentru opririle autobuzelor ( reprezintă impactul negativ care-l au stațiile de autobuz asupra debitului de saturație, excluzând cazul în care sunt amenajate alveole ( buzunare pentru orpirile autobuzelor). S-a estimat că fiecare autobuz duce la o întarziere de 14,4 secunde pentru fiecare ciclu de semaforizare. Numărul de opriri ale autobuzelor nu trebuie să depaseasca 250 într-o ora. Factorul de ajustare pentru opririle autobuzelor are următoarea formulă: [2]
(2.2.5.6)
,unde: N- reprezintă numărul de benzi din grupul respectiv; [2]
-reprezină numărul de opriri ale autobuzelor într-o ora. [2]
9)Factorul de ajustare pentru tipul zonei ( reprezintă impactul negativ pe care-l au zonele populate asupra debitului de saturație. Acesta ia urmatoarele valori: [2]
10)Factorul de ajustare pentru utilizarea benzilor ( reprezintă impactul negativ pe care îl are distribuția inegala a traficului pe benzile de circulatie. Acesta are urmatoarea formula: [2]
(2.2.5.7)
,unde : – reprezintă volumul de vehicule neajust al grupului de benzi (veh/h); [2]
– reprezintă volumul de vehicule neajusta al grupului de benzi (veh/h); [2]
N – reprezintă numarul de benzi din grupul respective. [2]
Dacă distributia pe benzi este uniforma , se poate considera . [2]
11)Factorul de ajustare pentru virajul de stânga ( reprezintă impactul negativ pe care îl au virajele de stânga a vehiculelor. Există mai mulți factori ce influențeaza virajele de stânga a vehiculelor, de exemplu: [2]
Tipul benzilor : dacă sunt simple (doar viraj la stanga) sau mixte ( dacă permit atât virajul la stânga , cât și alt tip de deplasare a vehiculelor (înainte, de dreapta));
Vehiculele care virează la stânga;
Conflictul dintre vehiculele care virează la stânga și alte vehicule care vin de pe alte benzi , pietoni , bicicliști,etc. Dacă există faze de semaforizare nu ar trebui să existe conflicte în trafic.;
Dacă faza de semaforizare nu este aleasă corect ( de exemplu se aleg grupuri de benzi care intră în conflict , adică le este permisă trecerea simultană prin intersecție a doua grupuri de benzi la culoarea verde a semafoarelor care intră in conflict și duc la producerea de coliziuni între vehicule).
Formula corespunzatoare factorului de ajustare pentru virajul la stanga ( se ia din tabelul urmator: [2]
Tabel 2.2.5.1 . Factorului de ajustare pentru virajul la stânga (
,unde reprezintă proporția de vehicule grele care virează la stanga și are urmatoarea formula: [2]
(2.2.5.7)
,unde: – reprezintă volumul de vehicule care virează la stânga; [2]
– reprezintă suma volumelor de vehicule din grupul respectiv. [2]
Dacă nu există viraj la stanga factorului de ajustare pentru virajul la stanga ( este 1. [2]
11)Factorul de ajustare pentru virajul de dreapta ( reprezintă impactul negativ pe care îl au vehiculele care virează la dreapta asupra debitului de saturație. Există mai mulți factori ce influențează virajele de dreapta a vehiculelor, precum: [2]
Tipul benzilor : dacă sunt simple (doar viraj la dreapta) sau mixte ( dacă permit atât virajul la stânga , cât și alt tip de deplasare a vehiculelor (înainte, de stânga));
Vehiculele care virează la dreapta;
Conflictul dintre vehiculele care virează la dreapta și alte vehicule care vin de pe alte benzi , pietoni , bicicliști,etc. Dacă există faze de semaforizare nu ar trebui să existe conflicte în trafic.;
Dacă faza de semaforizare nu este aleasa corect ( de exemplu se aleg grupuri de benzi care intră în conflict , adică le este permisă trecerea simultană prin intersecție a doua grupuri de benzi la culoarea verde a semafoarelor care intră in conflict.
Formula corespunzătoare factorului de ajustare pentru virajul la stânga ( se ia conform relațiilor următoare: [2]
(2.2.5.8)(2.2.5.9)
,unde reprezintă proporția de vehicule care vireaza la dreapta si , are urmatoarea formula: [2]
(2.2.5.10)
,unde : – reprezintă volumul de vehicule care virează la dreapta [2]
– reprezintă suma volumelor de vehicule din grupul respectiv [2]
Dacă nu există viraj la stânga factorului de ajustare pentru virajul la dreapta ( este 1.
12)Factorul de ajustare pentru impactul pietonilor asupra virajelor ( reprezintă impactul negativ pe care îl are traversările pietonilor asupra debitului de saturație. S-au stabilit urmatoarele valori pentru factorul de ajustare al impactul pietonilor asupra virajelor: [2]
Tabel 2.2.5.2. Alegerea factorul de ajustare pentru impactul pietonilor asupra virajelor
B.Determinarea elementelor semaforizării
Reprezintă etapa ce trebuie efectuată pentru a optimiza traficul din intersecția semaforizată. În această etapa grupurile de benzi sunt împarțite în mai multe faze de semaforizare , care au propriile intervale de timp.
Spre deosebire de subcapitolul anterior de verificarea a traficului dintr-o intersecție
semaforizată , subcapitolul current este prevazut cu o etapa de determinare a elementelor semaforizării care trebuie parcursă înainte de a determina nivelului de serviciu pentru întarzierile de control obținute.
Elementele de semaforizare constau în: [2]
1)Alegerea fazelor de semaforizare;
2)Determinarea intervalelor de schimb și de protecție a fazelor (timpul de galben + timpul de roșu); [2]
3)Determinarea timpilor minimi necesari pentru traversarea pietonilor; [2]
4)Determinarea grupurilor critice pe benzi; [2]
5)Determinarea lungimii ciclului de semaforizare(timp de roșu +timp de galben +timp de verde); [2]
6)Determinarea lungimii fazelor de semaforizare. [2]
1)Alegerea fazelor de semaforizare constă în împărțirea grupurilor de benzi în mai multe faze de semaforizare astfel încat să se evite conflictele în trafic dintre vehicule ce aparțin unor grupuri de benzi diferite, dintre vehicule din grupuri de benzi și pietoni ,etc.
Dacă într-o intersecție exista mai mult de trei faze de semaforizare , fazele au denumirea de faze multiple. [2]
2)Determinarea intervalelor de schimb și protecție a fazelor (timpul de galben + timpul de roșu) (L).Are următoare formulă : [2]
(2.2.5.11)
,unde : – reprezintă lungimea intervalului de schimb (timpul pierdut) pentru o faza de semaforizare; [2]
– reprezintă timpul de galben stabilit pentru o fază de semaforizare (secunde); [2]
– reprezintă timpul de roșu stabilit pentru o fază de semaforizare (secunde); [2]
t -reprezintă timpul de reacție necesar unui vehicul ( se presupune a fi o secundă); [2]
V -reprezintă viteza de circulație pe brațele de acces în intersecție ( m/s); [2]
a -reprezintă declarația vehiculelor ( se considera a fi egala cu 3 m/); [2]
g -reprezintă accelerația gravitațională ( care este egală cu 9.81 m/); [2]
G -reprezintă declivitatea terenului, având valoare pozitivă la urcare și valoare negative la coborâre (%);[2]
l -reprezintă lungimea medie a unui vehicul (m); [2]
w -reprezintă lățimea intersecției care trebuie traversată (m). [2]
3) Determinarea timpilor minimi necesari traversării pietonilor () .
În cazul în care > 3 , timpii minimi necesari traversării pietonilor () se determină cu următoarea formulă: [2]
(2.2.5.12)
În cazul în care ≤ 3 , timpii minimi necesari traversării pietonilor () se determină cu următoarea formulă: [2]
(2.2.5.13)
,unde: -reprezintă timpii minimi necesari traversării pietonilor (s); [2]
L -reprezintă lungimea trecerii de pietoni (m); [2]
-reprezintă viteza medie a pietonilor (se consideră a fi egala cu 1.2m/s); [2]
-reprezintă lățimea trecerii de pietoni (m); [2]
-reprezintă timpul de pornire pentru fiecare pietoni, care se ia 3,2 s; [2]
-reprezintă numarul de pietoni care traversează într-un interval de timp . [2]
Pentru traversarea pietonilor se asigură doi timpi: [2]
a)Timpul de verde , care reprezintă timpul de verde destinat pietonilor pentru a traversa ( se alege între 4 și 7 secunde).
b)Timpul de siguranță (verde intermittent ), reprezintă timpul în care un pieton traversează trecerea de pietoni.
4)Grupurile critice de benzi reprezintă maximul dintre toate rapoartele critice ( rapoartele dintre debitele de saturație și capacitățile pentru toate grupurile de benzi). [2]
Grupul critic al unei faze reprezintă grupul cu valoarea cea mai mare dintr-o fază de semaforizare. Acestuia o să i se atribuie un timp de verde mai mare decat la celelalte grupuri din faza respectivă. [2]
5) Determinarea lungimii ciclului de semaforizare(timp de roșu +timp de galben +timp de verde) (C) .Are următoarea formulă: [2]
(2.2.5.14)
,unde: C – reprezintă lungimea ciclului de semaforizare; [2]
L – reprezintă timpul pierdut pe o fază de semaforizare (timp de galben+timpul de roșu); [2]
–reprezintă suma rapoartelor volum neajustat și debit de saturație pentru grupurile critice ; [2]
Într-o fază pentru ca un grup să fie critic ,trebuie să aibă valoarea cea mai mare dintre toate celelalte grupuri. Dacă există grupuri cu valori ale lui egale se face suma lor , conform formulei : [2]
(2.2.5.15)
6)Determinarea lungimii fazelor de semaforizare (. Are următoarea formulă: [2]
(2.2.5.16)
,unde : – reprezintă lungimea fazelor de semaforizare; [2]
– reprezintă suma rapoartelor volum neajustat și debit de saturație pentru grupurile critice ; [2]
–reprezintă lungimea ciclului de semaforizare maximă calculată la punctul anterior. [2]
C.Determinarea nivelului de serviciu pentru întarzierile de control obținute.
Nivelul de serviciu reprezintă un calificativ obținut în urma determinării întarzierilor de control pentru fiecare grup de benzi. Pentru aceasta trebuie efectuate următoarele calcule: [2]
1)Determinarea capacității de circulatie pentru grupul de benzi respectiv;
2)Determinarea raportului volum de vehicule neajustat pentru grupul de benzi respectiv – capacitate de circulatie pentru grupul de benzi respectiv (;
3)Calculul întarzierilor de control;
4)Afișarea nivelului de serviciu.
Determinarea capacității de circulatie pentru grupul de benzi respectiv se determina pentru fiecare grup de benzi în parte si reprezintă debitul de vehicule maxim care poate să treacă prin intersecție într-o ora .Se calculează cu urmatoarea formulă: [2]
(2.2.5.17)
,unde : – reprezintă capacitatea de circulație pentru grupul de benzi i; [2]
– reprezintă volumul de saturație pentru grupul de benzi i; [2]
– reprezintă raportul dintre timpul de verde ajustat calculate în etapa anterioară și lungimea efectivă a ciclului (timpul total de roșu , galben și verde ) pentru grupul de benzi I calculate în etapa anterioară . [2]
2)Determinarea raportului volum de vehicule neajustat pentru grupul de benzi respectiv – capacitate de circulatie pentru grupul de benzi respectiv ( se calculeaza pentru fiecare grup de benzi în parte și ne ajută să determinăm daca avem un trafic redus sau nu în intersecție la ora respective .Are urmatoarea formulă: [2]
(2.2.5.18)
,unde : -reprezintă raportul debit-capacitate pentru grupul de benzi i; [2]
–reprezintă debitul de saturație pentru grupul de benzi i; [2]
– reprezintă raportul dintre timpul de verde ajustat calculate în etapa anterioară și lungimea efectivă a ciclului (timpul total de roșu , galben și verde ) pentru grupul de benzi I calculate în etapa anterioară . [2]
Daca voalorile lui (v/c) sunt aproximativ egale cu 0 , înseamnă că în intersecție traficul este redus; [2]
Daca voalorile lui (v/c) sunt aproximativ egale cu 1, înseamnă că în intersecție traficul a ajuns aproape la capacitate maximă. [2]
3)Calculul întarzierilor de control ne ajută la determinarea nivelului de serviciu. Trebuie effectuate urmatoarele calcule: [2]
a)Determinarea întarzierilor uniforme; [2]
b)Determinarea factorului de progresie; [2]
c)Determinarea întarzierilor incrementale; [2]
d)Determinarea întarzierilor inițiale din cozile de așteptare; [2]
e)Determinarea întarzierilor de control; [2]
f)Agregarea întarzierilor. [2]
a)Determinarea întarzierilor uniforme () .Are următoare formula: [2]
(2.2.5.19)
,unde : -reprezintă întarzierilor uniforme pentru grupul de benzi i; [2]
-reprezintă raportul debit-capacitate pentru grupul de benzi i; [2]
–reprezintă debitul de saturație pentru grupul de benzi i; [2]
– reprezintă raportul dintre timpul de verde ajustat calculate în etapa anterioară și lungimea efectivă a ciclului (timpul total de roșu , galben și verde ) pentru grupul de benzi I calculate în etapa anterioară . [2]
b)Determinarea factorului de progresie ( . Are urmatoarea formulă: [2]
(2.2.5.20)
,unde : – reprezintă factorul de progresie pentru grupul de benzi i; [2]
– reprezintă numarul de vehicule care ajung în intersecție pe durata luminii verzi; [2]
– reprezintă raportul dintre timpul de verde ajustat calculate în etapa anterioară și lungimea efectivă a ciclului (timpul total de roșu , galben și verde ) pentru grupul de benzi I calculate în etapa anterioară . [2]
c)Determinarea întarzierilor incrementale () .Are urmatoarea formula: [2]
(2.2.5.21)
,unde : T – reprezintă perioada de analiză în ore ; [2]
-reprezintă raportul debit-capacitate pentru grupul de benzi i; [2]
– reprezintă capacitatea de circulație pentru grupul de benzi i. [2]
d)Determinarea întarzierilor inițiale din cozile de așteptare ().Pentru determinarea acestei valori trebuie să se cunoască valorile cozilor de așteptare inițiale (), masurată în număr de vehicule. [2]
În cazul în care ,atunci: [2]
În cazul în care și 1 , atunci întarzierilor inițiale din cozile de așteptare () are următoarea formulă: [2]
(2.2.5.22)
, unde: u are urmatoarea formulă: [2]
(2.2.5.23)
În cazul în care și 1, atunci întarzierilor inițiale din cozile de așteptare () are următoarea formulă: [2]
(2.2.5.24)
,unde : – reprezintă capacitatea de circulație pentru grupul de benzi i; [2]
-reprezintă raportul debit-capacitate pentru grupul de benzi i; [2]
-reprezintă cozile de așteptare inițiale. [2]
e)Determinarea întarzierilor de control .Are următoarea formulă: [2]
(2.2.5.25)
,unde : –reprezintă întarzierile uniforme pentru grupul de benzi i; [2]
– reprezintă factorul de progresie pentru grupul de benzi i; [2]
– reprezintă întarzierile incrementale pentru grupul de benzi i; [2]
– reprezintă întarzierilor inițiale din cozile de așteptare. [2]
g)Agregarea întârzierilor.Ne ajută la determinarea timpului necesar vehiculelor pe fiecare grup de benzi de a pătrunde în intersecție (se măsoară în sec/veh).Reprezintă suma dintre produsele întarzierilor de control de pe fiecare grup de benzi și volumele neajustate pe fiecare grup de benzi raportată la o sumă de volume neajustate pe fiecare grup de benzi. În funcție de acesta se determină nivelul de serviciu. Are următoarea formulă: [2]
(2.2.5.26)
4)Afișarea nivelului de serviciu.
Nivelul de serviciu se ia în funcție de agregarea obținută. Calificativul obținut se ia din tabelul urmator: [2]
Tabel 2.2.5.3. Nivelul de serviciu.
3.Instrumente utilizate
3.1.Mediul de dezvoltare (IDE) Netbeans
Netbeans este o platformă de dezvoltare pentru aplicațiile software scrise cu ajutorul limbajului de progrmare Java. Aplicațiile sunt dezvoltate în mediului de dezvoltare integrat (IDE) ce aparține platformei Netbeans.
Acest mediu de dezvoltare integrat suportă și alte limbaje de programare , precum PHP(Hpertext Preprocesoor),C/C++,HTML(HperText Markup Language) și SQL (Structured Quer Language).
Platforma Netbeans este folosită pentru dezvoltarea aplicațiilor pe Desktop de tip Java Swing. Am folosit versiunea 8.0.2 a mediului de dezvoltare integrat IDE, care oferă posibilitatea utilizării unor servicii integrate in Netbeans , precum :
Managementul stocării informației (salvarea și incărcrea datelor); [5]
Utilizarea de librări (aplicații .jar integrate sau nu în Netbeans care le oferă programatorilor posibilitatea implementării acestora în propriile aplicații și reducerea timpului de lucru) , precum:
MySQL JDBC Driver – mysql-connector-java-5.1.23-bin.jar:
Este aplicația java ce ne permite conectarea la serverul MySQL ,pentru a accesa baza de date(mai multe detalii despre baza de date de tip MySQL v-or fi prezentate în unul din capitolele ce urmează);
JDK (Java Development Kit) ,versiunea 1.8 :
Este o formă de implementare a mai multor platforme de tip Java , dezvoltată de firma Oracle , în formă binară, dedicate dezvoltatorilor de aplicații Java. JDK conține o serie de unelte care ne ajută la dezvoltarea aplicațiilor Java. [6]
Exemple de unelte folosite pentru dezvoltarea aplicației sunt : [6]
javac – Compilatorul Java , care are rolul de a converti codul sursa in cod format din biți.
jar – program de împachetare a claselor realizate cu ajutorul mediului de dezvoltare integrat (IDE) într-un singur fișier de tip Jar. Acesta oferă posibilitatea accesării aplicației fără a fi nevoie să deschidem aplicația Netbeans;
jdb – Java debugger permite testarea aplicației, găsirea eventualelor erori și afisează poziția (linia de cod ) unde se găsesc aceste erori;
java- Această unealtă interpretează fișierele de tip .class generate de compilatorul javac.
Etc.
Fig.3.1.1 Utilizarea Platformei Java : JDK 1.8
JPanelSlider.jar:
Este aplicația Java ce ne permite adăugarea unui cursor ce ne poziționează automat între mai multe coordonate. Eu am folosit aplicația pentru a poziționa panourile separat ,cu scopul reducerii din spațiu pe ecran. Poziționarea cu ajutorul JPanelSlider se poate realiza atât pe orizontală cât și pe vertical.
Codul următor este folosit pentru a deplasa către stânga Panoul16 și pentru a-l afișa, În consecință Panoul9 este împins înafara ecranului de către Panoul16.
“ jPanelSlider1.nextPanel(5,jPanel16,jPanelSlider1.left); “
Fig. Fig.3.1.2 Exemplu de funcționare a JPanelSlider.jar
Fig.3.1.3.Librăriile folosite pentru realizarea proiectului
Utilizarea de unelte integrate pentru dezvoltarea de aplicații Java.În dezvoltarea aplicației am folosit următoarele unelte:
Crearea de forme de tip JFrame cu ajutorul interfeței grafice pentru utilizator (GUI) din platforma Swing în mediul de dezvoltare integrat (IDE) cu scopul realizării interfeței utilizator pentru aplicația de Fluidizare a Traficului.
De exemplu:
A)Alegerea platformei
B)Denumirea formei
C)Forma grafica creată
Fig.3.1.3 .A-C. Procesul de crearea a unei noi forme cu ajutorul platformei Swing GUI
Utilizarea bării de unelte pentru modelarea formelor create. Bara de unelte este utilă în crearea rapidă a interfeței grafice. Odată adaugată orice formă grafică din bara de unelte generează automat codul necesar implementarea acesteia.În figura următoare sunt prezentate principalele unelte folosite pentru crerea interfeței grafice :
Fig.3.1.4. Bara de unelte
De menționat că pentru realizarea aplicației am folosit următoarele unelte: Label (pentru afișarea de text,pentru a adăuga imagini de fundal, pentru afișarea de text din baza de date MySQL) ,TextField(pentru introducerea de text în baza de date și pentru afișarea lui ) , Button (pentru a adăuga evenimente odată cu declanșarea acestora, ce conțin codul cu operațiile realizate),ScrollBar (cursor care ne permite încapsularea în panouri de dimensiuni mici a cât mai multor forme grafice si poziționarea acestora),Panel(panouri care ne permit ordonarea, separarea formelor grafice în funcție de operațiile ce trebuie realizate),JPanelSlider (este un panou cu funție specifică(vezi informațiile prezentate anterior despre JpanelSlider)),Menu (am separat mai multe panouri in funcție de mai multe meniuri).
Utilizarea bării de proprietăți pentru modificarea rapidă a proprietăților formelor grafice.
Fig.3.1.5.Bara de unelte a unui obiect ales
Utilizarea bării de navigație pentru a sorta uneltele folosite în funcție de cum dorim să apară pe ecran și pentru acceare rapidă.
Fig.3.1.6.Bara de navigație a unui obiect ales
Implementarea rapidă a codului pentru formele grafice. De exemplu dacă dorim să adăugăm un eveniment unui buton putem da click dreapta pe el, accesăm meniul evenimente , alegem evenimentul dorit și îl accesăm.În Fig.3.8 se poate observa că am ales ca eveniment meniu Mouse ->MouseClicked care generează o funcție privată de tip void ce conține evenimentul : când dăm click pe butonul respectiv execută codul situat între acolade “{ }” (vezi Fig 3.9).
Fig.3.1.7.Accesarea rapidă a meniului Events->Mouse ->MouseClicked
Fig.3.1.8.Funcția generată de meniul Events->Mouse ->MouseClicked și codul introdus pentru butonul respectiv
Construirea fișierului .jar cu ajutorul constructorului din bara de meniuri la finalizarea aplicației (vezi Fig.3.10 și 3.11). Fișierul cu extensia .jar poate fi accesat dinafara mediului de dezvoltare Netbeans și poate fi distribuit altor dispositive ce au instalat programul software Java.
Fig.3.1.9.Construirea fișierului .jar pentru executarea aplicației înafara mediului de dezvoltare Netbeans
Fig.3.1.10. Fișierul .jar rezultat
3.2.MySQL
MySQL este un sistem relațional de management al bazelor de date disponibil pe majoritea sistemelor de operare. [7]
În principal este folosit în aplicațiile web ,dar și de alte medii de dezvoltare care suportă programarea Web ( de exemplu Netbeans).
Exemple de aplicații ce folosesc bazele de date de tip MySQL:WordPress, phpBB, MyBB, Drupal, Netbeans (ceea ne interesează pe noi), dar și de paginile web precum Facebook,Twitter,Youtube, etc. [7]
MySql a fost scris în limbajele de programare C și C++ . [7]
Componenta sa SQL este scrisă în yacc(Yet Another Compiler Compiler) .Este o aplicație software dedicată sistemul de operare Unix, care generează un process de căutare în cod pentru a găsi posibile greșeli gramaticale s-au de limbaj de programare. [8]
Pentru a lucra cu bazele de date MySQL este necesară instalarea unui server MySQL.Am optat pentru MySQL Community Server 5.7 care generează un server local pe Desktop.Acesta poate fi accesat din linie comandă (Command Prompt) sau prin intermediul a mai multor aplicații, precum: Netbeans, MySQL Administrator, etc ce sunt prevăzute cu o unitate grafică integrate (GUI) . În timpul instalării aplicației MySQL Community Server 5.7 trebuie setat un nume de utilizator și o parola care va fi necesară ori de câte ori se va dori pentru a se realiza conexiunea la server.
Fig.3.2.1. Interfața de instalare a aplicației MySQL Community Server 5.7
Pentru administrarea serverului MySQL se poate folosi aplicația MySQL Administrator. La deschiderea aplicației o să apară o fereastră care ne cere să introducem numele de utilizator și parola aleasă odată cu instalarea aplicației MySQL Community Server 5.7. MySQL Administrator conține o interfață grafică pentru utilizatori (GUI) ce permite interacțiunea cu serverul MySQL, accesând diferite meniuri , precum verificarea informației despre server, controlul serverului( de exemplu putem închide serverul , îl putem reporni , putem seta timpul de funcționare a serverului ,etc.),permite crearea de utilizatori la care li se atribuie anumite privilegii , se pot administra bazele de date , se pot salva local datele din bazele de date pentru a se evita perderile de date în cazul unei posibile erori a serverului , etc. O altă metodă mai puțin prietenoasă de administrare a serverului este prin interogari în linie comandă (Command promp), această metodă fiind indicată mai mult pentru utilizatorii sistemului de operare Linux .În figura de mai jos se pote observa interfața de administrare a bazei de date a aplicției MySQL Administrator.
Fig.3.2.2. Interfața aplicației MySQL Administrator.
Crearea bazelor de date și rolul acestora v-or fi prezentate în subcapitolul urmator.
3.3.Legătura Netbeans-MySQL
Mediul de dezvoltare (IDE) Netbeans oferă posibilitatea de a lucra cu servere de baze de date de tip Java DB, MySQL, Oracle și PostgreSQL prin intermediul interfeței Database (vezi Fig.3.14).
Database este o interfață grafică pentru utilizator (GUI) care ne permite implementarea operațiilor SQL , de a crea ,șterge,modifica, etc. tabele,coloane sau indici în baza de date direct din Netbeans.
Figura următoare reprezintă interfața grafică Database ce face lagătura între serverul local la care ne-am conectat cu ajutorul ajutorul mediului de dezvoltare integrat (IDE) Netbeans și baza de date creată:
Fig.3.3.1. Serverul local MySQL si baza de date
Pentru a realiza conexiunea dintre serverul MySQL local instalat pe calculator cu ajutorul aplicației MySQL Community Server 5.7 trebuie realizați urmatorii pași:
Pasul1 : Se dă click dreapta pe Database și se selectează opțiunea New Connecțion . Apoi se selectează din fereastra New Connection Wizard Driverul MySQL (Connector/J driver) , se descărcată aplicația MySQL_connector_java.jar de pe pagina Web a firmei Oracol , se selectează locația unde este situată și apoi se trece mai departe apăsând butonul Next.
Fig.3.3.2. Pasul 1: Alegerea aplicației ce realizeză conexiunea și a tipului de conexiune
Pasul 2: Odată ce apare fereastra Customize Connection trebuie completate urmatoarele informații, înainte de a crea conexiunea :
Fiind un server local în căsuța Host este completat cu : localhost;
Pentru a comunica între server și Netbeans se folosește protocolul de comunicare TCP 3306, ca urmare în căsuța Port trebuie introdusă valoarea :3306;
Baza de date fiind de tip MySQL , căsuța Database este completată cu : mysql
Numele de utilizator și parola sunt cele stabilite la instalarea serverului MySQL
JDBC URL: reprezină adresa de localizare a datelor din baza de date situată pe server. Acesta este generat automat.
Fig.3.3.3. Pasul 2 : Crearea conexiunii în Netbeans-Database și introducerea datelor necesare conectării la server
Pasul 3: Constă în crearea legăturii dintre mediul de dezvoltare Netbeans -Database și serverul MySQL prin alocarea locației serverului , cu privire la proprietățile adminului. Pentru a face acest lucru se accesează proprietățile conexiunii prin click dreapta -> Proprieties. Odată ce apare fereastra MySQL Server Proprieties se selectează meniul Admin Proprieties. În acest meniu se completează următoarele conform Fig 3.16. în funcție de locația unde a fost instalat serverul MySQL.
Fig.3.3.4. Pasul 3: Legătura dintre conexiunea creată în Netbeans și serverul local instalat pe Hard Disk
Pasul 4: Odată ce au fost completate datele prezentate la Pasul 3 , se pot crea baze de date folosind Interfața Database din Netbeans. Pentru a crea o bază de date se dă click dreapta pe Serverul MySQL din listă și se selectează Create Database.
Fig.3.3.5. Crearea unei baze de date
Interfața Database din Netbeans poate fi considerată ca fiind un sistem de gestiune a bazelor de date (SGBD) deoarece conține unelte necesare pentru crearea, interogarea ,actualizarea și ștergerea unei baze de date. După cum se poate observa în Fig 3.17 baza de date este formată din dosarele pentru fișiere : Tables, Views, Procedures , unde sunt create tabelele -> coloanele -> variabilele coloanelor respective , ferestre pentru vizualizarea datelor din baza de date și proceduri (operații ) cu baza de date respectivă. Pentru a crea o noua tabelă se selectează dosarul Tables , se dă click dreapta pe el și se poate selecta opțiunea Create Table pentru a crea noi tabele cu ajutorul interfeței utilizator sau se poate selecta opțiunea Execute Command pentru a crea tabele cu ajutorul limbajului structurat SQL.Se poate observa în Fig.3.18 procesul de creare a tabelelor în baza de date cu ajutorul interfeței pentru utilizator.
Fig.3.3.6. Crearea de tabele cu ajutorul SGBD Database din Netbeans
Procedurile și ferestrele de tip Views sunt create din linie comandă cu ajutorul limbajului SQL.
Pentru a vizualiza valorile înregistrate în tabelele bazei se dă click dreapta pe tabelă și se selectează opțiunea View Data . Aceasta afișează toate valorile din baza de date folosind comanda SQL: select * from tabelă .
Crearea tabelelor, coloanelor și al entitățiilor în baza de date cu ajutorul sistemului de gestiune a datelor Netbeans – Database se face după cum se poate observa în figura de mai sus. În fereastra Create Table se introduce un nume pentru Tabela dorită și se adaugă oricâte coloane se dorește a avea tabela. În fereastra Add Column se pot observa proprietățiile coloanelor ce sunt create . Aceste două ferestre permit crearea rapidă a componentelor bazei de date , spre deosebire dacă aceasta ar fi create direct din cod.
În figura de mai jos este prezentată structura desfășurată a unei baze de date cu ajutorul SGBD Database.
Fig.3.3.7. Structura desfășurată a unei baze de date cu ajutorul SGBD Database.
Pentru a realiza conexiunea la baza de date din aplicația Java trebuie realizată conexiunea la Serverul MySQL prin intermediul unor secvențe de cod Java și pentru a manipula informația din baza de date se folosesc comenzi SQL.
Următoarele linii de cod prezintă pe scurt cum este realizată conexiunea la baza de date din cu ajutorul limbajului Java:
Class.forName("com.mysql.jdbc.Driver"); // această linie de cod indică aplicația folosită de către Netbeans pentru a se conecta la serverul MySQL.
Connection con=DriverManager.getConnection ("jdbc:mysql://localhost:3306/semafoare?zeroDateTimeBehavior=convertToNull","root","Wweraw2010"); //această linie de cod declară o nouă variabilă con ce folosește informațiile stabilite la crearea conexiunii în interfața utilizator Database ( JDBC URL , username, parola) pentru a se conecta la serverul MySQl.
Statement stmt = con.createStatement(); // se declară o variabilă stmt care va fi folosită pentru a efectua interogări în baza de date.
ResultSet rs; // se declară variabila rs
rs = stmt.executeQuery("select `factorul_de_ajustare_pentru_latimea_benzi_grup1` from grup1_formule where(id=1) "); // variabila rs primește valoarea înregistrată de către variabila stmt din baza de date în urma interogării ei cu ajutorul limbajului SQL.
Se execute operații cu valorile înregistrate din baza de date.
…
Float factorul_de_ajustare_pentru_latimea_benzi_grup1 = b1; // se declară o variabilă de tipul celei calculate care să preia valoarea calculate b1
Connection conn2 = DriverManager.getConnection
("jdbc:mysql://localhost:3306/semafoare?zeroDateTimeBehavior=convertToNull","root","Wweraw2010"); //se declară o nouă variabilă conn2 ce folosește informațiile stabilite la crearea conexiunii în interfața utilizator Database ( JDBC URL , username, parola) pentru a se conecta la serverul MySQl.
Statement stmt2 = conn2.createStatement(); // se declară o variabilă stmt2 care va fi folosită pentru a înregistra valoarea calculată în baza de date.
String sql1 = "UPDATE grup1_formule SET factorul_de_ajustare_pentru_latimea_benzi_grup1= "+factorul_de_ajustare_pentru_latimea_benzi_grup1+""; // se declară o variabilă sql1 care primește codul SQL și valoare ce trebuie înregistrată în baza de date
stmt2.executeUpdate(sql1); // se execute înregistrarea valorii variabilei sql1 în baza de date cu ajutorul variabile stmt2 .
În figura de mai jos este ilustrat traseul datelor între Bază de date -> MySQL server -> Aplicație Java și invers.
Fig.3.3.8. Schema traseului datelor
După cum se poate observa în figura de mai sus serverul MySQL stă la baza aplicației , fără de care nu s-ar putea efectua transmiterea datelor.
Mai multe despre transmiterea datelor v-or fi prezentate in capitolul Studiu de caz
3.4.Unity 3D (C#)
Unity este un motor de dezvoltare pentru jocuri, disponibil pe majoritatea sistemelor de operare. Acesta oferă posibilitatea de a lucra cu un mediu de proiectare grafică , care permite crearea propriul aspect grafic (de exemplu: dacă se dorești crearea un joc cu mașini ,se poate importa sau să crea modele 2D/3D (assets) a unei mașini , a unui drum și se poate realiza un traseu pe care să-l urmeze mașina respectivă )și realizarea unor evenimente (acțiuni) ale modelelor (pentru exemplul anterior se poate realiza cinematica mișcării mașinii de-a lungul drumului) cu ajutorul următoarelor limbaje de programare orientat obiect: C# (C Sharp) și Java Script.
Fig. 3.4.1. Interfața grafică a aplicației Unit 3D
După cum se poate observa în figura de mai sus interfața aplicației este divizată în mai multe ferestre .Componenta principală reprezintă fereastra grafică formată din doua module : primul modul Scene , care constituie spațiul de lucru pentru proiectarea grafică a aplicației și cel de al doilea modul Game care afișează rezultatul aplicației în urma rulării programului (include partea grafică + cinematica realizată cu ajutorul scripturilor scrise cu ajutorul celor două limbaje menținute mai sus).
Primul modul de proiectare grafică constă în crearea sau importarea de modele 2D/3D ce interacționează între ele pentru a realiza un proiect dorit. Pentru a crea noi obiecte, se accesează meniul GameObject și se selectează tipul de obiect 2D/3D. Aplicația oferă și posibilitatea de a crea obiecte , precum : butoane , zone de text,zone pentru imagini ,etc. Pentru a oferi modelelor create un aspect cât mai realist Unity oferă posibilitatea atribuirii obiectelor cu materiale, în loc de paletele de colori standarde oferite de program .Aceste materiale sunt imagini realizate in aplicații de modelare specializate , precum : 3D Max, Blender,etc care pe urmă se pot fi atribuite obietelor respective.
Pentru a realiza aplicați de simulare a traficului pentru intersecția aleasă am lucrat cu o aplicație furnizată de firma Unity numită “Road and Traffic System”. Această aplicație conține o serie de unelte care ajută la crearea sistemelor de traffic .
Fig. 3.4.2. Meniul Traffic System
În figura de mai sus este prezentată În stânga-jos se pot observa dosarele ce conțin modele , scripturi și materialele, iar în partea de centru-jos sunt afișate modelele pentru obiectele conținute de dosarele respective. Pentru a adăuga un obiect în interfața grafică se ia cu mouseul obiectul dorit din dosar și se poziționează în interfața grafică.În partea din dreapta se poate observa fereastra pentru aplicația Traffic System, ce permite implementarea adăugarea rapidă a sistemelor de trafic, iar în stanga-sus este situată fereastra pentru lista de obiecte adăugate în interfața de proiectare.
În spatele acestei aplicații stau scripturi realizate cu ajutorul limbajului C# ce permit atribuirea cinematicii obietelor.
3.5.Legătura dintre Unity si Netbeans
Programul Unity furnizează serverului informații despre starea traficului (număr de vehicule pentru fiecare grup de benzi ) , care sunt preluate mai departe de către programul java. Programul java fluidizează traficul în funcție de numărul de vehicule și furnizează serverului un timp optimizat pentru sistemul de semaforizare , care va fi preluat și implementată în aplicația din Unity. Mai multe detalii depre aplicație v-or fi prezentate în capitolele ce urmează.
Fig. 3.5.1. Schema legăturii între mediile de dezvoltare Netbeans și Unity
În meniul principal al aplicației din mediul de dezvoltare Netbeans există un buton numit Simulare trafic , care face legătura dintre cele două aplicații . Pentru a realiza acest lucru am folosit o funcție de deschidere a fișierului executabil al simulatorului. (vezi Fig. 3.5.2)
Fig. 3.5.2. Codul necesar pentru crearea legăturii dintre Unity și Netbeans din interiorul aplicației Java
4.Studiu de caz
Scurtă prezentare a lucrării și a ceea ce se dorește a se realiza
Prima parte a aplicației constă în aplicația Java , ce constă într-o interfață utilizator pentru fluidizarea traficului dintr-o intersecție semaforizată aleasă.
Pentru a realizarea fluidizării traficului am realizat cele două etape indicate în normativul pentru interscție 600 intrat în vigoare începând cu anul 2010. În acest normativ scrie că pentru a realiza fluidizarea traficului este necesară parcurgerea a două etape :
Verificarea traficului unei intersectii semaforizate ;
Optimizarea timpului semafoarelor.
Mai multe informații despre cele două etape prevăzute în nornativ au fost prezentate în capitolul 2 .
Pentru implementarea acestor etape am folosit limbajul de programare Java și mediul de dezvoltare (IDE) Netbeans . V-oi încerca să descriu cum am realizat acest lucru în subcapitolul 4.1.1
A doua parte a aplicație constă în atribuirea interfeței cu o bază de date . Pentru aceasta am ales să lucrez cu Database , un sistem de gestiune a bazelor de date integrat în Netbeans, care mi-a permis să manipulez datele stocate în aceasta pentru a realiza fluidizare traficului.Corespondența datelor dintre Database și aplicația Java se face prin intermediul unui server local MySQl. Mai multe detalii despre baza de date creată și conținutul acesteia v-or fi prezentate în subcapitolul 4.1.2.
Ultima parte a aplicației constă în simularea traficului prin realizarea unui simultator pentru intersecția aleasă cu ajutorul aplicației Unity și a limbajului C#, care v-or prelua timpii determinați cu ajutorul aplicației Java pentru simularea semafoarelor. Acestea v-or fi prezentate în subcapitolul 4.1.3.
4.1. Ghid de funcționare și de utilizare a aplicației realizate
4.1.1. Ghid de funcționare și de utilizare a interfeței Java
Pentru a realiza interfața în Java am folosit mediul de dezvoltare Netbeans și a interfeței grafice integrate (GUI ) SWING . Am lucrat cu mai multe forme de tip cadru (JFrame Form) care sunt legate între ele prin intermediul unor butoane ce fac legătura între acestea .
Fig.4.1.1.1 Realizarea meniului principal
După cum se poate observa în figura de mai sus , meniul principal este format dintr-o formă ce conține următoarele obiecte : șase butoane (obiecte ce lucrează cu evenimente pentru a realiza diferite operații)și două Labele (etichete). Bara de unelte ce conține aceste obiecte se poate observa în figura Fig.3.1.5. Cele două etichete sunt folosite : unul pentru a seta imaginea de fundal care se poate observa , din meniul incon al etichtei , iar cea de a doua este folosită pentru a afișa textul ”Meniu” setat din bara de proprietăți a etichetei (vezi Fig.3.1.6). Butoanele conțin evenimente , care sunt activate odată cu apăsarea lor . Butoanele 1 și 2 din meniul principal fac legătura între două forme ce reprezintă etapele necesare pentru realizarea verificării și fluidizării traficului ( de exemplu codul Java implementat pentru butonul 1 ce face legătura cu forma din Fig 4.1.2 ), butonul simulare trafic deschide aplicația realizată cu ajutorul programului Unity (vezi Fig 3.5.2) , butonul Despre deschide o formă ce furnizează informații despre aplicație , butonul Manual deschide normativul pentru semafoare 600/2010 (codul este similar cu cel prezentat în Fig 3.5.2 , modificându-se doar fișierul ce trebuie deschis, iar butonul Ieșire folosește codul “System.exit(0)” pentru a inchide aplicația.
Fig 4.1.1.2.Trecerea de la meniul principal la etapa de verificare a traficului din intersecția aleasă
Fig 4.1.1.3.Etapa de verificare a stării traficului pentru intersecția din imagine
Forma intersecției pentru care am realizat verificarea stării traficului este cea din Fig.4.1.1.3 .Aceasta este o intersecție în formă de cruce formată din șase grupuri de benzi ,dintre care grupul 1 este format din banda 2 (având un singur sens de circulație , și anume înainte ) și banda 3 (fiind o banda mixta , ofera șoferilor posibilitatea unui viraj la dreapta sau de a continua sa mearga înainte), grupul 2 este similar cu grupul 1 , grupul 3 precum si grupul 4 permite șoferilor virajul doar la stânga , iar grupurile 5 si 6 sunt formate din câte două benzi mixte (o bandă mixta ce permite șoferilor să vireze la dreapta sau dea a merge înainte , pe când cealalta bandă mixtă ofera posibilitatea unui viraj la stânga în loc de cel de dreapta).
În partea din stânga a Fig.4.1.1.3 am introdus panouri pentru grupurilor de benzi. Panourile sunt formate din etichete în care se afișează informații rezultate în urma efecuării anumitor calcule (calcul procentaj de vehicule , determinarea benzii cele mai încărcate,afișarea direcției vehiculelor )pentru grupurile respective și căsuțe de text unde sunt introduse manual sau afișate debitele de vehicule ce trec prin intersecție la un interval de o oră.
În dreapta-jos am introdus panouri și etichete pentru afisarea calculelor efectuate conform normativului 600/2010 pentru semafoare (exemple de calcule efectuate : debitul de saturație pentru fiecare grup de benzi, calculul capacițătii intersecției , a întarzierilor pentru fiecare grup ,etc) și obținându-se un nivel de serviciu care poate fi considerat ca și un calificativ ( A – daca avem o intarziere mai mica decat 10 secunde/vehicul; B – daca avem o intarziere intre 10 – 20 sec/veh ; C – pentru 20- 35 sec/veh ; D – pentru 35-55; E – pentru 55 – 80 sec/veh si F – pentru intarzieri mai mari de 80 sec/veh). Informații despre nivelul de serviciu se pot găsi și în aplicație , apăsând pe panoul Nivel (vezi Fig.4.1.1.4 ).
Fig.4.1.1.4 Informații despre nivelul de serviciu
În partea de jos sunt situate butoanele , în spatele cărora stau operatiile .
Butonul pentru “Afișarea debitelor de trafic și direcțiile vehiculelor” afișează valorile înregistrate din baza de date ale debitelor de vehicule și afișează etichetele ce conțin imaginile cu direcțiile fiecărei benzi (vezi În Fig. 4.1.1.5). O secventă din codul pentru realizarea operațiilor menționate mai sus este prezentată în Anexa1.
Fig 4.1.1.5. Afișarea debitelor de traffic și a direcților vehiculelor
Butonul pentru “Indroducere debite de trafic“ preia valorile introduse în căsuțele de text și le înregistrează în baza de date (vezi În Fig. 4.1.1.6). O secventă din codul pentru realizarea operațiilor menționate mai sus este prezentată în Anexa2.
Fig 4.1.1.6. Introducerea și afișarea noilor debite de trafic
Butonul pentru “Calculul procentaj vehicule,determinarea benzii cele mai încărcate și calucul nr. total de vehicule “ realizează aceste operațiile descrise în denumirea butonului și le afișează pe ecran (vezi În Fig. 4.1.1.7). O secventă din codul pentru realizarea operațiilor menționate mai sus este prezentată în Anexa3.
Fig 4.1.1.7. Calculul procentaj vehicule,determinarea benzii cele mai încărcate și calucul numarul total de vehicule
Butonul pentru “Calculare și afișare rezultate“ realizează operațiile prevăzute de normativul pentru verificarea stării traficului din intersecție și le afișeaza în panoul din dreapta-jos (vezi Fig. 4.1.1.8 a-b). O secventă din codul pentru realizarea operațiilor menționate mai sus este prezentată în Anexa4.
Fig 4.1.1.8.a. Primele date calculate și afișate ale etapei de verificare a stării traficului
Fig 4.1.1.8.b. Restu de date calculate și afișate ale etapei de verificare a stării traficului
După cum se poate observa în figura de mai sus , am obținut un timp de întârziere foarte mare datorită numărului foarte mare de vehicule introduse. Acesta depășeste cu mult
Butonul pentru “Date suplimentare“ face legătura cu forma “DateSuplimentareVerificare“, ce conțin datele suplimentare necesare verificării stării traficului în intersecție.
Butonul “Clear“ elimină toate valorile afișate pe ecran pentru a putea efectua operațiile descrise mai sus pentru alte valori ale debitelor înregistrate.
Butonul “Reset“ oferă posibilitatea revenirii la valorile inițiale înregistrate în baza de date (vezi În Fig. 4.1.1.9 ) .
Fig. 4.1.1.9. Revenirea la valorile inițiale înregistrate în baza de date
Butonul “Manual formule“ afișează un panou ce conține pașii urmăriți și formulele folosite pentru realizarea etapei de verificare a stării traficului (vezi În Fig. 4.1.1.10 ).
Fig.4.1.1.10. Panoul ce conține manualul cu formule implementate în etapa curentă a aplicației
Ț
Fig.4.1.1.11. Panoul pentru datele suplimentare
Figura de mai sus reprezintă panoul pentru datele suplimentare necesare etapei de verificare a stării traficului. Acestea au fost prezentate în subcapitolul 2.2.4.
Codul folosit pentru introducerea și afisarea valorilor corespunzătoare acestui meniu este similar cu cel prezentat în Anexele 1 și 2.
Butoanele ce conțin imagini cu semnul întrebării afisează informații despre datele ce pot fi introduse sau afișate în căsuțele de text (vezi Fig.4.1.1.11).
Fig.4.1.1.11. Afișarea datelor curente din baza de date și folosirea butonului pentru afșarea
informației despre Echivalentul unui vehicul greu pentru grupul 1 de benzi.
Panoul “Date suplimentare“ permite introducerea și afișarea datelor pentru toate grupurile de benzi separat. Se poate schimba grupul de benzi prin accesarea meniurilor de mai sus (vezi Fig.4.1.1.12)
Fig.4.1.1.12. Afișarea datelor curente din baza de date și folosirea butonului pentru afșarea informației despre Factorul de ajustare pentru zona în care se află intersecția din grupul 5 de benzi.
A doua etapă a aplicatiei constă în optimizarea semafoarelor pentru a obtine un nivel de serviciu mai bun . Această etapa este similara cu prima , cu diferența că trebuie calculate elementele semaforizării înainte de a calcula nivelul de serviciu.
Se poate observa interfața pentru optimizara traficului în Fig 4.1.1.13. ,care este similară cu cea prezentată anterior , existând următoarele modificări:
Butonul “Calculare și afișare rezultate “ efectuează și operațiile pentru determinarea elementelor semaforizării. Secvența de cod pentru efectuarea acestor calcule se poate observa în Anexa5;
Panoul din dreapta-jos afișează și elementele semaforizării calculate (vezi Fig. 4.1.1.14.-4.1.1.16);
Manualul pentru formule conține informații despre calculul elementelor semaforizării. (vezi Fig. 4.1.1.17);
În calculul elementelor semaforizării intervin o serie de variabile , care pot fi introduse din forma “DateSuplimentareOptimizare” (vezi Fig.4.1.1.17).
Fig.4.1.1.13. Interfața pentru optimizarea traficului
Fig.4.1.1.14. Prima fereastră cu rezultatele afișate ale etapei de optimizare a traficului
Fig.4.1.1.15. A doua fereastră cu rezultatele afișate ale etapei de optimizare a traficului
Fig.4.1.1.16. Ultima fereastră cu rezultatele afișate ale etapei de optimizare a traficului
Fig.4.1.1.16. Fereastra cu formulele necesare realizării etapei de optimizare a traficului
Fig.4.1.1.17. Fereastra pentru introducerea și afișarea datelor suplimentare necesare optimizării traficului
Se poate observa în Fig 4.1.1.17. că după optimizarea traficului obținem un nivelul de serviciu mai bun spre deosebire de cel obținut din Fig. 4.1.1.9 , ceea ce sugerează traficul s-a fluidizat.
În urma calculării elementelor semaforizării se obține timpul pentru fiecare semafor ( roșu , galben și verde ) ce trebuie atribuit acestora pentru a fluidiza traficul. Acest timp va fi preluat de către simulatorul creat în Unity despre care v-oi discuta în subcapitolul 4.3.
4.1.2.Ghid de funcționare și de utilizare a aplicației Java -Database
Pentru a crea toate elementele conținute în baza de date am folosit sistemeul de gestiune a bazelor de date (SGBD ) Netbeans – Database , iar pentru administrarea ei am folosit MySQL Administrator.
Cum se crează o bază de date cu ajutorul Netbeans -Database se poate observa în Fig.3.3.6 prezentată anterior.
Pentru a explica cum funcționeză baza de date și cum poate fi utilizată v-oi folosi MySQL Administrator.
Structura bazei de date realizată se poate observa în Fig 4.1.2.1 prezentată mai jos. Entitățiile bazei de date au fost distribuite în tabele în funcție de operațiile pentru care sunt necesare.
Distribuția acestora a fost făcută după cum urmează:
Tabelele faza1, faza2, faza3 și faza4 conțin datele rezultate obținute în urma etapei de calculare a elementelor semaforizare pentru fiecare fază de semaforizare în parte prevăzute în aplicația Java;
Tabelele grup1, grup2, grup3, grup4, grup5 și grup6 conțin datele inițiale introduse în calcul efectuate pentru pentru fiecare grup de benzi al intersecției prevăzute în aplicația Java;
Tabelele grup1_formule, grup2_formule, grup3_formule, grup4_formule, grup5_formule și grup6_formule conțin datele rezultate în urma calculelor efectuate pentru fiecare grup de benzi al intersecției prevăzute în aplicația Java;
Tabela denumiri conține date inițiale comune tuturor grupurilor de benzi sau date calculate pentru toate grupurile de benzi.
Fig. 4.1.2.1 Schema tabelelor realizate în Netbeans – Database
Pentru a vizualiza , modifica , șterge entități dintr-o tabelă se accesează respective tabelă. Odată accesată tabela se afișează o fereastră cu entitățiile și proprietățiile respectivei tabele (vezi Fig. 4.1.2.2).
În figura de mai jos se pot observa entitățiile cu proprietățiile tabelei “faza1”.Această fereastră ne permite modificarea proprietățiilor entitățiilor ,ceea ce sistemul de gestiune Netbeans – Database nu ne permite.
Valorile entităților nu pot fi modificate din aplicația MySQL Administrator , decât din aplicația Java sau din Netbeans -Database dacă nu există constrângeri între tabele. În Fig.3.3.7 se poate observa fereastra din Netbeans – Database ce ne permite vizualizarea datelor înregistrate în baza de date pentru valorile entităților tabelei denumiri.
Fig. 4.1.2.2 Editorul pentru tabela faza1
Pentru a vizualiza o parte din codul SQL din spatele Netbeans – Database care a ajutat crearea bazei de date se poate observa în Anexa6 .
4.1.3. Ghid de funcționare și de utilizare a aplicației Unity
Aplicația realizată în Unity constă în simularea traficului pentru intersecția aleasă.
Pentru a realiza simularea traficului am folosit o aplicație furnizată de cei de la Unity , și anume Road and Traffic System , care mi-a permis să folosesc o serie de modele 3D integrate în aplicație pentru a construi intersecția aleasă și scripturi pentru realizarea cinematicii obiectelor.
Modelele 3D cu care am lucrat au fost : modele cu șase linii de benzi pe care le-am adaptat să corespundă numărului de benzi din intersecția aleasă ( cu cinci și patru linii de benzi), un model 3D pentru intersecție , modele 3D pentru semafoare , modele 3D pentru vehicule și modele 3D pentru nodurile de legătură .
În figura de mai jos se poate observa modelul 3D introdus în zona de proiectare grafică a aplicației. Acest obiect l-am folosit pentru a construii liniile de benzi. Se mai poate observa cele 6 puncte de pe suprafața obiectului , care simbolizează nodurile de legătură dintre mai multe modele 3D ce conțin noduri.Cele două colori ale nodurilor sunt folosite pentru a face diferențierea între direcțiile de circulație ale vehiculelor.
Fig. 4.1.3.1. Introducerea unui nou obiect în zona de proiectare grafică
Pentru un contrast mai bun al benzilor am folosit mai multe modele 3D. Între modele trebuie să existe legături , care să lege nodurile celor două modele între ele. Pentru a crea această legătură se folosesc două unelte și anume : “Anchor“ și “Edit“ simbolizate grafic printr-o ancoră și o cheie franceză (vezi Fig 4.1.3.2). Se amplasează cele două unelte pe modelele cărora dorim să cream legătura și se folosește opțiunea de atașare a nodurilor pe aceeași direcție din meniul Traffic System .
Fig. 4.1.3.2. Selectarea celor două obiecte pentru a crea legătură între nodurile acestora
În Fig. 4.1.3.3 se poate observa legătura create între cele două modele. Pe ambele direcții se pot observa că într-un capăt a legăturii se găsesc noduri ce au un contur alb în jurul lor și noduri ce nu au acel contur. Acest lucru indică direcția în care v-or merge vehiculele. Nodurile ce au conturi sunt nodurile de unde pleacă vehiculele, iar cele fără contur unde se îndreaptă. Direcția este stabilită la crearea legăturii prin marcarea modelului de unde pleacă vehiculul cu cheia franceză și destinația cu ancora. În cazul în care există multiple leg
Fig. 4.1.3.3. Crearea unei legături între douăobiecte
În cazul în care există trei modele ce trebuie legate între ele se procedează la fel , cu condiția de a nu încurca direcțiile. De exemplu se poate observa în Fig. 4.1.3.4 că a fost creată o legătură între cele trei modele și nu s-au modificat direcțiile.se puteau încurca direcțiile în cazul în care foloseam piesa din mijlod de două ori ca și punct de plecare (cheie franceză) .În cazul în care direcția este aleasă correct , toate nodurile ar trebui să aibă contur cu excepția celor din capătul unde dorim să ajungem.
Fig. 4.1.3.4.Crearea a două legături între trei obiecte
Pentru a crea intersecția am folosit un model de intersecție cu 24 de benzi , care l-am adaptat intersecției mele cu 18 benzi.Pentru a elimina cele 6 benzi am folosit modele pentru trotuare , care le-am suprapus peste intersecție.Rezultatul se poate observa în Fig 4.1.3.5.
Fig. 4.1.3.5.Crearea intersecției
Pentru a permite vehiculelor să vireze în intersecție am realizat rețele de noduri (vezi Fig. 4.1.3.6).Se poate observa că nodurile din centru desenate cu albastru reprezintă virajele ce străbat intersecția , pe când cele cu roz reprezintă virajele directe benzile alăturate. Traseul nodurilor a fost ales , astfel încât să se evite contactele din intersecție
Fig. 4.1.3.6.Rețele de noduri create pentru virajul vehiculelor în intersecție
Rețelele de noduri pentru intersecție au fost legate de nodurile celor 18 benzi și au fost completate și direcțiile de parcurgere înainte a vehiculelor prin intersecție (vezi Fig. 4.1.3.7). Astfel am realizat traseul vehiculelor prin intersecție .
Fig. 4.1.3.6. Traseul vehiculelor prin intersecție
Pentru o circulație a vehiculelor cât mai mare am folosit un număr mare de modele 3D pentru benzile de vehicule . Dimensiunea maximă a benzilor se poate observa în Fig. 4.1.3.7.
Fig. 4.1.3.7. Dimensiunea maximă a benzilor de circulație
Pentru a introduce vehicule benzilor am folosit două modele 3D furnizate de aplicația Road and Traffic System , și anume : un model de vehicul și un model pentru generarea acestuia (vezi Fig 4.1.3.9) .Generatorul de vehicule folosește un script realizat în C# ce generează un număr aleator de vehicule în nodurile de plecare setate. Se poate observa în bara de proprietăți că trebuie selectat nodul de plecare (Node2a) unde sunt generate vehiculele, precum și bara pentru setarea a șansei de a se genera vehicule în nodul respective, timpul de întârziere în cazul generării unor noi vehicule,etc.
Fig. 4.1.3.8. Generatorul de vehicule cu proprietățile acestuia și modelul vehicului generat.
Fig. 4.1.3.9. Sistemul de ghidare al vehiculului
Vehiculele generate dețin un sistem de ghidare , care le permite urmărirea traseului prevăzut de legăturile dintre noduri începând cu nodul unde a fost generat până la un nod destinație (fără contur). Acest sistem de ghidare oferă vehiculelor și posibilitatea de a încetinii în cazul în care întâlnește un alt vehicul sau de a opri pentru a acorda prioritate altor vehicule. Sistemul de ghidare folosește sisteme de referință pentru a determina distanța dintre noduri, dintre vehicule.
și pentru a-și da seama când să oprească la semafoare.
Pe fiecare bandă de circulație există semafoare care împiedică pătrunderea în intersecție a tuturor vehiculelor deodată. Semafoarele sunt împărțite în faze de semfaforizare ( cele stabilite în aplicația Java) , care grupează benzile pentru a controla accesul în intersecție. Se poate observa în Fig 4.1.3.9. că există două tipuri de semafoare : simple , ce permit parcurgerea în toate direcțiile indicate pe banda de circulație la lumina verde a semaforului și semafoare mixte formate din două semafoare ce restricționează vehiculelor de a vira doar în cazul în care ambele semafoare au culoarea verde.
Fig. 4.1.3.9. Sistem pentru semaforizare
Pentru a salva aplicația ca să ruleze independent de mediul de dezvoltare se accesează meniul File ->Build & Settings. Unity permite salvarea aplicației pentru mai multe pltforme.
Fig. 4.1.3.10. Construirea executabilului aplicației
Simulatorul realizat poate fi rulat din meniul aplicației Java apăsând butonul Simulare Trafic (vezi Fig.4.1.1.1) cu ajutorul codului prezentat în Fig 3.5.2. Unity generează automat înainte de a rula simulatorul o fereastră ce permite configurarea setărilor grafice pentru aplicației (vezi Fig. 4.1.3.11)
Fig. 4.1.3.11. Meniul pentru setările grafice ale simulatorului.
Fig. 4.1.3.11.Interfața grafică a simulatorului traficului pentru intersecția aleasă
În urma executării aplicației se pornește interfața grafică a simulatorului traficului pentru intersecția aleasă (vezi Fig 4.1.3.11).
Concluzii și contribuții
Ca și concluzii pot spune că am reușit să realizez ceea ce mi-am propus : o aplicație care să furnizeze o modalitatea eficientă de optimizare a traficului dintr-o intersectie semaforizata și să realizez un simulator pentru intersecția respectivă. Pe baza datelor furnizate se pot face diferite statistici pentru adaptarea timpului de așteptare în intersectie pentru ficare vehicul.
Contributii:
Dezvoltarea aplicatiei de fluidizarea a traficului;
Folosirea tehnologiei Java si MySQL Server pentru realizare aplicatii de fluidizare a traficului;
Implementarea algoritmilor din Normativul intersectiilor 600 din 2010 pentru verificare si de optimizare a traficului dintr-o intersectie semaforizata;
-Crearea unei interfete interactive cu utilizatorul ;
-Realizarea simulării traficului cu ajutorul tehnologiei Unity pentru intersecția aleasă.
Bibliografie:
[1]. Traffic Congestion, March 2008, http://en.wikipedia.org/wiki/Traffic_congestion
[2]. Normativ pentru intersecții 600/2010
[3]. Wikipedia , https://ro.wikipedia.org/wiki/SQL
[4]. Curs JAVA: Suport de curs-prof.univ.dr.Mariana Marinescu
[5]. Wikipedia ,https://en.wikipedia.org/wiki/NetBeans
[6]. Wikipedia , https://ro.wikipedia.org/wiki/Java_(limbaj_de_programare)
[7] Wikipedia , https://en.wikipedia.org/wiki/Java_Development_Kit
[8] Wikipedia , https://en.wikipedia.org/wiki/MySQL
[9] Wikipedia , https://en.wikipedia.org/wiki/Yacc
[10] Wikipedia , https://ro.wikipedia.org/wiki/Transport_în_București
[11] Wikipedia , https://ro.wikipedia.org/wiki/Transport_%C3%AEn_Bucure%C8%99ti
ANEXE
Cod sursă – secvențe de cod
Anexa1
//Afisarea debitul de vehicule pentru banda 2 înregistrat în baza de date
…
try
{
Class.forName("com.mysql.jdbc.Driver");
Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/semafoare?zeroDateTimeBehavior=convertToNull","root","Wweraw2010");
Statement stmt = con.createStatement();
ResultSet rs;
ResultSet rs1;
rs = stmt.executeQuery("select `volum_trafic_banda2_V2` from grup1 ");
int n=0;
while (rs.next()) {
String s= rs.getString("volum_trafic_banda2_V2");
jLabel5.setText(s);
jTextField1.setText(s);
System.out.println("s-a deconectat");
}
}
catch(Exception e)
{
JOptionPane.showMessageDialog(null, e.getMessage() ,"Error", 1);
}
…
Anexa 2
//Introducerea debitul de vehicule pentru banda 2 în baza de date
…
try
{ //STEP 2: Register JDBC driver
Class.forName("com.mysql.jdbc.Driver");
String volum_trafic_banda2_V2=jTextField1.getText();
//STEP 3: Open a connection
System.out.println("Connecting to a selected database…");
conn = DriverManager.getConnection(DB_URL, USER, PASS);
System.out.println("Connected database successfully…");
//STEP 4: Execute a query
System.out.println("Creating statement for grup1: volum_trafic_banda_2_V2…");
stmt = conn.createStatement();
String sql1 = "UPDATE grup1 SET volum_trafic_banda2_V2 = "+volum_trafic_banda2_V2+"";
stmt.executeUpdate(sql1);
// Now you can extract all the records
// to see the updated records
sql1 = "SELECT 'volum_trafic_banda2_V2' from grup1";
ResultSet rs = stmt.executeQuery(sql1);
while(rs.next()){
//Retrieve by column name
volum_trafic_banda2_V2 = rs.getString("volum_trafic_banda2_V2");
//Display Values
System.out.println("Volum trafic:"+ volum_trafic_banda2_V2);
}
rs.close();
}catch(SQLException se){
//Handle errors for JDBC
se.printStackTrace();
}catch(Exception e){
//Handle errors for Class.forName
e.printStackTrace();
}
…
Anexa3
//Secvența de cod pentru determinarea benzii cele mai încărcate
…
Float largest = Math.max(b1, Math.max(b2, Math.max(b3, Math.max(b4, Math.max(b5,Math.max(b6, Math.max(b7, Math.max(b8, Math.max(b9, b10)))))))));
System.out.println("Maximul este"+""+largest+"");
if(Math.abs(b1 – largest)< 0.00000001)
{ jLabel5.setBackground(Color.GREEN);
System.out.println("S-a colorat banda cu cele mai multe vehicule"+Math.abs(b1 = largest)+"");
}
if(Math.abs(b2 – largest)< 0.00000001)
{ jLabel6.setBackground(Color.GREEN);
System.out.println("S-a colorat banda cu cele mai multe vehicule"+Math.abs(b2 = largest)+"");
}
if(Math.abs(b3 – largest)< 0.00000001)
{ jLabel13.setBackground(Color.GREEN);
System.out.println("S-a colorat banda cu cele mai multe vehicule"+Math.abs(b3 = largest)+"");
}
if(Math.abs(b4 – largest)< 0.00000001)
{ jLabel14.setBackground(Color.GREEN);
System.out.println("S-a colorat banda cu cele mai multe vehicule"+Math.abs(b4 = largest)+"");
}
if(Math.abs(b5 – largest)< 0.00000001)
{ jLabel21.setBackground(Color.GREEN);
System.out.println("S-a colorat banda cu cele mai multe vehicule"+Math.abs(b5 = largest)+"");
}
if(Math.abs(b6 – largest)< 0.00000001)
{ jLabel25.setBackground(Color.GREEN);
System.out.println("S-a colorat banda cu cele mai multe vehicule"+Math.abs(b6 = largest)+"");
}
if(Math.abs(b7 – largest)< 0.00000001)
{ jLabel31.setBackground(Color.GREEN);
System.out.println("S-a colorat banda cu cele mai multe vehicule"+Math.abs(b7 = largest)+"");
}
if(Math.abs(b8 – largest)< 0.00000001)
{ jLabel32.setBackground(Color.GREEN);
System.out.println("S-a colorat banda cu cele mai multe vehicule"+Math.abs(b8 = largest)+"");
}
if(Math.abs(b9 – largest)< 0.00000001)
{ jLabel39.setBackground(Color.GREEN);
System.out.println("S-a colorat banda cu cele mai multe vehicule"+Math.abs(b9 = largest)+"");
}
if(Math.abs(b10 – largest)< 0.00000001)
{ jLabel40.setBackground(Color.GREEN);
System.out.println("S-a colorat banda cu cele mai multe vehicule"+Math.abs(b10 = largest)+"");
}
…
Anexa4:
//Secvența de cod pentru calculul operațiilor de verificare a traficului pentru banda 2
…
b1 = (float) (1+(b2-3.5)/9); // calculul factorului de ajustare pentru latimea benzii(fW)
b3 = (float) (100/(100+(b4*(b5-1))));// calclul factorului de ajustare pentru procentul de vehicule grele (fHV)
b6 = (float) (1-(b7/200)); // calculul factorului de ajustare pentru declivitate(fg)
jLabel112.setText("…..");
b8=(float)((b9-0.1-(18*b10)/3600)/b9);// calculul factorului de ajustare pentru parcare(fp)
b11 = (float) ((b9-(14.4*b12)/3600)/b9);//calculul factorului de ajustare pentru opriri ale autobuzelor (fbb)
System.out.println(b1);
b13 = (float) (0.9); //factorului de ajustare pentru tipul de zona(fa)pentru zonele urbanizate
b14 = (float)(1.0); // factorul de ajustare pentru utilizarea benzilor (fLU) pentru o distributie a traficului uniforma
b18 = (float)(0.0);// procentului de vehicule care vireaza la stanga din grupul 1 de benzi (PLT)cand nu exista viraj la stanga
b17 = (float) (1.0); // factorului de ajustare pentru virajul de stanga pentru grupul 1 (fLT)cand nu exista viraj la stanga
b22 = (float) (b20/(b44+b43+b19));//calculul procentului de vehicule care vireaza la dreapta din grupul 1 de benzi (PRT)
b21 = (float) (1-(0.15*b22));// calculul factorului de ajustare pentru virajul de dreapta pentru grupul 1 (fRT)
b23 = (float) (1.0);//factorul_de_ajustare_impactul_pietonilor_virajstg_grup1
b24 = (float) (0.97);//factorul_de_ajustare_impactul_pietonilor_virajdr_grup1
b26 = (float)(b27*b9*b1*b3*b6*b8*b11*b13*b14*b17*b21*b23*b24); // calculul debitului de saturatie pentru debitul de vehicule din grup1
b28 = (float) (b26*(b29/b30));// calcul capacitatea de circulatie (c)
b31 = (float) (b15/b28);//calculul raportului debit/capacitate (v/c)
b32 = (float) ((0.5*b33*((1-(b29/b33))*(1-(b29/b33))))/(1-(Math.min(1, b31)*(b29/b33)))); //calculul intarzierii uniforme (DUi)
b34 = (float) ((1-b35)/(1-(b29/b33))); //calculul factorului de progresie (FPr)
b36 = (float) (900*b37*((b31-1)+Math.sqrt((b31-1)*(b31-1)+(4*b31)/(b28*b37))));//calculul intarzierii incrementale (Dli)
b31<=1 && b39 > 0){
b40 = (float) (1-((b28*b37)/b39)*(1-Math.min(1, b31)));
b38 = (float) ((1800*b39*(1+b40))/b28);//calcul intarzieri initiale de control de asteptare pentru grup 1
}
if(b31>1 && b39 >= 0){
b38 = (float) ((3600*b39)/b28);//calcul intarzieri initiale de control de asteptare pentru grup 1
}
float bn1=0;
if(b39.equals(bn1));
{
b38 = (float)(0.0);
}
float sum=0;
b41 = (float)(b32*b34+b36+b38);//calcul intarzieri de control pentru grup 1 (DCi)
b42 = (float)(sum+=(b41*b15)/b15); // agregare intarzieri (Dc)
…
Anexa 5
//Determinarea elementelor semaforizării
…
b45= (float) (b47+(b48)/(2*b49+b51*b7));//calculul timpului de galben (s)
b46= (float) ((b54+b52)/b48);//calculul timpului de rosu(s)
b53= (float) (b45+b46);// calculul lungimii intervalului de schimb corespunzator unei faze de semaforizare
if(b58>3){
b55= (float) (3.2+b59/b56+(0.81*b57/b58));//calculul timpilor minimi necesari traversarii pietonale
}
if(b58<=3){
b55= (float) (3.2+b59/b56+(0.27*b57/b58));//calculul timpilor minimi necesari traversarii pietonale
}
b61 = (float)(b25/b26);//raportul debit ,
System.out.println("b45:"+b45);
…
Anexa6
//Secventă de cod SQL pentru implementarea bazei de date
//Creare și inserare date în tabela denumiri
DROP TABLE IF EXISTS `denumiri`;
CREATE TABLE `denumiri` (
`id` int(11) NOT NULL,
`nr_total_vehicule` float DEFAULT NULL,
`nr_benzi_grup1` float DEFAULT '2',
`nr_benzi_grup2` float DEFAULT '2',
`nr_benzi_grup3` float DEFAULT '1',
`nr_benzi_grup4` float DEFAULT '1',
`nr_benzi_grup5` float DEFAULT '2',
`nr_benzi_grup6` float DEFAULT '2',
`volum_de_vehicule_neajustat_grup1` float DEFAULT '1',
`volum_de_vehicule_neajustat_grup2` float DEFAULT '1',
`volum_de_vehicule_neajustat_grup3` float DEFAULT '1',
`volum_de_vehicule_neajustat_grup4` float DEFAULT '1',
`volum_de_vehicule_neajustat_grup5` float DEFAULT '1',
`volum_de_vehicule_neajustat_grup6` float DEFAULT '1',
`banda_cea_mai_incarcata` float DEFAULT '1',
`agregarea_intarzierilor_grupuri` float DEFAULT '1',
`lungimea_ciclului_de_semaforizare` float DEFAULT '1',
`timpul_pierdut_timpul_galben_si_rosu_integral` float DEFAULT '5',
`suma_rapoarte_debit_volum` float DEFAULT '1',
`lungimea_ciclului_de_semaforizare_maxim` float DEFAULT '1',
`nivel_de_serviciu` varchar(1) DEFAULT 'A',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
–
– Dumping data for table `semafoare`.`denumiri`
–
/*!40000 ALTER TABLE `denumiri` DISABLE KEYS */;
INSERT INTO `denumiri` (`id`,`nr_total_vehicule`,`nr_benzi_grup1`,`nr_benzi_grup2`,`nr_benzi_grup3`,`nr_benzi_grup4`,`nr_benzi_grup5`,`nr_benzi_grup6`,`volum_de_vehicule_neajustat_grup1`,`volum_de_vehicule_neajustat_grup2`,`volum_de_vehicule_neajustat_grup3`,`volum_de_vehicule_neajustat_grup4`,`volum_de_vehicule_neajustat_grup5`,`volum_de_vehicule_neajustat_grup6`,`banda_cea_mai_incarcata`,`agregarea_intarzierilor_grupuri`,`lungimea_ciclului_de_semaforizare`,`timpul_pierdut_timpul_galben_si_rosu_integral`,`suma_rapoarte_debit_volum`,`lungimea_ciclului_de_semaforizare_maxim`,`nivel_de_serviciu`) VALUES
(1,2190,2,2,1,1,2,2,750,500,140,30,430,340,28.3105,72.1448,40.9662,5,0.69487,73.5138,'A');
/*!40000 ALTER TABLE `denumiri` ENABLE KEYS */;
–
– Table structure for table `semafoare`.`faza1`
–
//Creare și inserare date în tabela faza1
DROP TABLE IF EXISTS `faza1`;
CREATE TABLE `faza1` (
`id` int(11) NOT NULL DEFAULT '1',
`timpul_pentru_galben_faza1` float DEFAULT NULL,
`timpul_pentru_rosu_integral_faza1` float DEFAULT NULL,
`intervalul_de_schimb_a_fazelor_faza1` float DEFAULT NULL,
`timpi_minimi_necesari_traversarii_pietonilor_faza1` float DEFAULT NULL,
`lungimea_efectiva_a_trecerii_de_pietoni_faza1` float DEFAULT NULL,
`latimea_efectiva_a_trecerii_de_pietoni_faza1` float DEFAULT '1',
`vitezei_medie_a_pietonilor_faza1` float DEFAULT NULL,
`nr_pietonilor_care_traverseaza_intr_un_interval_faza1` float DEFAULT '1',
`raportul_volum_debit_faza1` float DEFAULT '1',
`corectarea_ciclului_de_semaforizare_faza1` float DEFAULT '1',
`debit_saturatie_corectat_faza1` float DEFAULT '1',
`ciclul_de_semaforizare_ales_faza1` float DEFAULT NULL,
`durata_fazelor_de_semaforizare_faza1` float DEFAULT '1',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
–
– Dumping data for table `semafoare`.`faza1`
–
–
– Table structure for table `semafoare`.`grup1`
–
//Creare și inserare date în tabela grup1
DROP TABLE IF EXISTS `grup1`;
CREATE TABLE `grup1` (
`id` int(11) NOT NULL DEFAULT '0',
`volum_trafic_banda2_V2` float DEFAULT NULL,
`volum_trafic_banda3_V3` float DEFAULT NULL,
`debit_procent_1` float DEFAULT NULL,
`debit_procent_2` float DEFAULT NULL,
`debit_de_saturatie_grup1` float DEFAULT NULL,
`latime_banda_grup1` float DEFAULT NULL,
`procent_vehicule_grele_grup1` float DEFAULT NULL,
`echivalentul_unui_vehicul_greu_grup1` float DEFAULT NULL,
`declivitatea_terenului_grup1` float DEFAULT NULL,
`nr_manevre_de_parcare_ora_grup1` float DEFAULT NULL,
`nr_de_opriri_ale_autobuzelor_grup1` float DEFAULT NULL,
`factorul_de_ajustare_pentru_zona_grup1` float DEFAULT NULL,
`timp_de_verde_grup1` float DEFAULT NULL,
`vehicule_care_ajung_in_intersectie_la_lumina_verde1` float DEFAULT NULL,
`timp_de_reactie_grup1` float DEFAULT NULL,
`declaratie_vehicule_grup1` float DEFAULT NULL,
`lungimea_vehicului_grup1` float DEFAULT '1',
`latimea_intersectiei_de_traversat_grup1` float DEFAULT '1',
`viteza_circulatie_pe_bratele_de_acces_in_intersectie_grup1` float DEFAULT '1',
`timpul_pierdut_faza_semaforizare_grup1` float DEFAULT '1',
`vitezei_medie_a_pietonilor_grup1` float DEFAULT '1',
`nr_pietonilor_care_traverseaza_intr_un_interval_grup1` float DEFAULT '1',
`latimea_efectiva_a_trecerii_de_pietoni_grup1` float DEFAULT '1',
`timpul_pierdut_timpul_galben_si_rosu_integral_grup1` float DEFAULT '1',
`ciclul_de_semaforizare_ales_grup1` float DEFAULT '1',
`ciclul_de_verde_efectiv_grup1` float DEFAULT '1',
`verde_pentru_fiecare_faza_grup1` float DEFAULT '1',
`proportia_de_vehicule_care_vireaza_stanga_grup1` float DEFAULT NULL,
`proportia_de_vehicule_care_vireaza_dreapta_grup1` float DEFAULT '1',
`lungimea_efectiva_a_ciclului_de_verde_grup1` float DEFAULT '120',
`lungimea_efectiva_a_ciclului_pentru_grup1` float DEFAULT '140',
`durata_de_analiza_grup1` float DEFAULT '1',
`cozi_de_asteptare_initiale_grup1` float DEFAULT '0',
`volum_trafic_banda3_V3_inainte` float DEFAULT '1',
`volum_trafic_banda3_V3_dreapta` float DEFAULT '1',
`acceleratia_gravitationala_grup1` float DEFAULT NULL,
`raportul_volum_debit_grup1` float DEFAULT '1',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
–
– Dumping data for table `semafoare`.`grup1`
–
/*!40000 ALTER TABLE `grup1` DISABLE KEYS */;
INSERT INTO `grup1` (`id`,`volum_trafic_banda2_V2`,`volum_trafic_banda3_V3`,`debit_procent_1`,`debit_procent_2`,`debit_de_saturatie_grup1`,`latime_banda_grup1`,`procent_vehicule_grele_grup1`,`echivalentul_unui_vehicul_greu_grup1`,`declivitatea_terenului_grup1`,`nr_manevre_de_parcare_ora_grup1`,`nr_de_opriri_ale_autobuzelor_grup1`,`factorul_de_ajustare_pentru_zona_grup1`,`timp_de_verde_grup1`,`vehicule_care_ajung_in_intersectie_la_lumina_verde1`,`timp_de_reactie_grup1`,`declaratie_vehicule_grup1`,`lungimea_vehicului_grup1`,`latimea_intersectiei_de_traversat_grup1`,`viteza_circulatie_pe_bratele_de_acces_in_intersectie_grup1`,`timpul_pierdut_faza_semaforizare_grup1`,`vitezei_medie_a_pietonilor_grup1`,`nr_pietonilor_care_traverseaza_intr_un_interval_grup1`,`latimea_efectiva_a_trecerii_de_pietoni_grup1`,`timpul_pierdut_timpul_galben_si_rosu_integral_grup1`,`ciclul_de_semaforizare_ales_grup1`,`ciclul_de_verde_efectiv_grup1`,`verde_pentru_fiecare_faza_grup1`,`proportia_de_vehicule_care_vireaza_stanga_grup1`,`proportia_de_vehicule_care_vireaza_dreapta_grup1`,`lungimea_efectiva_a_ciclului_de_verde_grup1`,`lungimea_efectiva_a_ciclului_pentru_grup1`,`durata_de_analiza_grup1`,`cozi_de_asteptare_initiale_grup1`,`volum_trafic_banda3_V3_inainte`,`volum_trafic_banda3_V3_dreapta`,`acceleratia_gravitationala_grup1`,`raportul_volum_debit_grup1`) VALUES
(1,620,130,28.3105,5.93607,1900,3.5,5,2,0,0,0,0.9,35,0.5,1,3,5,17,13.5,7,1.2,5,2.5,5,100,80,30,0,0.173333,120,140,1,0,65,65,9.81,0.256549);
/*!40000 ALTER TABLE `grup1` ENABLE KEYS */;
–
– Table structure for table `semafoare`.`grup1_formule`
–
//Creare și inserare date în tabela grup1_formule
DROP TABLE IF EXISTS `grup1_formule`;
CREATE TABLE `grup1_formule` (
`id` int(11) NOT NULL,
`factorul_de_ajustare_pentru_latimea_benzi_grup1` float DEFAULT NULL,
`factorul_de_ajustare_vehicule_grele_grup1` float DEFAULT NULL,
`factorul_de_ajustare_pentru_declivitate_grup1` float DEFAULT '1',
`factorul_de_ajustare_pentru_parcare_grup1` float DEFAULT '1',
`factorul_de_ajustare_pentru_opriri_ale_autobuzelor_grup1` float DEFAULT '1',
`factorul_de_ajustare_pentru_tipul_zonei_grup1` float DEFAULT NULL,
`factorul_de_ajustare_pentru_utilizarea_benzilor_grup1` float DEFAULT '1',
`factorul_de_ajustare_pentru_virajul_de_stanga_grup1` float DEFAULT NULL,
`factorul_de_ajustare_pentru_virajul_de_dreapta_grup1` float DEFAULT '1',
`factorul_de_ajustare_impactul_pietonilor_virajstg_grup1` float DEFAULT '1',
`factorul_de_ajustare_impactul_pietonilor_virajdr_grup1` float DEFAULT '1',
`debitul_de_saturatie_pentru_grup1` float DEFAULT '1',
`capacitatea_grup1` float DEFAULT '1',
`raportul_volum_capacitate_grup1` float DEFAULT '1',
`intarzieri_uniforme_grup1` float DEFAULT '1',
`factorul_de_progresie_grup1` float DEFAULT '1',
`intarzieri_incrementale_grup1` float DEFAULT '1',
`intarzieri_initiale_din_cozile_de_asteptare_grup1` float DEFAULT '1',
`valoare_u_grup1` float DEFAULT '1',
`intarzieri_de_control_grup1` float DEFAULT '1',
`agregarea_intarzierilor_grup1` float DEFAULT '1',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
–
– Dumping data for table `semafoare`.`grup1_formule`
–
/*!40000 ALTER TABLE `grup1_formule` DISABLE KEYS */;
INSERT INTO `grup1_formule` (`id`,`factorul_de_ajustare_pentru_latimea_benzi_grup1`,`factorul_de_ajustare_vehicule_grele_grup1`,`factorul_de_ajustare_pentru_declivitate_grup1`,`factorul_de_ajustare_pentru_parcare_grup1`,`factorul_de_ajustare_pentru_opriri_ale_autobuzelor_grup1`,`factorul_de_ajustare_pentru_tipul_zonei_grup1`,`factorul_de_ajustare_pentru_utilizarea_benzilor_grup1`,`factorul_de_ajustare_pentru_virajul_de_stanga_grup1`,`factorul_de_ajustare_pentru_virajul_de_dreapta_grup1`,`factorul_de_ajustare_impactul_pietonilor_virajstg_grup1`,`factorul_de_ajustare_impactul_pietonilor_virajdr_grup1`,`debitul_de_saturatie_pentru_grup1`,`capacitatea_grup1`,`raportul_volum_capacitate_grup1`,`intarzieri_uniforme_grup1`,`factorul_de_progresie_grup1`,`intarzieri_incrementale_grup1`,`intarzieri_initiale_din_cozile_de_asteptare_grup1`,`valoare_u_grup1`,`intarzieri_de_control_grup1`,`agregarea_intarzierilor_grup1`) VALUES
(1,1,0.952381,1,0.95,1,0.9,1,1,0.974,1,0.97,2923.42,852.664,0.879596,50.4742,0.666667,14.4575,0,1,48.107,48.107);
/*!40000 ALTER TABLE `grup1_formule` ENABLE KEYS */;
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: Lucrare de licență [307771] (ID: 307771)
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.
