ALGORYTM GENETYCZNY 1C

Wielkość: px
Rozpocząć pokaz od strony:

Download "ALGORYTM GENETYCZNY 1C"

Transkrypt

1 POLITECHNIKA POZNAŃSKA WYDZIAŁ ELEKTRONIKI I TELEKOMUNIKACJI RAPORT METODY OPTYMALIZACJI ALGORYTM GENETYCZNY 1C Michał Kaszuba, #88515 Multimedia i Elektronika Powszechnego Użytku Poznań, 2012/13 str. 1

2 1. Treść zadania Proszę znaleźd wartośd minimalną funkcji postaci: Przed przystąpieniem do rozwiązania zadania metodą algorytmu genetycznego proszę znaleźd rozwiązanie analityczne. Zdefiniowad parametry algorytmu. Określid wpływ metody selekcji i parametrów rekombinacji oraz rozmiaru populacji, ilości generacji, wielkości populacji elitarnej na rozwiązanie zadania, gdzie: Selekcja może zostad przeprowadzona jedną z poniższych metod: metodą ruletki, metodą turniejową, metodą rankingową. Krzyżowanie jednopunktowe, wielopunktowe, wielowymiarowe, zliczające-1, ewolucja powiązao. Mutacja wymiana bitu, wstawienie bitu, usunięcie genu, mutacja infekcją wirusową, mutacja różnicowaniem lub naśladowaniem. str. 2

3 2. Analiza funkcji Minimalizowana funkcja celu: f(x1,x2,x3) = a 1 x 1 + a 2 x 2 + a 3 x 3 warunki ograniczające: Łatwo zauważyd, że wartośd funkcji będzie najmniejsza, gdy przy parametrach decydujących a 1, a 2 oraz a 3 jak w poniższej tabeli współrzędne x 1, x 2, x 3 będą osiągały następujące wartości: Parametry decydujące Punkt minimum Zdefiniowanie parametrów algorytmu a) Parametry wejściowe: Liczba osobników (chromosomów) w jednym pokoleniu (populacji, iteracji algorytmu): POP_SIZE Liczba iteracji algorytmu (liczba pokoleo, generacji): MAX_ITER Rodzaj selekcji: seltype Rodzaj krzyżowania: crosstype Rodzaj mutacji: muttype Prawdopodobieostwo krzyżowania (o ile wymagane w danej metodzie krzyżowania): CROSS_PROBAB Prawdopodobieostwo mutacji (o ile wymagane w danej metodzie mutacji): MUT_PROBAB b) Parametry wyjściowe: Znalezione współrzędne x1,x2,x3 minimum analizowanej funkcji Wartośd analizowanej funkcji dla znalezionego minimum: f(x1,x2,x3) 4. Realizacja programowa założenia, wybór platformy i narzędzi Implementacja algorytmu genetycznego została wykonana w języku C++ z tekstowym (konsola) interfejsem użytkownika. Do implementacji posłużył program Visual C Professional firmy Microsoft. 5. Interakcja zaimplementowanego algorytmu z użytkownikiem Zaimplementowany algorytm wczytuje od użytkownika kolejno dane wymienione w punkcie 3., następnie przeprowadza niezbędne przetwarzanie (MAX_ITER iteracji algorytmu genetycznego) i prezentuje na ekranie wyniki swojego działania. Podczas przetwarzania na ekranie widoczny jest procentowy wskaźnik postępu, więc z góry wiadomo, na jakim etapie przetwarzania jest program (istotne, gdy poda się np. setki tysięcy pokoleo jako daną wejściową). Przykładowy wynik działania programu przedstawiono poniżej. str. 3

4 6. Wyniki badań i wnioski Ciężko jest stwierdzid która metoda selekcji/krzyżowania/mutacji jest najlepsza z uwagi na to, że algorytm za każdym razem daje inny wynik (z uwagi na czynnik losowy, który jest istotą algorytmów genetycznych), jednak poczynione obserwacje pozwalają wysnud ogólny wniosek, że wszystkie zaimplementowane metody selekcji/krzyżowania/mutacji dają zadowalające wyniki, tj. algorytm jest zbieżny dla każdej kombinacji metod selekcji/krzyżowania/mutacji. Minimum analizowanej funkcji jest zawsze znajdowane, jednak z dokładnością jego lokalizacji przez algorytm jest różnie. Dla parametrów a 1 =a 2 =a 3 =1 analizowana funkcja przyjmuje postad f(x1,x2,x3) = x1 + x2 + x3. Jest zatem oczywiste, że wówczas minimum funkcji znajduje się dla x1,x2,x3 jak najmniejszych, co przy zadanych ograniczeniach równa się: Rzeczywiste minimum funkcji: f(,,) = Wg tego kryterium zostało przeprowadzonych kilka testów praktycznych implementacji AG. Wyniki przedstawiono poniżej (z uwagi na mnogośd zaimplementowanych metod ograniczono się do niektórych ich kombinacji): Wielkość populacji (POP_SIZE) Ilość pokoleń (MAX_ITER) selekcja krzyżowanie mutacja prawd. krzyż. [%] Ruletka Jednopunktowe Wymiana bitu Ruletka Jednopunktowe Wymiana bitu Ruletka Jednopunktowe Wymiana bitu turniejowa Jednopunktowe Wymiana bitu Rankingowa Jednopunktowe Wymiana bitu Rankingowa Jednopunktowe Wymiana bitu Rankingowa Jednopunktowe Wymiana bitu prawd. mutacji [%] x1,x2,x f(x1,x2,x3) str

5 Ruletka wielowymiarowe Usunięcie genu Rankingowa ewolucja powiązao naśladowaniem turniejowa zliczające-1 różnicowaniem turniejowa wielopunktowe wstawienie bitu turniejowa wielopunktowe wstawienie bitu Ruletka Jednopunktowe usunięcie genu turniejowa ewolucja powiązao naśladowaniem Wnioski (komentarz do wyników): w powyższej tabeli starano się ukazad możliwie jak najwięcej scenariuszy działania AG. Wnioski jakie płyną z obserwacji wyników są następujące: im większa populacja (jedno pokolenie), tym wyniki są lepsze (porównaj przypadek 2 i 3, przypadek 14), im więcej pokoleo (iteracji AG), tym wynik dokładniejszy (porównaj przypadek 6 i 7), duża liczba iteracji AG przy niewielkiej populacji daje słaby wynik przypadek 13. Wynika to stąd, że tak naprawdę poza chromosomem ulegającemu elitaryzmowi mamy tutaj tylko jeden regularny chromosom, więc ciężko mówid tu o rozmnażaniu i pokoleniowości, a zarazem o zbieżności AG w takim przypadku, duża liczba iteracji oraz liczna populacja (przypadek 7) daje bardzo dobre wyniki, jednak jest to okupione długim czasem obliczeo (kilkadziesiąt sekund na procesorze 2,2 GHz, 1,5 GB RAM), prawdopodobieostwo wystąpienia mutacji i krzyżowania ma znaczący wpływ na wynik - porównaj przypadek 1 i 2. Bardzo liczna populacja przy bardzo niewielu pokoleniach (iteracjach AG) daje optymalny wynik (przypadek 13) jest to spowodowane tym, że jako wynik jest tutaj brany chromosom poddany elitaryzmowi, więc najlepszy z chromosomów. Wada: duża zajętośd pamięci RAM, długi czas przetwarzania. Bardzo nieliczna populacja i mało pokoleo daje bardzo słabe rezultaty -> przypadek 11 Każda zaimplementowana metoda selekcji/krzyżowania/mutacji daje zadowalający wynik (błąd maksymalnie kilka procent) przy dobrze dobranych pozostałych parametrach, Przybliżona (z uwagi na brak powtarzalności działania AG) minimalna wielkośd populacji zapewniająca zadowalający wynik: Przybliżona (z uwagi na brak powtarzalności działania AG) minimalna liczba pokoleo (iteracji AG) zapewniająca zadowalający wynik: 50 Dla pokazania, że zaimplementowany AG działa również dla innych a i, poniżej przedstawiono podobną tabelę dla a 1 =-1, a 2 =-2, a 3 =4 Analizowana funkcja: f(x 1,x 2,x 3 ) = -x 1-2x 2 +4x 3 Jest zatem oczywiste, że wówczas minimum funkcji znajduje się dla x1 oraz x2 jak największych oraz x3 jak najmniejszego co przy zadanych ograniczeniach równa się: str. 5

6 Rzeczywiste minimum funkcji: f(5.12,5.12,) = Wielkość populacji (POP_SIZE) Ilość pokoleń (MAX_ITER) selekcja krzyżowanie mutacja prawd. krzyż. [%] turniejowa zliczające-1 różnicowaniem rankingowa ewolucja powiązao usunięcie genu ruletka wielopunktowe wstawienie bitu ruletka wielopunktowe naśladowaniem 15 - prawd. mutacji [%] x1,x2,x f(x1,x2,x3) Reprezentacja chromosomu Przyjęte kodowanie: binarne. Długośd chromosomu: 8 bitów/gen (8 bitów/zmienną analizowanej funkcji). 24 bity/chromosom. Długośd chromosomu wyznaczona zostala w następujący sposób: Zał. 3 zmienne (x 1,x 2,x 3 ) => długośd chromosomu: 24 bity const unsigned int CHROM_LENGHT = 24; typedef struct unsigned short gen[chrom_lenght]; unsigned short seltourgroup; unsigned short selrankval; chromosom; // długośc chromosomu // chromosom // geny // grupa w której jest chromosom (selekcja turniejowa) // ranga chromosomu (selekcja rankingowa) 8. Reprezentacja populacji chromosomów (jedno pokolenie i MAX_ITER pokoleń) typedef struct // para rodzicielska unsigned int mom; unsigned int dad; parentcouple; typedef struct chromosom* pop; parentcouple* parents; // pojedyncze pokolenie // POP_SIZE chromosomów // POP_SIZE-1 par rodzicielskich str. 6

