Ćwiczenie 4

autor: dr hab. inż. M. Kotulska

modyfikacje: mgr inż. B. Konopka

1) Zapoznaj się ze środowiskiem języka R

a. w

ww.youtube.com – szukaj Statistics with R (part 1), user: wildsc0p b. R-intro.pdf

c. ht

tp://linuxgazette.net/138/dellomodarme.html

2) Uruchom przykładowe programy:

a. Jak definiujesz w R wektory? Jak macierze? Jak listy (struktury)? Jak wyciągamy elementy danych każdego typu?

b. Jak korzystać z helpa poszukiwanej funkcji? Co zrobić jeżeli nie wiemy jaki pakiet trzeba wczytać, żeby uruchomić funkcję realizującą określone zadanie?

i. Co robią funkcje: ls(), rbind(), cbind() ii. Poszukaj informacji o teście Kołmogorowa-Smirnova 1. Jak funkcja, jaka biblioteka?

c. Jak wpisać w odrębny plik własny skrypt? Jak go potem uruchomić? Jak wprowadza się komentarz?

d. Jak narysować wykres funkcji? ( plot, plot.default, curve, lines, boxplot, pakiety: rgl, scatterplot3d). Przykłady np.

http://linuxgazette.net/138/dellomodarme.html

Co robi skrypt:

x = c(1:36)

y = c( 1:36)

z <- sin(pi*(x)/18) %o% cos(pi*(y)/18) library(lattice)

wireframe(z, drape=TRUE, xlab="x", ylab="y", scale=list(arrows=FALSE)) i. narysuj wykres funkcji f(x)=x^2+2x+3 za pomocą plot() i curve(), 1. opisz wykres (tytuł, osie)

2. spróbuj różnych kolorów

3. spróbuj różnych metod wyświetlania punktów (linie, kółka...) e. Jak zapisać grafikę?

wykonaj poniższy skrypt i wjaśnij poszczególne linie: jpeg("obrazek.jpeg", width=640, height=480) plot(c(1,2,3))

dev.off()

i. Co robią f-cje pdf, bmp ?

ii. Zapisz wykres funkcji f(x) z pkt. „d” do pliku f. Jak wpisać dane do pliku (binarne, tekstowe). Jak w pliku zapisać macierz/tablicę? Jak wczytać dane z pliku ? (wypróbuj f-cje read.table, read.csv, write...load )

3) Jak pracować z własnymi funkcjami? Zacznij od przykładu: moja = function (x) {

moja=x+100

# wynik funkcji jest wynikiem podstawień w ostatniej linii z=x+1

}

moja2 = function(x) {

moja=x+100

# wynik jest w ostatniej linii

z=moja(x)+1

}

4) Jakim poleceniem wczytać całą bibliotekę, a jakim własny kod funkcji/skryptu z pliku 5) Napisz program, który zainicjuje populację dla algorytmu genetycznego, szukającego sin210x 

maksimum funkcji dopasowania f  x=

, dla x ϵ [0,1]. Program ma także

1 x

narysować tą funkcję oraz wskazać na tym wykresie jakie wartości funkcji dopasowania mają osobniki w populacji. Wykres powinien posiadać legendę oraz dobrze opisane osie. Wygeneruj plik pdf z wykresem, a populację zapisz do pliku tekstowego.

a.

Parametry populacji:

i. długość chromosomu 10

ii. ustawiana zmienna liczba osobników b. Populacja musi być listą z trzema polami: i. chr - chromosom

ii. x - wartości w systemie dziesiątkowym iii. y – wartości funkcji dopasowania c.

Kroki:

i. wylosuj z rozkładu równomiernego n wartości x ii. zamień wartości x na liczby binarne(zaimplementuj podany pseudokod), długość chromosomu to 10

iii. wylicz wartości f(x)

Pseudokod:

chromosom=zamiana dziesiętny na binarny (a){

a=round(a*1000)

chromosom=zeros(1,10) %deklaracja chromosomu tmp=a

Dla każdego wykładnika

od 9 do 0 {

a= a mod 2^wykładnik

Jeżeli „a” nie zmieniło się:

to chromosom(i)=0

W przeciwnym wypadku

chromosom(i)=1

koniec

}

chromosom

}