Algoritmi genetici paraleli. Implementari Java. Continut laborator: 1. Obiectivul lucrarii. 2. Notiuni teoretice: 3. Cerinte laborator. 4. Tema. 1. Ob

Documente similare
Procesarea de imagini folosind programarea paralela. Implementari Java. Continut laborator: 1. Obiectivul lucrarii. 2. Notiuni teoretice: 3. Cerinte l

Nr. 932 din Avizat ISJ Vâlcea, Inspector școlar informatică, Ciochină Luisa EXAMEN DE ATESTARE A COMPETENȚELOR PROFESIONALE A ABSOLVENȚILOR

Diapositive 1

Microsoft Word _POO_Lab_1_Modificari_v01.htm

E_d_Informatica_sp_MI_2015_bar_02_LRO

2.1.Tipul tablou unidimensional

Probleme rezolvate informatica: Probleme rezolvate grafuri si a

Ministerul Educatiei, Cercetarii si Tineretului Grup Scolar Gh. Asachi Galati Proiect pentru obtinerea certificatului de competente profesionale Speci

1 Lucrarea nr. 8 - Structuri de date de tip liste sortate O listă sortată reprezintă un aranjament al înregistrărilor din cadrul listei în funcţie de

Grafuri neorinetate Aplicatii 1 Care este numărul maxim de componente conexe pe care le poate avea un graf neorientat cu 20 noduri şi 12 muchii? a. 6

Microsoft PowerPoint - Curs_TPI_22_v01.ppt

Subiectul 1

Laborator 3

Laborator 9: Fire de execuţie Întocmit de: Adina Neculai Îndrumător: Asist. Drd. Gabriel Danciu 20 noiembrie 2011

Laborator 4: Continuare Programare Orientată pe Obiecte Întocmit de: Adina Neculai Îndrumător: Asist. Drd. Gabriel Danciu 29 octombrie 2011

E_d_Informatica_sp_SN_2014_bar_10_LRO

Programarea şi utilizarea calculatoarelor

SUBPROGRAME

Microsoft PowerPoint - ImplementareLimbaj [Read-Only] [Compatibility Mode]

Microsoft PowerPoint - Curs_SDA_9_RO_2019_v2.pptx

ALGORITMICĂ. Seminar 3: Analiza eficienţei algoritmilor - estimarea timpului de execuţie şi notaţii asimptotice. Problema 1 (L) Să se determine număru

Lucrarea nr. 4 - Algoritmi de sortare şi ordonare Breviar teoretic Un algoritm de sortare este o metoda prin care se aranjează elementele unui tablou

Lecții de pregă,re la informa,că Admitere 2019 Tema: Discutarea problemelor date la ul,mele sesiuni de admitere Bogdan Alexe

Programarea şi utilizarea calculatoarelor

Laborator 2: Instrucţiuni Java şi lucru cu şiruri de caractere Întocmit de: Adina Neculai Îndrumător: Asist. Drd. Gabriel Danciu 18 octombrie 2011

Microsoft Word - Algoritmi genetici.docx

Slide 1

PROGRAMARE ORIENTATA PE OBIECTE

Propunator: Morar Florin Colegiul National Silvania Zalau Discipina: Informatica Nivel liceal, cls. XII 1.Să se scrie în limbajul C/C++ definiţia comp

Curs 3 Permutari cu repetitie. Combinari. Algoritmi de ordonare si generare

ALGORITMII ŞI REPREZENTAREA LOR Noţiunea de algoritm Noţiunea de algoritm este foarte veche. Ea a fost introdusă în secolele VIII-IX de către Abu Ja f