7 population; population* tpop; tpop = new population[max_iter]; for(int i=0; i<max_iter; i++) tpop[i].pop = new chromosom[pop_size]; tpop[i].parents = new parentcouple[pop_size-1]; Komentarz: jedno pokolenie zawiera POP_SIZE chromosomów oraz POP_SIZE-1 par rodzicielskich. Par rodzicielskich jest o 1 mniej niż chromosomów, bo jeden chromosom (najlepiej przystosowany) jest bezpośrednio kopiowany do następnej populacji, więc potrzeba jedynie POP_SIZE-1 potomków. Z każdej pary rodzicielskiej powstaje jeden potomek. 9. Główna funkcja AG int main() srand((int)time(null)); loadparams(); firstpop(); // wczytanie parametrów // wygenerowanie pierwszej populacji for(int i=0; i<max_iter-1; i++) // generowanie nowej populacji elitism(i); selection(i); crossing(i); mutatation(i); // progress(i); showres(); cleanup(); // wyniki // porządki Powyżej przedstawiono główną funkcję (main()) oraz główną pętlę zaimplementowanego AG. Kolejno następuje: wczytanie parametrów od użytkownika, wygenerowanie pierwszej populacji, następnie w pętli następuje tworzenie kolejnych pokoleo w procesach kolejno: elitaryzmu, selekcji, krzyżowania i mutacji. Funkcja progres(i) pokazuje procentowy wskaźnik postępu obliczeo na ekranie. Po wyjściu z głównej pętli następuje wyświetlenie wyników działania AG oraz porządki (dealokacja pamięci zajętej przez dynamicznie utworzone tablice). 10. Kod źródłowy zaimplementowanego AG Kod programu składa się z pięciu plików: - main.c -> główny plik programu, pętla główna, - guni.h -> plik nagłówkowy generatora liczb pseudolosowych o rozkładzie równomiernym, - guni.c -> plik źródłowy generatora liczb pseudolosowych o rozkładzie równomiernym, - genalg.h -> plik nagłówkowy AG - genalg.c -> plik źródłowy AG str. 7

8 main.c: #include <iostream> #include <ctime> #include "genalg.h" #include "guni.h" using namespace std; int main() srand((int)time(null)); loadparams(); firstpop(); // wczytanie parametrów // wygenerowanie pierwszej populacji for(int i=0; i<max_iter-1; i++) // generowanie nowej populacji elitism(i); selection(i); crossing(i); mutatation(i); // progress(i); showres(); cleanup(); // wyniki // porządki guni.h: #ifndef _GUNI_H_ #define _GUNI_H_ /////////////////////////////////////////////////////////////////////////////////////////////// // klasa guni // // // // rozklad rownomierny w przedziale 0-1 // // generator mieszany // // X(n+1) = (a * X(n) + c) mod m // // a=11 // // X(0) = seed <= jadro (ziarno) generatora // // c=7 // // m=1997 // /////////////////////////////////////////////////////////////////////////////////////////////// class guni int seed; // jadro generatora int temp; double result; // wynik losowania public: ; guni(); // konstruktor double getrand(); #endif guni.c: #include <iostream> #include <ctime> #include "guni.h" using namespace std; guni::guni() // konstruktor srand((int)time(null)); seed = rand() % 100; // losowe jadro generatora z zakresu 0-99 temp = seed; // zmienna pomocnicza str. 8

9 double guni::getrand() temp = (11 * temp + 7) % 1997; result = temp/1997.; // przeskalowanie na zakres (0-1), kropka na koncu -> niejawny casting return result; genalg.h: #ifndef _GENALG_ #define _GENALG_ void cleanup(); void progress(int); void loadparams(); void firstpop(); void elitism(int); void selection(int); void crossing(int); void mutatation(int); void showres(); // porządki // licznik procentowy (odpowiednik progress bara) // wczytanie wielkosci populacji (jedno pokolenie) i ilości generacji (pokoleń) // tworzy pierwsza populacje // elitaryzm // selekcja // krzyżowanie // mutacja // pokazanie wyniku algorytmu, x1,x2,x3 oraz f(x1,x2,x3) // stałe const unsigned int CHROM_LENGHT = 24; // długośc chromosomu const unsigned int VAR_NR = 3; // liczba zmiennych optymalizacji (x1, x2, x3) const double XI_THR = 5.12; // granica przedziału xi // extern int POP_SIZE; extern int MAX_ITER; extern double* tfitfunval; // wielkość populacji // max liczba iteracji (warunek stopu) // wartości funkcji przystosowania dla pokolenia typedef struct double a1; double a2; double a3; aival; typedef struct double x1; double x2; double x3; xival; typedef struct // para rodzicielska unsigned int mom; unsigned int dad; parentcouple; typedef struct unsigned short gen[chrom_lenght]; unsigned short seltourgroup; unsigned short selrankval; chromosom; typedef struct chromosom* pop; parentcouple* parents; population; extern population* tpop; // chromosom // geny // grupa w której jest chromosom (selekcja turniejowa) // ranga chromosomu (selekcja rankingowa) // pojedyncze pokolenie // POP_SIZE chromosomów // POP_SIZE-1 par rodzicielskich // MAX_ITER pokoleń // wartość funkcji dopasowania + indeks chromosomu // przydatna struktura gdy chcemy posortować pokolenie wg wartości funkcji przystosowania typedef struct double fitval; unsigned int chind; indfitv; extern enum selectiontype; extern selectiontype seltype; extern enum crossingtype; extern crossingtype crosstype; str. 9

10 extern enum mutationtype; extern mutationtype muttype; extern aival ai; extern xival xi; // a1,a2,a3 // x1,x2,x3 #endif //_GENALG_ genalg.c: #include <iostream> #include <vector> #include <algorithm> #include "genalg.h" #include "guni.h" using namespace std; aival ai; xival xi; selectiontype seltype; crossingtype crosstype; mutationtype muttype; int POP_SIZE; int MAX_ITER; population* tpop = NULL; double* tfitfunval = NULL; double MUT_PROBAB = 0; // prawd. mutacji double CROSS_PROBAB = 0; // prawd. krzyzowania double fitfunval(xival val); double chfitfunval(chromosom ch); xival ch2xi(chromosom ch); void progress(int iter) static int cnt = 0; static int result = 0; if(cnt++ == 0) cout << "\n\n\n"; result = int((double(iter) / double(max_iter)) * 100); cout << "=============== " << result << "%\t=============== " << "\r"; bool cond(indfitv arg1, indfitv arg2) return arg1.fitval < arg2.fitval; enum selectiontype st_none, st_roulette, st_tournament, st_ranking, ; enum crossingtype ct_none, ct_onepoint, ct_manypoints, ct_multidimensional, ct_countingminusone, ct_evolutionoflinks, ; enum mutationtype mt_none, mt_replacebit, mt_insertbit, mt_remgen, mt_infectionvirus, mt_diff, mt_imitation ; void load_ai() for(int i=0; i<3; i++) cout << "Podaj a" << i+1 << ": "; str. 10

11 if(i == 0) cin >> ai.a1; if(i == 1) cin >> ai.a2; cin >> ai.a3; void chooseselmode() seltype = st_none; int temp = 0; bool fcorrectsel = false; while(fcorrectsel == false) fcorrectsel = true; cout << "\nwybor metody selekcji\n" << "\t1 - metoda ruletki\n" "\t2 - metoda turniejowa\n" "\t3 - metoda rankingowa\n\n" "Twoj wybor: "; cin >> temp; switch(temp) case 1: seltype = st_roulette; case 2: seltype = st_tournament; case 3: seltype = st_ranking; default: cout << "zly nr metody!\n"; fcorrectsel = false; void choosecrosstype() crosstype = ct_none; int temp = 0; bool fcorrectcross = false; while(fcorrectcross == false) fcorrectcross = true; cout << "\nwybor krzyzowania\n" << "\t1 - jednopuntkowe\n" "\t2 - wielopunktowe\n" "\t3 - wielowymiarowe\n" "\t4 - zliczajace-1\n" "\t5 - ewolucja powiazan\n\n" "Twoj wybor: "; cin >> temp; switch(temp) case 1: crosstype = ct_onepoint; case 2: crosstype = ct_manypoints; case 3: crosstype = ct_multidimensional; case 4: crosstype = ct_countingminusone; case 5: crosstype = ct_evolutionoflinks; default: cout << "zly nr metody!\n"; fcorrectcross = false; str. 11

12 void choosemuttype() muttype = mt_none; int temp = 0; bool fcorrectmut = false; while(fcorrectmut == false) fcorrectmut = true; cout << "\nwybor mutacji\n" << "\t1 - wymiana bitu\n" "\t2 - wstawienie bitu\n" "\t3 - usuniecie genu\n" "\t4 - infekcja wirusowa\n" "\t5 - roznicowaniem\n" "\t6 - nasladowaniem\n\n" "Twoj wybor: "; cin >> temp; switch(temp) case 1: muttype = mt_replacebit; case 2: muttype = mt_insertbit; case 3: muttype = mt_remgen; case 4: muttype = mt_infectionvirus; case 5: muttype = mt_diff; case 6: muttype = mt_imitation; default: cout << "zly nr metody!\n"; fcorrectmut = false; void loadparams() load_ai(); // wczytanie a1, a2, a3 cout << "Podaj wielkosc populacji (jedno pokolenie): "; bool fcorrinp = false; while(fcorrinp == false) cin >> POP_SIZE; if(pop_size <= 0) fcorrinp = false; cout << "Zla wielkosc populacji! Podaj jeszcze raz: "; continue; fcorrinp = true; fcorrinp = false; cout << "Podaj ilosc generacji (pokolen): "; while(fcorrinp == false) cin >> MAX_ITER; if(max_iter <= 0) fcorrinp = false; cout << "Zla ilosc generacji! Podaj jeszcze raz: "; continue; fcorrinp = true; tpop = new population[max_iter]; for(int i=0; i<max_iter; i++) tpop[i].pop = new chromosom[pop_size]; tpop[i].parents = new parentcouple[pop_size-1]; tfitfunval = new double[pop_size]; str. 12

13 chooseselmode(); // wybór metody selekcji choosecrosstype(); // wybór metody krzyzowania choosemuttype(); // wybór metody mutacji void firstpop() guni g1stpop; unsigned short tmpt[chrom_lenght] = ; for(int j=0; j<pop_size; j++) double tmp = g1stpop.getrand(); tmp *= ; int tmpi = int(tmp); for(int i=0; i<chrom_lenght; i++) tmpt[chrom_lenght-i-1] = tmpi % 2; tmpi /= 2; for(int i=0; i<chrom_lenght; i++) tpop[0].pop[j].gen[i] = tmpt[i]; void elitism(int popnr) // liczymy wartosc funkcji przystosowania // F(ch(x)) = -[a1x1 + a2x2 + a3x3] // chromosom o max F jest kopiowany do nastepnej populacji bez zmian double maxf = ; double tempf = 0; unsigned short maxf_ind = 0; for(int i=0; i<pop_size; i++) tempf = chfitfunval(tpop[popnr].pop[i]); tfitfunval[i] = tempf; if(tempf >= maxf) maxf = tempf; maxf_ind = i; // chromosom o tym numerze ulegnie elitaryzmowi for(int k=0; k<chrom_lenght; k++) tpop[(popnr + 1) % MAX_ITER].pop[0].gen[k] = tpop[popnr].pop[maxf_ind].gen[k]; void selection(int popnr) double minfitv, maxfitv, fitfunvrange, fitvsum; // koło ruletki dla selekcji metodą koła ruletki double* tthrroulette = new double[pop_size + 1]; tthrroulette[0] = 0; tthrroulette[pop_size] = 1; // koło ruletki dla selekcji metodą rankingową double* tthrrankroulet = new double[pop_size + 1]; tthrrankroulet[0] = 0; tthrrankroulet[pop_size] = 1; guni genselection; double group; unsigned int gracnt = 0, grbcnt = 0; double maxfitgra = , maxfitgrb = ; unsigned int maxfitgraind = 0, maxfitgrbind = 0; bool fonegroup = true; unsigned int sumofrank = 0; vector <indfitv> tfitval; switch(seltype) case st_roulette: //min fdop: minfitv = ; for(int i=0; i<pop_size; i++) if(tfitfunval[i] < minfitv) minfitv = tfitfunval[i]; str. 13

14 //max fdop: maxfitv = ; for(int i=0; i<pop_size; i++) if(tfitfunval[i] > maxfitv) maxfitv = tfitfunval[i]; fitfunvrange = maxfitv - minfitv; // zakres zmienności wartości funkcji dopasowania if(minfitv <= 0) for(int i = 0; i<pop_size; i++) tfitfunval[i] += (-minfitv) + 1; // suma fitvsum = 0; for(int i = 0; i<pop_size; i++) fitvsum += tfitfunval[i]; for(int i = 1; i<pop_size; i++) tthrroulette[i] = tthrroulette[i-1] + tfitfunval[i-1]/fitvsum; for(int i=0; i<(pop_size-1); i++) // losowanie par rodzicielskich unsigned int momind = 0, dadind = 0; while(momind == dadind) double mom = genselection.getrand(); for(int j=0; j<pop_size; j++) if(mom < tthrroulette[j+1]) momind = j; momind++; double dad = genselection.getrand(); dadind = 0; for(int j=0; j<pop_size; j++) if(dad < tthrroulette[j+1]) dadind = j; dadind++; tpop[popnr].parents[i].mom = momind; tpop[popnr].parents[i].dad = dadind; case st_tournament: for(int pnr=0; pnr<(pop_size-1); pnr++) while(fonegroup == true) // losowanie grup for(int i=0; i<pop_size; i++) group = genselection.getrand(); if(group >= 0.5) // gra tpop[popnr].pop[i].seltourgroup = 1; //grb tpop[popnr].pop[i].seltourgroup = 2; str. 14

15 // sprawdzenie, czy liczebnośc każdej grupy jest niezerowa for(int i=0; i<pop_size; i++) if(tpop[popnr].pop[i].seltourgroup == 1) gracnt++; grbcnt++; if((gracnt == 0) (grbcnt == 0)) fonegroup = true; fonegroup = false; maxfitgra = ; maxfitgrb = ; // najlepiej dopasowany chromosom z gra for(int i=0; i<pop_size; i++) double tmp = chfitfunval(tpop[popnr].pop[i]); if(tpop[popnr].pop[i].seltourgroup == 1) if(tmp >= maxfitgra) maxfitgra = tmp; maxfitgraind = i; // najlepiej dopasowany chromosom z grb if(tpop[popnr].pop[i].seltourgroup == 2) if(tmp >= maxfitgrb) maxfitgrb = tmp; maxfitgrbind = i; // przypisanie wyznaczonych rodziców tpop[popnr].parents[pnr].mom = maxfitgraind; tpop[popnr].parents[pnr].dad = maxfitgrbind; fonegroup = true; case st_ranking: // wypełnienie wektora struktur z wartosciami funkcji dopasowania dla populacji i indeksami chromosomów for(int i=0; i<pop_size; i++) indfitv tmp; tmp.fitval = chfitfunval(tpop[popnr].pop[i]); tmp.chind = i; tfitval.push_back(tmp); //posortowanie tego wektora sort(tfitval.begin(),tfitval.end(), cond); // przydzielenie rang chromosomom w populacji // wieksza ranga = wieksza wartosc funkcji przystosowania for(int i=0; i<pop_size; i++) tpop[popnr].pop[tfitval[i].chind].selrankval = i+1; sumofrank += (i+1); for(int i = 1; i<pop_size; i++) tthrrankroulet[i] = tthrrankroulet[i-1] + double(tpop[popnr].pop[i-1].selrankval)/sumofrank; for(int i=0; i<(pop_size-1); i++) // losowanie par rodzicielskich unsigned int momind = 0, dadind = 0; while(momind == dadind) str. 15

16 double mom = genselection.getrand(); for(int j=0; j<pop_size; j++) if(mom < tthrrankroulet[j+1]) momind = j; momind++; double dad = genselection.getrand(); dadind = 0; for(int j=0; j<pop_size; j++) if(dad < tthrrankroulet[j+1]) dadind = j; dadind++; tpop[popnr].parents[i].mom = momind; tpop[popnr].parents[i].dad = dadind; delete[] tthrroulette; delete[] tthrrankroulet; void crossing(int popnr) guni gencross; unsigned short onepointk = 0; unsigned short twopointk1 = 0, twopointk2 = 0; double draw = 0; double iscross = 0; chromosom mom, dad, child, child2; static unsigned int crprobcnt = 0; if(crprobcnt == 0) cout << "Podaj prawdopodobienstwo zajscia krzyzowania w % (0-100) "; while(true) cin >> CROSS_PROBAB; if((cross_probab < 0) (CROSS_PROBAB > 100)) cout << "Zla wartosc prawdopodobienstwa! Podaj jeszcze raz: "; CROSS_PROBAB /= 100; crprobcnt++; switch(crosstype) case ct_onepoint: for(int i=1; i<pop_size; i++) // losowanie punktu podziału onepointk = 1 + int((chrom_lenght - 1) * gencross.getrand()); // rodzice mom = tpop[popnr].pop[tpop[popnr].parents[i-1].mom]; dad = tpop[popnr].pop[tpop[popnr].parents[i-1].dad]; iscross = gencross.getrand(); if(iscross < CROSS_PROBAB) draw = gencross.getrand(); str. 16

17 if(draw <= 0.5) // childa for(int j=0; j<onepointk; j++) child.gen[j] = mom.gen[j]; for(int j=onepointk; j<chrom_lenght; j++) child.gen[j] = dad.gen[j]; // childb for(int j=0; j<onepointk; j++) child.gen[j] = dad.gen[j]; for(int j=onepointk; j<chrom_lenght; j++) child.gen[j] = mom.gen[j]; draw = gencross.getrand(); if(draw <= 0.5) // childa child = mom; // childb child = dad; // wygenerowany potomek wchodzi do następnej populacji // potem jeszcze bedzie podlegal mutacji tpop[popnr+1].pop[i] = child; case ct_manypoints: for(int i=1; i<pop_size; i++) // losowanie punktów podziału, twopointk1 < twopointk2 do twopointk1 = 1 + int((chrom_lenght - 1) * gencross.getrand()); twopointk2 = 1 + int((chrom_lenght - 1) * gencross.getrand()); while (twopointk2 <= twopointk1); // rodzice mom = tpop[popnr].pop[tpop[popnr].parents[i-1].mom]; dad = tpop[popnr].pop[tpop[popnr].parents[i-1].dad]; if(iscross < CROSS_PROBAB) draw = gencross.getrand(); if(draw <= 0.5) // childa for(int j=0; j<twopointk1; j++) child.gen[j] = mom.gen[j]; for(int j=twopointk1; j<twopointk2; j++) child.gen[j] = dad.gen[j]; for(int j=twopointk2; j<chrom_lenght; j++) child.gen[j] = mom.gen[j]; // childb for(int j=0; j<twopointk1; j++) child.gen[j] = dad.gen[j]; for(int j=twopointk1; j<twopointk2; j++) child.gen[j] = mom.gen[j]; for(int j=twopointk2; j<chrom_lenght; j++) str. 17