/*

Logică și structuri discrete Relații. Funcții parțiale Marius Minea marius/curs/lsd/ 20 octombrie 2014

Microsoft Word - O problema cu bits.doc

Ingineria Sistemelor de Programare

Top

SSC-Impartire

Structuri de date pentru partiţii de mulţimi O partiţie finită a unei mulţimi nevide S este o mulţime finită de submulţimi ale lui S: {S 1, S 2,..., S

Paradigme de Programare

Grafuri - Concepte de baza. Tipuri de grafuri. Modalitati de reprezentare

Lucrarea nr. 9 - Liste dublu înlănţuite Breviar teoretic În cadrul elementelor studiate anterior s-a putut observa utilitatea listelor simplu înlănuit

Laboratorul 2 Problema tăieturii minime Considerăm un graf (neorientat) G = (V, E) (V e mulţimea vârfurilor, E e mulţimea muchiilor) care este conex (

Laborator Implementarea algoritmului DES - Data Encryption Standard. Exemplu DES Algoritmul DES foloseşte numere b

1

C++ Probleme

Microsoft Word - _arbori.docx

PCLPII-C16(9)

Proiectarea Algoritmilor

Microsoft Word - Software pentru ordonarea multirang a componentelor unei colectivitati.doc

Capitole Speciale de Informatică Curs 4: Calculul scorurilor în un sistem complet de extragere a informaţiilor 18 octombrie 2018 Reamintim că în cursu

Microsoft PowerPoint - Curs_SDA_10_RO_2019_v1.pptx

Probleme proiect TP BITPERM Implementați un algoritm care citește de la intrarea standard două numere naturale și scrie la ieșirea standard da

Poo Laboratoare 1 Contents Laborator7 2 1 Colecţii de obiecte în Java Interfaţa Iterator Interfaţa C

Curs 8: Tehnica divizării (I) Algoritmi si structuri de date - Curs 8 1

Procesarea Imaginilor - Laborator 1: Introducere în utilizarea bibliotecii OpenCV 1 1. Introducere în utilizarea bibliotecii OpenCV 1.1. Introducere S

Performanta in matematica de gimnaziu si liceu-program de pregatire al elevilor olimpici MULTIMI. OPERATII CU MULTIMI Partea I+II Cls. a V-a

Analiză statică Analiza fluxului de date 23 octombrie 2014

Slide 1

Limbaje de programare Pointeri. Alocare dinamică (continuare) 26 noiembrie 2012

1. a. Să se scrie un algoritm care să afişeze toate numerele de patru cifre care au cifra sutelor egală cu o valoare dată k, şi cifra zecilor cu 2 mai

Spatii vectoriale

Slide 1

Propunator: Morar Florin Colegiul National Silvania Zalau Discipina: Informatica Nivel liceal, cls. XI 1.Fişierul text bac.in conţine cel mult 1000 de

ALGORITHMICS

Matrici și vectori în VBA În VBA, o matrice este un grup de variabile de același tip. De ce ar trebui să utilizați o matrice? Presupunem că ați vrut s

09. Informatica 2 - MM 1

Microsoft Word - CarteC.doc

Microsoft Word - CarteC.doc

Microsoft Visual C++ (abreviat MSVC) is a commercial integrated development environment (IDE) product engineered by Microsoft for the C, C++, and C++/

FIŞA DISCIPLINEI

PPSD

Limbaje de programare. Laborator Clasa, obiect, abstractizare Clasa : descrie tipul obiectelor dintr-un program; poate fi asociată cu un şablon

1. Găsiți k numerele cele mai apropiate într-un şir nesortat Dându-se un şir nesortat și două numere x și k, găsiți k cele mai apropiate valori de x.

Interfețe și Protocoale de Comunicații Arduino-Port Paralel Arduino. Laborator 1- Portul Paralel 1 Caracteristici generale Arduino UNO este o placă de

Metode de programare Proiectarea algoritmilor

Analiză de flux de date 29 octombrie 2012

Logică și structuri discrete Logică propozițională Marius Minea marius/curs/lsd/ 3 noiembrie 2014

Capitole Speciale de Informatica - Curs 5: Extragerea informatiilor prin feedback de relevanta. Metode probabiliste de extragere a informatiilor

15. Logică matematică cu aplicații în informatică - MI 3

Tablouri unidimensionale Problema 1 Să se determine mulţimea cifrelor unui număr natural n > 0, dat. Exemplu: n= Cifre = {1,2,3,7} Se cere să s

Școala: Clasa a V-a Nr. ore pe săptămână: 4 Profesor: MATEMATICĂ Clasa a V-a Aviz director PLANIFICARE CALENDARISTICĂ ORIENTATIVĂ Nr. crt. Unitatea de

L7

CONCURSUL NAŢIONAL DE MATEMATICA PANAITOPOL EDIŢIA a X-a, TULCEA, 21 aprilie 2018 Clasa a VII - a 1. Se consideră numerele reale x, y şi z, cel puţin

Slide 1

gaussx.dvi

Noțiuni de bază ale criptografiei

Prelegerea 4 În această prelegere vom învăţa despre: Algebre booleene; Funcţii booleene; Mintermi şi cuburi n - dimensionale. 4.1 Definirea algebrelor

FORMULAR

Slide 1

Algoritmi elementari Metode de căutare secvenţială binară Metode de ordonare metoda bulelor metoda inserţiei metoda selecţiei metoda numărării Intercl

Declararea variabilelor

Metode de sortare - pregătire admitere - Conf.dr. Alexandru Popa Lect. dr. Andrei Pătraşcu Universitatea din Bucureşti 1

DAN LASCU ADRIANA-LIGIA SPORIŞ ANDA OLTEANU PAUL VASILIU MATEMATICĂ. CULEGERE DE PROBLEME TIP GRILĂ PENTRU ADMITEREA ÎN ACADEMIA NAVALĂ MIRCEA CEL BĂT

Backtracking_2018

Lab6LCD

Ingineria Sistemelor de Programare

Microsoft Word - Examen CTI.docx

Consultatii ELa123, 06 ianuarie 2014

Transcriere:

Algoritmi genetici paraleli. Implementari Java. Continut laborator: 1. Obiectivul lucrarii. 2. Notiuni teoretice: 3. Cerinte laborator. 4. Tema. 1. Obiectivul lucrarii. Lucrarea de faţă are rolul de a prezenta şi familiariza studentul cu modul de folosire a algoritmilor genetici in variant paralela pentru rezolvarea unor probleme. La sfârşitul acestei lucrări, studentul va avea posibilitatea să foloseasca notiunile si algoritmii prezentati pentru rezolvarea unor probleme. 2. Notiuni teoretice Forma generala a unui algoritm genetic

import java.io.*; import java.util.*; public class genetic { public static int m,n,a,b,nrpop=1400, NrMutatii=50; public static int[][] a=new int[101][101]; public static int[][] pop=new int[1700][30];//retine indivizii populatiei //si costul traseului (coloana n+1) pe cate o linie

public static int f(int i){ //functia performanta - calculeaza costul total al deplasarii //pentru un individ din populatie (adica a unui traseu) int s,j; s=0; for(j=2;j<=n;j++) s+=a[pop[i][j-1]][pop[i][j]]; return s; public static void ordonare(){ //clasificarea indivizilor dupa valorile crescatoare ale //functiei de performanta (adica, cost traseu) int i,j,k,aux; for(i=1;i<nrpop;i++) for(j=i+1;j<=nrpop;j++) if(pop[i][n+1]>pop[j][n+1]) for(k=1;k<=n+1;k++){ aux=pop[i][k]; pop[i][k]=pop[j][k]; pop[j][k]=aux; public static void generare(){ //generarea populatiei initiale in mod aleator int i,j,k,x,sw; for(i=1;i<=nrpop-200;i++){ pop[i][1]=a;pop[i][n]=b; for(j=2;j<=n-1;j++){ x=(int)math.ceil(math.random()*n); sw=1; for(k=1;k<j;k++) if(x==pop[i][k]) if(x==b) while(sw==0); pop[i][j]=x; pop[i][n+1]=f(i); public static void mutatie(){ //mutatiile genetice au fost modelate prin alegerea, //in mod aleator, a unui traseu si inversarea poz. unor

//orase, selectate tot aleator int i,n,m,p,aux,sw; for(i=1;i<=nrmutatii;i++){ N=1+(int)Math.round(Math.random()*(NrPop-201)); //generam nodul M M=1+(int)Math.round(Math.random()*(n-1)); sw=1; if(m==a M==B) while(sw==0); //generam nodul P P=1+(int)Math.round(Math.random()*(n-1)); sw=1; if(p==a P==B) while(sw==0); aux=pop[n][m]; pop[n][m]=pop[n][p]; pop[n][p]=aux; //se poate repeta cu inca o perechete de noduri N,P pop[n][n+1]=f(n); public static void generatie(){ //generatie noua - pentru doua trasee, care se intersecteaza //vom crea doua noi trasee, asfel: //-primul traseu continua, de la intersectie, pe cel de-al doilea traseu //-al doilea traseu, continua de la intersesctie, la primul traseu //cele doua noi trasee sunt valide daca trec prin toate orasele int i,j,k,m,n,sw; for(i=nrpop-200+1;i<=nrpop+100;i++){ sw=1; M=(int)Math.round(Math.random()*20); N=(int)Math.round(Math.random()*20); k=1; k++; while(pop[m][k]!=pop[n][k]);//k= nod de intersesctie individ M cu N //prima noua solutie se adauga la populatie for(j=1;j<=k;j++) pop[i][j]=pop[m][j]; for(j=k+1;j<=n;j++) pop[i][j]=pop[n][j]; for(j=2;j<=n-1;j++)

for(k=2;k<=n-1;k++) if(pop[i][j]==pop[i][k] && j!=k) for(j=1;j<=k;j++) pop[i+100][j]=pop[n][j]; for(j=k+1;j<=n;j++) pop[i+100][j]=pop[m][j]; for(j=2;j<=n-1;j++) for(k=2;k<=n-1;k++) if(pop[i+100][j]==pop[i+100][k] && j!=k) while(sw==0); pop[i][n+1]=f(i); pop[i+100][n+1]=f(i+100); public static void main(string[] args) throws IOException { FileInputStream f = new FileInputStream("genetic.in"); InputStreamReader fchar = new InputStreamReader(f); BufferedReader buf = new BufferedReader(fchar); String linie =buf.readline(); StringTokenizer st = new StringTokenizer(linie); n=integer.parseint(st.nexttoken()); m=integer.parseint(st.nexttoken()); A=Integer.parseInt(st.nextToken()); B=Integer.parseInt(st.nextToken()); int i,j,k,cost; //initializare matrice costuri for(i=1;i<=n;i++) for(j=1;j<=n;j++) if(i==j) a[i][j]=0; else a[i][j]=10000; //citire costuri si construire matrice costuri for(k = 0; k<m ;k++){ linie =buf.readline(); st = new StringTokenizer(linie); i = Integer.parseInt(st.nextToken()); j = Integer.parseInt(st.nextToken()); cost = Integer.parseInt(st.nextToken()); a[i][j]=cost; a[j][i]=cost;

//algoritm genetic pentru problema Comis-Voiajor generare(); int NrGeneratii=600; for(i=1;i<=nrgeneratii;i++){ generatie(); mutatie(); ordonare(); System.out.println("Nrgeneratii="+NrGeneratii); for(i=1;i<=n;i++) System.out.print(pop[1][i]+" "); System.out.println("cost="+pop[1][n+1]); Pentru datele de intrare: genetic.in 15 20 1 15 1 4 10 1 14 50 14 4 10 14 2 200 14 5 10 2 8 10 5 8 20 2 9 10 9 10 10 2 10 50 6 10 10 6 2 200 7 6 200 6 11 20 12 11 20 12 13 20 7 13 20 3 7 100 7 15 400 3 15 100 s-au obtinut rezultatele:

3. Cerinte laborator. Se va verifica programul anterior si se va testa pe mai multe exemple, pentru a observa modul de functionare. Realizarea de implementari pentru problemele propuse. 4. Tema. Să se rezolve problemele urmatoare folosind algoritmi genetici implementati prin programe paralele. 1. Problema ciclului hamiltonian. 2. Problema celor n regine. 3. Problema permutarilor fara puncte fixe. 4. Problema rucsacului folosind codificarea binara.

Bibliografie 1. Crina Grosan, Mihai Oltean, Algoritmi Evolutivi, GInfo, Nr. 8, 2001 2. George Daniel Mateescu, Corina Saman, Mihai Buneci, Algoritmi Genetici, ftp://www.ipe.ro/repec/workingpapers/cs14-2.pdf 3. Popescu Rozica Maria, Algoritmi Genetici, Editura Sfântul Ierarh Nicolae 4. http://en.wikipedia.org/wiki/genetic_algorithm 5. Mitchell Melanie, An Introduction to Genetic Algorithms, A Bradford Book The MIT Press, 1999, http://www.boente.eti.br/fuzzy/ebook-fuzzy-mitchell.pdf Probleme recapitulative 1. Folosind metoda divide et impera determinate numarul de componente impare dintr-un vector. 2. Se da un tablou bidimensional cu m linii si n coloane cu component intregi. Pentru fiecare linie scrieti unul din mesajele: DA sau NU. DA, daca linia are suma componentelor numar de doua cifre, respectiv NU contrar. Exemplu 3 4 10 2 50 250 51 4 23 55 16 2 34 20 se va afisa NU NU DA 3. Folosind fire de executie creati un applet care sa afiseze pe cate o linie fiecare numar de doua cifre de 10 ori. 4. Se da un graf neorientat prin numãrul de vârfuri şi muchii. Sã se scrie un program care afiseaza nodurile izolate din graf. Exemplu graf.in 6 2 2 3 2 5 graf.out 1 4 6 5. Se da un graf neorientat prin numãrul de vârfuri şi muchii. Sã se scrie un program care verifica daca graful este conex. Exemplu graf.in 6 2 2 3 2 5 graf.out neconex