18 child.gen[j] = dad.gen[j]; draw = gencross.getrand(); if(draw <= 0.5) // childa child = mom; // childb child = dad; // wygenerowany potomek wchodzi do następnej populacji // potem jeszcze bedzie podlegal mutacji tpop[popnr+1].pop[i] = child; case ct_multidimensional: for(int i=1; i<pop_size; i++) // rodzice mom = tpop[popnr].pop[tpop[popnr].parents[i-1].mom]; dad = tpop[popnr].pop[tpop[popnr].parents[i-1].dad]; unsigned short momx1[chrom_lenght/var_nr]; unsigned short momx2[chrom_lenght/var_nr]; unsigned short momx3[chrom_lenght/var_nr]; unsigned short dadx1[chrom_lenght/var_nr]; unsigned short dadx2[chrom_lenght/var_nr]; unsigned short dadx3[chrom_lenght/var_nr]; // podział ojca i matki na wymiary (zmienne optymalizacji) for(int j=0; j<chrom_lenght/var_nr; j++) momx1[j] = mom.gen[j]; momx2[j] = mom.gen[j+8]; momx3[j] = mom.gen[j+16]; dadx1[j] = dad.gen[j]; dadx2[j] = dad.gen[j+8]; dadx3[j] = dad.gen[j+16]; for(int j=0; j<var_nr; j++) double iscross = gencross.getrand(); if(iscross <= CROSS_PROBAB) // cross draw = gencross.getrand(); // losowanie punktu podziału onepointk = 1 + int(((chrom_lenght/var_nr) - 1) * gencross.getrand()); if(draw <= 0.5) // childa for(int k=(j*8); k<(onepointk + j*8); k++) child.gen[k] = mom.gen[k]; for(int k=(onepointk + j*8); k<((j+1)*8); k++) child.gen[k] = dad.gen[k]; // childb for(int k=(j*8); k<(onepointk + j*8); k++) child.gen[k] = dad.gen[k]; for(int k=(onepointk + j*8); k<((j+1)*8); k++) child.gen[k] = mom.gen[k]; // don't cross draw = gencross.getrand(); str. 18

19 if(draw <= 0.5) for(int k=(j*8); k<((j+1)*8); k++) child.gen[k] = mom.gen[k]; for(int k=(j*8); k<((j+1)*8); k++) child.gen[k] = dad.gen[k]; // wygenerowany potomek wchodzi do następnej populacji // potem jeszcze bedzie podlegal mutacji tpop[popnr+1].pop[i] = child; case ct_countingminusone: for(int i=1; i<pop_size; i++) // vector przechowujący indeksy różniących się bitów potomków vector <unsigned short> vdiffind; // rodzice mom = tpop[popnr].pop[tpop[popnr].parents[i-1].mom]; dad = tpop[popnr].pop[tpop[popnr].parents[i-1].dad]; child = mom; child2 = dad; for(unsigned short j=0; j<chrom_lenght; j++) if(child.gen[j]!= child2.gen[j]) vdiffind.push_back(j); // swap unsigned short tmp; double isswap = 0; for(unsigned int j=0; j<vdiffind.size(); j++) isswap = gencross.getrand(); if(isswap <= 0.5) tmp = child2.gen[vdiffind[j]]; child2.gen[vdiffind[j]] = child.gen[vdiffind[j]]; child.gen[vdiffind[j]] = tmp; double whichchild = gencross.getrand(); // wygenerowany potomek wchodzi do następnej populacji // potem jeszcze bedzie podlegal mutacji if(whichchild <= 0.5) tpop[popnr+1].pop[i] = child; tpop[popnr+1].pop[i] = child2; case ct_evolutionoflinks: // rodzicami jest cała populacja for(int i=1; i<pop_size; i++) unsigned short fillpos = 0; unsigned short nextstartpos = 0; // pozycja wypełnienia while(fillpos < CHROM_LENGHT) fillpos += (1 + unsigned short(chrom_lenght*gencross.getrand())); // nr losowanego chromosomu unsigned short chid = unsigned short(pop_size*gencross.getrand()); for(int j=nextstartpos; j<chrom_lenght; j++) child.gen[j] = tpop[popnr].pop[chid].gen[j]; nextstartpos = j+1; str. 19

20 if(j == fillpos) // wygenerowany potomek wchodzi do następnej populacji // potem jeszcze bedzie podlegal mutacji tpop[popnr+1].pop[i] = child; void mutatation(int popnr) chromosom mutatedch; guni genmut; static unsigned int mutprobcnt = 0; if(mutprobcnt == 0 && muttype == mt_replacebit) cout << "Podaj prawdopodobienstwo zajscia mutacji w % (0-100) "; while(true) cin >> MUT_PROBAB; if((mut_probab < 0) (MUT_PROBAB > 100)) cout << "Zla wartosc prawdopodobienstwa! Podaj jeszcze raz: "; MUT_PROBAB /= 100; mutprobcnt++; switch(muttype) case mt_replacebit: for(int i=1; i<pop_size; i++) mutatedch = tpop[popnr+1].pop[i]; double ismutatedgen; for(int j=0; j<chrom_lenght; j++) ismutatedgen = genmut.getrand(); if(ismutatedgen <= MUT_PROBAB) if(mutatedch.gen[j] == 1) mutatedch.gen[j] = 0; mutatedch.gen[j] = 1; tpop[popnr+1].pop[i] = mutatedch; case mt_insertbit: for(int i=1; i<pop_size; i++) mutatedch = tpop[popnr+1].pop[i]; unsigned short inspoint = unsigned short(chrom_lenght*genmut.getrand()); unsigned short insbit = unsigned short(0.5 + genmut.getrand()); mutatedch.gen[inspoint] = insbit; tpop[popnr+1].pop[i] = mutatedch; case mt_remgen: for(int i=1; i<pop_size; i++) mutatedch = tpop[popnr+1].pop[i]; // ktory gen wywalić? unsigned short gen2rem = unsigned short(var_nr*genmut.getrand()); // wywalamy gen (zerujemy jego bity) str. 20

21 for(int j=gen2rem*8; j<((gen2rem+1)*8); j++) mutatedch.gen[j] = 0; // chromosom wraca do swojego pokolenia tpop[popnr+1].pop[i] = mutatedch; case mt_infectionvirus: for(int i=1; i<pop_size; i++) mutatedch = tpop[popnr+1].pop[i]; tpop[popnr+1].pop[i] = mutatedch; case mt_diff: case mt_imitation: const int mi = 3; chromosom worstch[mi]; vector <indfitv> tfitval; // wypełnienie wektora struktur z wartosciami funkcji dopasowania dla populacji i indeksami chromosomów for(int i=0; i<pop_size; i++) indfitv tmp; tmp.fitval = chfitfunval(tpop[popnr].pop[i]); tmp.chind = i; tfitval.push_back(tmp); //posortowanie tego wektora sort(tfitval.begin(),tfitval.end(), cond); // mi najgorszych osobników for(int i=0; i<mi; i++) worstch[i] = tpop[popnr].pop[tfitval[i].chind]; double profilevector[chrom_lenght] = ; for(int i=1; i<pop_size; i++) mutatedch = tpop[popnr+1].pop[i]; for(int j=0; j<mi; j++) for(int k=0; k<chrom_lenght; k++) if(mutatedch.gen[k]!= worstch[j].gen[k]) profilevector[k] += double(1)/double(mi); double rnd; if(muttype == mt_diff) for(int j=0; j<chrom_lenght; j++) rnd = genmut.getrand(); if(rnd < (1 - profilevector[j])) if(mutatedch.gen[j] == 1) mutatedch.gen[j] = 0; mutatedch.gen[j] = 1; if(muttype == mt_imitation) for(int j=0; j<chrom_lenght; j++) rnd = genmut.getrand(); if(rnd < profilevector[j]) if(mutatedch.gen[j] == 1) str. 21

SCHEMAT ROZWIĄZANIA ZADANIA OPTYMALIZACJI PRZY POMOCY ALGORYTMU GENETYCZNEGO

SCHEMAT ROZWIĄZANIA ZADANIA OPTYMALIZACJI PRZY POMOCY ALGORYTMU GENETYCZNEGO SCHEMAT ROZWIĄZANIA ZADANIA OPTYMALIZACJI PRZY POMOCY ALGORYTMU GENETYCZNEGO. Rzeczywistość (istniejąca lub projektowana).. Model fizyczny. 3. Model matematyczny (optymalizacyjny): a. Zmienne projektowania

Bardziej szczegółowo

Projektowanie klas c.d. Projektowanie klas przykład

Projektowanie klas c.d. Projektowanie klas przykład Projektowanie klas c.d. ogólne wskazówki dotyczące projektowania klas: o wyodrębnienie klasy odpowiedź na potrzeby życia (obsługa rozwiązania konkretnego problemu) o zwykle nie uda się utworzyć idealnej

Bardziej szczegółowo

Język ludzki kod maszynowy

Język ludzki kod maszynowy Język ludzki kod maszynowy poziom wysoki Język ludzki (mowa) Język programowania wysokiego poziomu Jeśli liczba punktów jest większa niż 50, test zostaje zaliczony; w przeciwnym razie testu nie zalicza

Bardziej szczegółowo

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość 1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość 2. Poprawna definicja wskażnika b to: a) float *a, **b = &a; b) float

Bardziej szczegółowo

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02 METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE Wykład 02 NAJPROSTSZY PROGRAM /* (Prawie) najprostszy przykład programu w C */ /*==================*/ /* Między tymi znaczkami można pisać, co się

Bardziej szczegółowo

Algorytm Genetyczny. zastosowanie do procesów rozmieszczenia stacji raportujących w sieciach komórkowych

Algorytm Genetyczny. zastosowanie do procesów rozmieszczenia stacji raportujących w sieciach komórkowych Algorytm Genetyczny zastosowanie do procesów rozmieszczenia stacji raportujących w sieciach komórkowych Dlaczego Algorytmy Inspirowane Naturą? Rozwój nowych technologii: złożone problemy obliczeniowe w

Bardziej szczegółowo

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych. Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych. 1. Rodzaje pamięci używanej w programach Pamięć komputera, dostępna dla programu,

Bardziej szczegółowo

LABORATORIUM 4: Algorytmy ewolucyjne cz. 2 wpływ operatorów krzyżowania i mutacji na skuteczność poszukiwań AE

LABORATORIUM 4: Algorytmy ewolucyjne cz. 2 wpływ operatorów krzyżowania i mutacji na skuteczność poszukiwań AE Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny, Politechnika Śląska www.imio.polsl.pl METODY HEURYSTYCZNE LABORATORIUM 4: Algorytmy ewolucyjne cz. 2 wpływ operatorów krzyżowania

Bardziej szczegółowo

Obliczenia ewolucyjne - plan wykładu

Obliczenia ewolucyjne - plan wykładu Obliczenia ewolucyjne - plan wykładu Wprowadzenie Algorytmy genetyczne Programowanie genetyczne Programowanie ewolucyjne Strategie ewolucyjne Inne modele obliczeń ewolucyjnych Podsumowanie Ewolucja Ewolucja

Bardziej szczegółowo

Wykład II. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

Wykład II. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej Wykład II - semestr II Kierunek Informatyka Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2015 c Copyright 2015 Janusz Słupik Operacje dyskowe - zapis do pliku #include #include

Bardziej szczegółowo

Wykład I. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

Wykład I. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej Wykład I - semestr II Kierunek Informatyka Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2015 c Copyright 2015 Janusz Słupik Zaliczenie przedmiotu Do zaliczenia przedmiotu niezbędne jest

Bardziej szczegółowo

6. Klasyczny algorytm genetyczny. 1

6. Klasyczny algorytm genetyczny. 1 6. Klasyczny algorytm genetyczny. 1 Idea algorytmu genetycznego została zaczerpnięta z nauk przyrodniczych opisujących zjawiska doboru naturalnego i dziedziczenia. Mechanizmy te polegają na przetrwaniu

Bardziej szczegółowo

Szablony funkcji i szablony klas

Szablony funkcji i szablony klas Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2011 Bogdan Kreczmer Niniejszy dokument

Bardziej szczegółowo

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe Wykład 15 Wprowadzenie do języka na bazie a Literatura Podobieństwa i różnice Literatura B.W.Kernighan, D.M.Ritchie Język ANSI Kompilatory Elementarne różnice Turbo Delphi FP Kylix GNU (gcc) GNU ++ (g++)

Bardziej szczegółowo

ECLIPSE wnioski z dwóch pierwszych laboratoriów

ECLIPSE wnioski z dwóch pierwszych laboratoriów PODSTAWY PROGRAMOWANIA 3-4 WYKŁAD 22-10-2015 ECLIPSE wnioski z dwóch pierwszych laboratoriów Dodanie pliku i konfiguracji startowej (każdy uruchamiany program powinien mieć własna konfigurację startową)

Bardziej szczegółowo

Wyszukiwanie największej spośród czterech liczb. Przykładowe rozwiązanie

Wyszukiwanie największej spośród czterech liczb. Przykładowe rozwiązanie Wyszukiwanie największej spośród czterech liczb Użytkownik podaje cztery liczby rzeczywiste. Podaj algorytm znajdowania największej spośród nich. (Np.: po wprowadzeniu liczb: 12 7 18.5 9 program powinien

Bardziej szczegółowo

Algorytmy ewolucyjne. wprowadzenie

Algorytmy ewolucyjne. wprowadzenie Algorytmy ewolucyjne wprowadzenie Gracjan Wilczewski, www.mat.uni.torun.pl/~gracjan Toruń, 2005 Historia Podstawowy algorytm genetyczny został wprowadzony przez Johna Hollanda (Uniwersytet Michigan) i

Bardziej szczegółowo

Modyfikacje i ulepszenia standardowego algorytmu genetycznego

Modyfikacje i ulepszenia standardowego algorytmu genetycznego Modyfikacje i ulepszenia standardowego algorytmu genetycznego 1 2 Przypomnienie: pseudokod SGA t=0; initialize(p 0 ); while(!termination_condition(p t )) { evaluate(p t ); T t =selection(p t ); O t =crossover(t

Bardziej szczegółowo

DYNAMICZNE PRZYDZIELANIE PAMIECI

DYNAMICZNE PRZYDZIELANIE PAMIECI DYNAMICZNE PRZYDZIELANIE PAMIECI Pamięć komputera, dostępna dla programu, dzieli się na cztery obszary: kod programu, dane statyczne ( np. stałe i zmienne globalne programu), dane automatyczne zmienne

Bardziej szczegółowo

Wstęp do Informatyki

Wstęp do Informatyki Wstęp do Informatyki Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 11 Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 11 1 / 52 Pętla for # i n c l u d e

Bardziej szczegółowo

Zasady programowania Dokumentacja

Zasady programowania Dokumentacja Marcin Kędzierski gr. 14 Zasady programowania Dokumentacja Wstęp 1) Temat: Przeszukiwanie pliku za pomocą drzewa. 2) Założenia projektu: a) Program ma pobierać dane z pliku wskazanego przez użytkownika

Bardziej szczegółowo

Podstawy języka C++ Maciej Trzebiński. Praktyki studenckie na LHC IFJ PAN. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. M. Trzebiński C++ 1/16

Podstawy języka C++ Maciej Trzebiński. Praktyki studenckie na LHC IFJ PAN. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. M. Trzebiński C++ 1/16 M. Trzebiński C++ 1/16 Podstawy języka C++ Maciej Trzebiński Instytut Fizyki Jądrowej Polskiej Akademii Nauk Praktyki studenckie na LHC IFJ PAN 6lipca2015 Uruchomienie maszyny w CC1 M. Trzebiński C++ 2/16

Bardziej szczegółowo

Wykład VII. Programowanie. dr inż. Janusz Słupik. Gliwice, 2014. Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik

Wykład VII. Programowanie. dr inż. Janusz Słupik. Gliwice, 2014. Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik Wykład VII Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2014 c Copyright 2014 Janusz Słupik Kompilacja Kompilator C program do tłumaczenia kodu źródłowego na język maszynowy. Preprocesor

Bardziej szczegółowo

Program 14. #include #include using namespace std;

Program 14. #include <iostream> #include <ctime> using namespace std; Program 14 Napisać: * funkcję słuŝącą do losowego wypełniania tablicy liczbami całkowitymi z podanego zakresu (*). Parametrami funkcji mają być tablica, jej długość oraz dwie liczby stanowiące krańce przedziału

Bardziej szczegółowo

3 Przygotował: mgr inż. Maciej Lasota

3 Przygotował: mgr inż. Maciej Lasota Laboratorium nr 3 1/8 Język C Instrukcja laboratoryjna Temat: Instrukcje warunkowe, pętle. 3 Przygotował: mgr inż. Maciej Lasota 1) Instrukcje warunkowe. Instrukcje warunkowe pozwalają zdefiniować warianty

Bardziej szczegółowo

Programowanie strukturalne i obiektowe

Programowanie strukturalne i obiektowe Programowanie strukturalne i obiektowe Język C część I Opracował: Grzegorz Flesik Literatura: A. Majczak, Programowanie strukturalne i obiektowe, Helion, Gliwice 2010 P. Domka, M. Łokińska, Programowanie

Bardziej szczegółowo

Grzegorz Cygan. Wstęp do programowania mikrosterowników w języku C

Grzegorz Cygan. Wstęp do programowania mikrosterowników w języku C Grzegorz Cygan Wstęp do programowania mikrosterowników w języku C Mikrosterownik Inne nazwy: Microcontroler (z języka angielskiego) Ta nazwa jest powszechnie używana w Polsce. Mikrokomputer jednoukładowy

Bardziej szczegółowo

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta 16.09.2006. Strona 1 z 26. Powrót. Full Screen. Zamknij.

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta 16.09.2006. Strona 1 z 26. Powrót. Full Screen. Zamknij. Programowanie Sobera Jolanta 16.09.2006 Strona 1 z 26 1 Wprowadzenie do programowania 4 2 Pierwsza aplikacja 5 3 Typy danych 6 4 Operatory 9 Strona 2 z 26 5 Instrukcje sterujące 12 6 Podprogramy 15 7 Tablice

Bardziej szczegółowo

Platforma.NET. Laboratorium nr 1 Podstawy języka C#

Platforma.NET. Laboratorium nr 1 Podstawy języka C# Platforma.NET Laboratorium nr 1 Podstawy języka C# Ćwiczenie 1 1. Utwórz nowy projekt a. Z menu File wybierz New/Project b. W oknie dialogowym New Project określ następujące właściwości: typu projektu:

Bardziej szczegółowo

I - Microsoft Visual Studio C++

I - Microsoft Visual Studio C++ I - Microsoft Visual Studio C++ 1. Nowy projekt z Menu wybieramy File -> New -> Projekt -> Win32 Console Application w okienku Name: podajemy nazwę projektu w polu Location: wybieramy miejsce zapisu i

Bardziej szczegółowo

Inspiracje soft computing. Soft computing. Terminy genetyczne i ich odpowiedniki w algorytmach genetycznych. Elementarny algorytm genetyczny

Inspiracje soft computing. Soft computing. Terminy genetyczne i ich odpowiedniki w algorytmach genetycznych. Elementarny algorytm genetyczny Soft computing Soft computing tym róŝni się od klasycznych obliczeń (hard computing), Ŝe jest odporny na brak precyzji i niepewność danych wejściowych. Obliczenia soft computing mają inspiracje ze świata

Bardziej szczegółowo

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna Język JAVA podstawy Wykład 3, część 3 1 Język JAVA podstawy Plan wykładu: 1. Konstrukcja kodu programów w Javie 2. Identyfikatory, zmienne 3. Typy danych 4. Operatory, instrukcje sterujące instrukcja warunkowe,

Bardziej szczegółowo

Dla każdej operacji łącznie tworzenia danych i zapisu ich do pliku przeprowadzić pomiar czasu wykonania polecenia. Wyniki przedstawić w tabelce.

Dla każdej operacji łącznie tworzenia danych i zapisu ich do pliku przeprowadzić pomiar czasu wykonania polecenia. Wyniki przedstawić w tabelce. Przygotować program tworzący tablicę dwuwymiarową zawierającą zestawy 10 2, 10 4, 10 6 liczb losowych zmiennoprzecinkowych. Korzystając z funkcji bibliotecznych uporządkować zawartość każdego (a) wiersza

Bardziej szczegółowo

Wprowadzenie do szablonów klas

Wprowadzenie do szablonów klas Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2008-2010 Bogdan Kreczmer Niniejszy

Bardziej szczegółowo

Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje.

Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje. Podstawowe elementy proceduralne w C++ Program i wyjście Zmienne i arytmetyka Wskaźniki i tablice Testy i pętle Funkcje Pierwszy program // Niezbędne zaklęcia przygotowawcze ;-) #include using

Bardziej szczegółowo

Automatyczny dobór parametrów algorytmu genetycznego

Automatyczny dobór parametrów algorytmu genetycznego Automatyczny dobór parametrów algorytmu genetycznego Remigiusz Modrzejewski 22 grudnia 2008 Plan prezentacji Wstęp Atrakcyjność Pułapki Klasyfikacja Wstęp Atrakcyjność Pułapki Klasyfikacja Konstrukcja

Bardziej szczegółowo

Kurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016

Kurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016 Wykład 9 28 kwiecień 2016 Java Collections Framework (w C++ Standard Template Library) Kolekcja (kontener) Obiekt grupujacy/przechowuj acy jakieś elementy (obiekty lub wartości). Przykładami kolekcji sa

Bardziej szczegółowo

Metody przeszukiwania

Metody przeszukiwania Metody przeszukiwania Co to jest przeszukiwanie Przeszukiwanie polega na odnajdywaniu rozwiązania w dyskretnej przestrzeni rozwiązao. Zwykle przeszukiwanie polega na znalezieniu określonego rozwiązania

Bardziej szczegółowo

ALGORYTMY I STRUKTURY DANYCH

ALGORYTMY I STRUKTURY DANYCH Akademia Rolnicza im. Augusta Cieszkowskiego w Poznaniu - Instytut Inżynierii Rolniczej - ALGORYTMY I STRUKTURY DANYCH Prowadzący: dr inż. Radosław J. Kozłowski email: rjk@au.poznan.pl www: http://www.au.poznan.pl/~rjk

Bardziej szczegółowo

1 Wskaźniki i zmienne dynamiczne, instrukcja przed zajęciami

1 Wskaźniki i zmienne dynamiczne, instrukcja przed zajęciami 1 Wskaźniki i zmienne dynamiczne, instrukcja przed zajęciami Celem tych zajęć jest zrozumienie i oswojenie z technikami programowania przy pomocy wskaźników w języku C++. Proszę przeczytać rozdział 8.

Bardziej szczegółowo

Programowanie obiektowe i C++ dla matematyków

Programowanie obiektowe i C++ dla matematyków Programowanie obiektowe i C++ dla matematyków Bartosz Szreder szreder (at) mimuw... 8 XI 2 1 Sposoby przekazywania argumentów Powiedzmy, że chcemy napisać funkcję, która zamieni miejscami wartość dwóch

Bardziej szczegółowo

Języki programowania obiektowego Nieobiektowe elementy języka C++

Języki programowania obiektowego Nieobiektowe elementy języka C++ Języki programowania obiektowego Nieobiektowe elementy języka C++ Roman Simiński roman.siminski@us.edu.pl www.programowanie.siminskionline.pl Instrukcje sterujące wykonaniem programu, przykłady wykorzystania

Bardziej szczegółowo

Jzyk C++ cz 3. Jarosław Gramacki Instytut Informatyki i Elektroniki ( $)*)+' *, - ( ' )*'.' '',*/ *, ','*0) 1 / ) %*+ 2'' 2" ( $%%) )'20 )*0) 1 / )

Jzyk C++ cz 3. Jarosław Gramacki Instytut Informatyki i Elektroniki ( $)*)+' *, - ( ' )*'.' '',*/ *, ','*0) 1 / ) %*+ 2'' 2 ( $%%) )'20 )*0) 1 / ) Jzyk C++ cz 3 Jarosław Gramacki Instytut Informatyki i Elektroniki # $$%%& ' ( $)*)+' *, - ( ' )*'.' '',*/ *, ','*0) 1 / ) %*+ 2'' 2" ( $%%) )'20 )*0) 1 / )!" 2 # $$%%& ' ( $%%/,))3 ( %* 2 / 4 ( ( *' *''*,

Bardziej szczegółowo

Wykład 9 2014-06-20 09:37 PP2_W9

Wykład 9 2014-06-20 09:37 PP2_W9 Wykład 9 Przykłady programów z wykorzystaniem klas - przykład funkcji operatorowych - obiektowa implementacja listy jednokierunkowej kopiowanie obiektów - klasa "latający napis" Pozycjonowanie w plikach

Bardziej szczegółowo

Standardowy algorytm genetyczny

Standardowy algorytm genetyczny Standardowy algorytm genetyczny 1 Szybki przegląd 2 Opracowany w USA w latach 70. Wcześni badacze: John H. Holland. Autor monografii Adaptation in Natural and Artificial Systems, wydanej w 1975 r., (teoria

Bardziej szczegółowo

1 Podstawy c++ w pigułce.

1 Podstawy c++ w pigułce. 1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,

Bardziej szczegółowo

Projekt współfinansowany przez Unię Europejską ze środków Europejskiego Funduszu Społecznego

Projekt współfinansowany przez Unię Europejską ze środków Europejskiego Funduszu Społecznego 1. Wstęp do programowania Programowanie komputerów jest podstawową dziedziną informatyki i obejmuje: projekt programu - konstrukcja algorytmu, zapis programu w dowolnym języku programowania, testowanie

Bardziej szczegółowo

Algorytmy genetyczne

Algorytmy genetyczne Algorytmy genetyczne Motto: Zamiast pracowicie poszukiwać najlepszego rozwiązania problemu informatycznego lepiej pozwolić, żeby komputer sam sobie to rozwiązanie wyhodował! Algorytmy genetyczne służą

Bardziej szczegółowo

Programowanie, algorytmy i struktury danych

Programowanie, algorytmy i struktury danych 1/44 Programowanie, algorytmy i struktury danych materiały do wykładu: http://cez.wipb.pl/moodle/ email: m.tabedzki@pb.edu.pl strona: http://aragorn.pb.bialystok.pl/~tabedzki/ Marek Tabędzki Wymagania

Bardziej szczegółowo

Odkrywanie algorytmów kwantowych za pomocą programowania genetycznego

Odkrywanie algorytmów kwantowych za pomocą programowania genetycznego Odkrywanie algorytmów kwantowych za pomocą programowania genetycznego Piotr Rybak Koło naukowe fizyków Migacz, Uniwersytet Wrocławski Piotr Rybak (Migacz UWr) Odkrywanie algorytmów kwantowych 1 / 17 Spis

Bardziej szczegółowo

Wstęp do programowania 1

Wstęp do programowania 1 Wstęp do programowania 1 Struktury Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 12 Struktura dla dat - przykład #include struct Date { int y; short m; short

Bardziej szczegółowo

1 Podstawy c++ w pigułce.

1 Podstawy c++ w pigułce. 1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,

Bardziej szczegółowo

Programowanie 2. Język C++. Wykład 1.

Programowanie 2. Język C++. Wykład 1. 1.1 Wstęp... 1 1.2 Obiekty stałe... 3 1.3 Obiekty statyczne... 4 1.4 Wskaźniki... 5 1.5 Referencje... 8 1.6 Wskaźniki do wskaźników... 11 1.7 Definiowanie własnych typów danych, polecenie typedef... 17

Bardziej szczegółowo

Podstawy informatyki (3)

Podstawy informatyki (3) Podstawy informatyki (3) wykład : 15 godz. ćwiczenia : 15 godz. Prowadzący: dr inż. Jacek Piątkowski 1 Języki programowania Języki programowania - dają możliwość zapisu algorytmów w postaci zarówno wygodnej

Bardziej szczegółowo

EGZAMIN MATURALNY 2011 INFORMATYKA

EGZAMIN MATURALNY 2011 INFORMATYKA Centralna Komisja Egzaminacyjna w Warszawie EGZAMIN MATURALNY 2011 INFORMATYKA POZIOM ROZSZERZONY MAJ 2011 2 Zadanie 1. a) (0 1) Egzamin maturalny z informatyki poziom rozszerzony CZĘŚĆ I Obszar standardów

Bardziej szczegółowo

PLAN WYKŁADU OPTYMALIZACJA GLOBALNA HISTORIA NA CZYM BAZUJĄ AG

PLAN WYKŁADU OPTYMALIZACJA GLOBALNA HISTORIA NA CZYM BAZUJĄ AG PLAN WYKŁADU OPTYMALIZACJA GLOBALNA Wykład 2 dr inż. Agnieszka Bołtuć Historia Zadania Co odróżnia od klasycznych algorytmów Nazewnictwo Etapy Kodowanie, inicjalizacja, transformacja funkcji celu Selekcja

Bardziej szczegółowo

2 Przygotował: mgr inż. Maciej Lasota

2 Przygotował: mgr inż. Maciej Lasota Laboratorium nr 2 1/7 Język C Instrukcja laboratoryjna Temat: Wprowadzenie do języka C 2 Przygotował: mgr inż. Maciej Lasota 1) Wprowadzenie do języka C. Język C jest językiem programowania ogólnego zastosowania

Bardziej szczegółowo

Algorytmy i język C++

Algorytmy i język C++ Wykład 6 Wskaźniki Wskaźnik nie przechowuje wartości zmiennej ale, podobnie jak tablica, wskazuje miejsce w pamięci, w którym znajduje się zmienna danego typu. W poniższym przykładzie symbol * pomiędzy

Bardziej szczegółowo

C++ - [1-3] Debugowanie w Qt Creator

C++ - [1-3] Debugowanie w Qt Creator Slajd 1 z 10 C++ - [1-3] Debugowanie w Qt Creator Nysa 2004-2013. Autor: Wojciech Galiński. wersja dnia 15 maja 2013 r. Slajd 2 z 10 Pojęcia związane z debugowaniem DEBUGOWANIE (z ang. debugging odrobaczanie)

Bardziej szczegółowo

Programowanie w C++ z użyciem kontenerów - parę przykładów programów Opracowanie: dr hab. Mirosław R. Dudek, prof. UZ

Programowanie w C++ z użyciem kontenerów - parę przykładów programów Opracowanie: dr hab. Mirosław R. Dudek, prof. UZ programowanie w C++ dla OWK Programowanie w C++ z użyciem kontenerów - parę przykładów programów Opracowanie: dr hab. Mirosław R. Dudek, prof. UZ 1 Streszczenie W tym rozdziale podamy kilka najprostszych

Bardziej szczegółowo

Egzamin z Podstaw informatyki i programowania 2007/2008

Egzamin z Podstaw informatyki i programowania 2007/2008 Egzamin z Podstaw informatyki i programowania 2007/2008 Imię i nazwisko:... 1 2 3 4 5 6 7 8 9 10 11 12 13 14 suma 1. Napisz funkcję logiczną, która dla zadanej parametrem wartości rzeczywistej x, oblicza

Bardziej szczegółowo

Zaawansowane programowanie w języku C++ Biblioteka standardowa

Zaawansowane programowanie w języku C++ Biblioteka standardowa Zaawansowane programowanie w języku C++ Biblioteka standardowa Prezentacja jest współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego w projekcie pt. Innowacyjna dydaktyka

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Wykład 2 Marcin Młotkowski 4 marca 2015 Plan wykładu 1 2 3 4 5 Marcin Młotkowski Programowanie obiektowe 2 / 47 Krótki opis C Obiektowy, z kontrolą typów; automatyczne odśmiecanie;

Bardziej szczegółowo

Techniki Programowania

Techniki Programowania Techniki Programowania Łukasz Madej Katedra Informatyki Stosowanej i Modelowania Wykłady opracowane we współpracy z Danutą Szeligą, Łukaszem Sztangretem Dr hab. inż. Łukasz Madej, prof. AGH Budynek B5,

Bardziej szczegółowo

Programowanie genetyczne - gra SNAKE

Programowanie genetyczne - gra SNAKE PRACOWNIA Z ALGORYTMÓW EWOLUCYJNYCH Tomasz Kupczyk, Tomasz Urbański Programowanie genetyczne - gra SNAKE II UWr Wrocław 2009 Spis treści 1. Wstęp 3 1.1. Ogólny opis.....................................

Bardziej szczegółowo

Algorytmy genetyczne - ćwiczenia

Algorytmy genetyczne - ćwiczenia Niekonwencjonalne metody obliczeniowe Algorytmy genetyczne - ćwiczenia Jakub Wróblewski Warszawa, 1996 Spis treści 1. Problem optymalizacyjny... 3 2. Zasada działania algorytmu genetycznego... 6 3. Implementacja

Bardziej szczegółowo

Zadanie 04 Ktory z ponizszych typow danych w jezyku ANSI C jest typem zmiennoprzecinkowym pojedynczej precyzji?

Zadanie 04 Ktory z ponizszych typow danych w jezyku ANSI C jest typem zmiennoprzecinkowym pojedynczej precyzji? Zadanie 01 W przedstawionym ponizej programie w jezyku ANSI C w miejscu wykropkowanym brakuje jednej linii: #include... int main() { printf("tralalalala"); return 0; } A. B. "iostream" C.

Bardziej szczegółowo

Rodzina protokołów TCP/IP. Aplikacja: ipconfig.

Rodzina protokołów TCP/IP. Aplikacja: ipconfig. Rodzina protokołów TCP/IP. Aplikacja: ipconfig. dr Zbigniew Lipiński Instytut Matematyki i Informatyki ul. Oleska 48 50-204 Opole zlipinski@math.uni.opole.pl Specyfikacja struktury FIXED_INFO Nazwa struktury:

Bardziej szczegółowo

wykład I uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Wstęp do języka C wykład I dr Jarosław Mederski Spis Ogólne informacje

wykład I uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Wstęp do języka C wykład I dr Jarosław Mederski Spis Ogólne informacje Programowanie uzupełnienie notatek: dr Jerzy Białkowski 1 2 3 4 5 6 7 Charakter wykładu ˆ zakłada znajomość idei programowania strukturalnego (np. w Pascalu) oraz podstaw używania środowiska UNIX (wykonywanie

Bardziej szczegółowo

Wstęp do Programowania 2

Wstęp do Programowania 2 Wstęp do Programowania 2 dr Bożena Woźna-Szcześniak bwozna@gmail.com Akademia im. Jana Długosza Wykład 2 Stałe całkowite inne niż dziesiętne Stałe ósemkowe Stałe szesnastkowe Aby wskazać czy dane maj a

Bardziej szczegółowo

Programowanie w językach

Programowanie w językach Programowanie w językach wysokiego poziomu Obsługa plików za pomocą strumieni Elektronika i Telekomunikacja, semestr III rok akademicki 2013/2014 dr inż. Paweł Myszkowski Plan zajęć a) otwieranie i zamykanie

Bardziej szczegółowo

Microsoft IT Academy kurs programowania

Microsoft IT Academy kurs programowania Microsoft IT Academy kurs programowania Podstawy języka C# Maciej Hawryluk Język C# Język zarządzany (managed language) Kompilacja do języka pośredniego (Intermediate Language) Kompilacja do kodu maszynowego

Bardziej szczegółowo

Programowanie obiektowe język C++

Programowanie obiektowe język C++ Programowanie obiektowe język C++ Dr inż. Sławomir Samolej D108A, tel: 865 1486, email: ssamolej@prz-rzeszow.pl WWW: ssamolej.prz-rzeszow.pl Podziękowanie: Chcę podziękować dr inż.. Grzegorzowi Hałdasiowi

Bardziej szczegółowo

Ćwiczenie nr 3. Wyświetlanie i wczytywanie danych

Ćwiczenie nr 3. Wyświetlanie i wczytywanie danych Ćwiczenie nr 3 Wyświetlanie i wczytywanie danych 3.1 Wstęp Współczesne komputery przetwarzają dane zakodowane za pomocą ciągów zerojedynkowych. W szczególności przetwarzane liczby kodowane są w systemie

Bardziej szczegółowo

Lista 2. int porownaj_liczby_normalnie(const int a, const int b) { if(a==b) return 0; if(a>b)return1; return-1; }

Lista 2. int porownaj_liczby_normalnie(const int a, const int b) { if(a==b) return 0; if(a>b)return1; return-1; } Lista 2 Poniższe zadania mają na celu jedynie pomoc w szlifowaniu umiejętności logicznego myślenia, analizowania i rozwiązywania pewnych zagadnienień algorytmicznych. Zadanie 1. W algorytmach opartych

Bardziej szczegółowo

Programowanie genetyczne, gra SNAKE

Programowanie genetyczne, gra SNAKE STUDENCKA PRACOWNIA ALGORYTMÓW EWOLUCYJNYCH Tomasz Kupczyk, Tomasz Urbański Programowanie genetyczne, gra SNAKE II UWr Wrocław 2009 Spis treści 1. Wstęp 3 1.1. Ogólny opis.....................................

Bardziej szczegółowo

JAVA. Platforma JSE: Środowiska programistyczne dla języka Java. Wstęp do programowania w języku obiektowym. Opracował: Andrzej Nowak

JAVA. Platforma JSE: Środowiska programistyczne dla języka Java. Wstęp do programowania w języku obiektowym. Opracował: Andrzej Nowak JAVA Wstęp do programowania w języku obiektowym Bibliografia: JAVA Szkoła programowania, D. Trajkowska Ćwiczenia praktyczne JAVA. Wydanie III,M. Lis Platforma JSE: Opracował: Andrzej Nowak JSE (Java Standard

Bardziej szczegółowo

PROGRAMOWANIE NISKOPOZIOMOWE. Struktury w C. Przykład struktury PN.06. c Dr inż. Ignacy Pardyka. Rok akad. 2011/2012

PROGRAMOWANIE NISKOPOZIOMOWE. Struktury w C. Przykład struktury PN.06. c Dr inż. Ignacy Pardyka. Rok akad. 2011/2012 PROGRAMOWANIE NISKOPOZIOMOWE PN.06 c Dr inż. Ignacy Pardyka UNIWERSYTET JANA KOCHANOWSKIEGO w Kielcach Rok akad. 2011/2012 1 2 Ćwiczenia laboratoryjne c Dr inż. Ignacy Pardyka (Inf.UJK) PN.06 Rok akad.

Bardziej szczegółowo

۰ Elementem jednostkowym takiego pliku jest bajt. ۰ Format pliku binarnego: [bajty pliku][eof]

۰ Elementem jednostkowym takiego pliku jest bajt. ۰ Format pliku binarnego: [bajty pliku][eof] 1 Plik jest wydzielonym fragmentem pamięci (najczęściej dyskowej) posiadającym nazwę. Z punktu widzenia C plik jest ciągiem bajtów, z których każdy może zostać oddzielnie odczytany. Zgodnie ze standardem

Bardziej szczegółowo

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk. Wydział Inżynierii Metali i Informatyki Przemysłowej

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk. Wydział Inżynierii Metali i Informatyki Przemysłowej Podstawy informatyki Informatyka stosowana - studia niestacjonarne Grzegorz Smyk Wydział Inżynierii Metali i Informatyki Przemysłowej Akademia Górniczo Hutnicza im. Stanisława Staszica w Krakowie, rok

Bardziej szczegółowo

EGZAMIN MAGISTERSKI, 25.06.2009 Biomatematyka

EGZAMIN MAGISTERSKI, 25.06.2009 Biomatematyka Biomatematyka 80...... Zadanie 1. (8 punktów) Rozpatrzmy prawo Hardy ego Weinberga dla loci związanej z chromosomem X o dwóch allelach A 1 i A 2. Załóżmy, że początkowa częstość allelu A 2 u kobiet jest

Bardziej szczegółowo

Dzisiejszy wykład. Przestrzenie nazw (namespaces) Funkcje o zmiennej liczbie argumentów

Dzisiejszy wykład. Przestrzenie nazw (namespaces) Funkcje o zmiennej liczbie argumentów Dzisiejszy wykład Przestrzenie nazw (namespaces) Funkcje o zmiennej liczbie argumentów 1 Przestrzenie nazw Globalna przestrzeń nazw jest jedna W programach pisanych przez wiele osób, lub korzystających

Bardziej szczegółowo

ZASTOSOWANIE ALGORYTMU GENETYCZNEGO DO WYZNACZANIA OPTYMALNYCH DECYZJI STERUJĄCYCH

ZASTOSOWANIE ALGORYTMU GENETYCZNEGO DO WYZNACZANIA OPTYMALNYCH DECYZJI STERUJĄCYCH ZASTOSOWANIE ALGORYTMU GENETYCZNEGO DO WYZNACZANIA OPTYMALNYCH DECYZJI STERUJĄCYCH KLAUDIUSZ MIGAWA 1 Uniwersytet Technologiczno-Przyrodniczy w Bydgoszczy Streszczenie Zagadnienia przedstawione w artykule

Bardziej szczegółowo

Biologicznie motywowane metody sztucznej inteligencji

Biologicznie motywowane metody sztucznej inteligencji Biologicznie motywowane metody sztucznej inteligencji Problem marszrutyzacji Paweł Rychlik Jacek Gąsiorowski Informatyka, SSI, sem. 7 Grupa GKiO1 Prowadzący: dr inż. Grzegorz Baron 1. Wstęp Problem marszrutyzacji

Bardziej szczegółowo

Laboratorium Podstawy Przetwarzania Rozproszonego SPRAWOZDANIE z zadania SERWIS KOMPUTEROWY

Laboratorium Podstawy Przetwarzania Rozproszonego SPRAWOZDANIE z zadania SERWIS KOMPUTEROWY Laboratorium Podstawy Przetwarzania Rozproszonego SPRAWOZDANIE z zadania SERWIS KOMPUTEROWY Nazwisko Imię album termin zajęć Marek Lewandowski 59817 Maciej Mietliński 59832 poniedziałek 18:30 tydzień nieparzysty

Bardziej szczegółowo

Pliki. Informacje ogólne. Obsługa plików w języku C

Pliki. Informacje ogólne. Obsługa plików w języku C Pliki Informacje ogólne Plik jest pewnym zbiorem danych, zapisanym w systemie plików na nośniku danych (np. dysku twardym, pendrive, płycie DVD itp.). Może posiadać określone atrybuty, a odwołanie do niego

Bardziej szczegółowo

Jak Windows zarządza pamięcią?

Jak Windows zarządza pamięcią? Jak Windows zarządza pamięcią? System Windows definiuje dwa typy pamięci, często mylone przez użytkowników. Pamięć fizyczna (pamięc RAM zainstalowana w komputerze) Pamięć widziana przez daną aplikację

Bardziej szczegółowo

Ilość cyfr liczby naturalnej

Ilość cyfr liczby naturalnej Ilość cyfr liczby naturalnej Użytkownik wprowadza liczbę naturalną n. Podaj algorytm znajdowania ilości cyfr liczby n. (Np.: po wprowadzeniu liczby 2453, jako wynik powinna zostać podana liczba 4). Specyfikacja

Bardziej szczegółowo

Problem Próby rozwiązania Maszyna stanów Inne zastosowania Podsumowanie. Maszyny stanów. Programowanie gier bez Unity, cz. 3.

Problem Próby rozwiązania Maszyna stanów Inne zastosowania Podsumowanie. Maszyny stanów. Programowanie gier bez Unity, cz. 3. Maszyny stanów Programowanie gier bez Unity, cz. 3 Piotr Korgul Koło Naukowe Twórców Gier Polygon 3 grudnia 2014 r. Cykl Programowanie gier bez Unity 1 Jak zorganizować prace nad grą? 2 Jak działa gra?

Bardziej szczegółowo

a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] a[10] 3-2 5 8 12-4 -26 12 45-76

a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] a[10] 3-2 5 8 12-4 -26 12 45-76 . p. 1 Algorytmem nazywa się poddający się interpretacji skończony zbiór instrukcji wykonania zadania mającego określony stan końcowy dla każdego zestawu danych wejściowych W algorytmach mogą występować

Bardziej szczegółowo

Generowanie i optymalizacja harmonogramu za pomoca

Generowanie i optymalizacja harmonogramu za pomoca Generowanie i optymalizacja harmonogramu za pomoca na przykładzie generatora planu zajęć Matematyka Stosowana i Informatyka Stosowana Wydział Fizyki Technicznej i Matematyki Stosowanej Politechnika Gdańska

Bardziej szczegółowo

Algorytmy ewolucyjne (2)

Algorytmy ewolucyjne (2) Algorytmy ewolucyjne (2) zajecia.jakubw.pl/nai/ ALGORYTM GEETYCZY Cel: znaleźć makimum unkcji. Założenie: unkcja ta jet dodatnia. 1. Tworzymy oobników loowych. 2. Stoujemy operacje mutacji i krzyżowania

Bardziej szczegółowo

Algorytm hybrydowy dla alokacji portfela inwestycyjnego przy ograniczonych zasobach

Algorytm hybrydowy dla alokacji portfela inwestycyjnego przy ograniczonych zasobach Adam Stawowy Algorytm hybrydowy dla alokacji portfela inwestycyjnego przy ograniczonych zasobach Summary: We present a meta-heuristic to combine Monte Carlo simulation with genetic algorithm for Capital

Bardziej szczegółowo

Nowe słowa kluczowe. Komentarze. Wskaźniki typu void. class, delete, new, friend,... /* Komentarz w C i C++ */ // Komentarz w C++ (do końca wiersza)

Nowe słowa kluczowe. Komentarze. Wskaźniki typu void. class, delete, new, friend,... /* Komentarz w C i C++ */ // Komentarz w C++ (do końca wiersza) Różnice między C i C++ (Rozszerzenia C++) Nowe słowa kluczowe class, delete, new, friend,... Komentarze /* Komentarz w C i C++ */ // Komentarz w C++ (do końca wiersza) Wskaźniki typu void W C wskaźniki

Bardziej szczegółowo

Podstawy OpenCL część 2

Podstawy OpenCL część 2 Podstawy OpenCL część 2 1. Napisz program dokonujący mnożenia dwóch macierzy w wersji sekwencyjnej oraz OpenCL. Porównaj czasy działania obu wersji dla różnych wielkości macierzy, np. 16 16, 128 128, 1024

Bardziej szczegółowo

Podstawy Programowania Obiektowego

Podstawy Programowania Obiektowego Podstawy Programowania Obiektowego Pojęcie struktury i klasy. Konstruktor i destruktor. Spotkanie 08 Dr inż. Dariusz JĘDRZEJCZYK Tematyka wykładu Spotkanie 08 Klasy: definicja a deklaracja klasy dane składowe

Bardziej szczegółowo

Obrona rozprawy doktorskiej Neuro-genetyczny system komputerowy do prognozowania zmiany indeksu giełdowego

Obrona rozprawy doktorskiej Neuro-genetyczny system komputerowy do prognozowania zmiany indeksu giełdowego IBS PAN, Warszawa 9 kwietnia 2008 Obrona rozprawy doktorskiej Neuro-genetyczny system komputerowy do prognozowania zmiany indeksu giełdowego mgr inż. Marcin Jaruszewicz promotor: dr hab. inż. Jacek Mańdziuk,

Bardziej szczegółowo

Podstawy programowania - 1

Podstawy programowania - 1 Podstawy programowania - 1 doc. dr inż. Tadeusz Jeleniewski Wykład: sobota B, godz. 10.30 12.55 sala 12 Laboratorium: sobota B, godz. 13.00 15.25 sala 2 sobota B, godz. 15.30-17.55 sala 2 e-mail: tadeusz.jeleniewski@pwr.wroc.pl

Bardziej szczegółowo

Diagramy UML, przykład problemu kolizji

Diagramy UML, przykład problemu kolizji Bogdan Kreczmer bogdan.kreczmer@pwr.edu.pl Katedra Cybernetyki i Robotyki Wydział Elektroniki Politechnika Wrocławska Kurs: Copyright c 2015 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu

Bardziej szczegółowo