B.Nachyla@ii.pw.edu.pl Warszawa,14 grudnia, 2014
Materiały do zajęć http://ii.pw.edu.pl/~bnachyla/mtw/exercises/ zadania-genetyczne.html
Zadanie Farma Piorta produkuje 2 tony jabłek dziennie, Farma Sławka produkuje 4 tony jabłek dziennie, Przetwórnia Michała potrzebuje 5 ton jabłek dziennie, Przetwórnia Karola potrzebuje 1 tonę jabłek dziennie.
Zadanie Farma Piorta produkuje 2 tony jabłek dziennie, Farma Sławka produkuje 4 tony jabłek dziennie, Przetwórnia Michała potrzebuje 5 ton jabłek dziennie, Przetwórnia Karola potrzebuje 1 tonę jabłek dziennie.
Zadanie Farma Piorta produkuje 2 tony jabłek dziennie, Farma Sławka produkuje 4 tony jabłek dziennie, Przetwórnia Michała potrzebuje 5 ton jabłek dziennie, Przetwórnia Karola potrzebuje 1 tonę jabłek dziennie.
Zadanie Farma Piorta produkuje 2 tony jabłek dziennie, Farma Sławka produkuje 4 tony jabłek dziennie, Przetwórnia Michała potrzebuje 5 ton jabłek dziennie, Przetwórnia Karola potrzebuje 1 tonę jabłek dziennie.
Koszty transportu 1 tony jabłek są następujące: Koszt transportu z farmy Piotra do przetwórni Michała to 1000 zł, Koszt transportu z farmy Piotra do przetwórni Karola to 1250 zł, Koszt transportu z farmy Sławka do przetwórni Michała to 1350 zł, Koszt transportu z farmy Sławka do przetwórni Karola to 1500 zł.
Koszty transportu 1 tony jabłek są następujące: Koszt transportu z farmy Piotra do przetwórni Michała to 1000 zł, Koszt transportu z farmy Piotra do przetwórni Karola to 1250 zł, Koszt transportu z farmy Sławka do przetwórni Michała to 1350 zł, Koszt transportu z farmy Sławka do przetwórni Karola to 1500 zł.
Koszty transportu 1 tony jabłek są następujące: Koszt transportu z farmy Piotra do przetwórni Michała to 1000 zł, Koszt transportu z farmy Piotra do przetwórni Karola to 1250 zł, Koszt transportu z farmy Sławka do przetwórni Michała to 1350 zł, Koszt transportu z farmy Sławka do przetwórni Karola to 1500 zł.
Koszty transportu 1 tony jabłek są następujące: Koszt transportu z farmy Piotra do przetwórni Michała to 1000 zł, Koszt transportu z farmy Piotra do przetwórni Karola to 1250 zł, Koszt transportu z farmy Sławka do przetwórni Michała to 1350 zł, Koszt transportu z farmy Sławka do przetwórni Karola to 1500 zł.
Koszty transportu 1 tony jabłek są następujące: Koszt transportu z farmy Piotra do przetwórni Michała to 1000 zł, Koszt transportu z farmy Piotra do przetwórni Karola to 1250 zł, Koszt transportu z farmy Sławka do przetwórni Michała to 1350 zł, Koszt transportu z farmy Sławka do przetwórni Karola to 1500 zł.
Koszty transportu 1 tony jabłek są następujące: Koszt transportu z farmy Piotra do przetwórni Michała to 1000 zł, Koszt transportu z farmy Piotra do przetwórni Karola to 1250 zł, Koszt transportu z farmy Sławka do przetwórni Michała to 1350 zł, Koszt transportu z farmy Sławka do przetwórni Karola to 1500 zł.
Koszty transportu 1 tony jabłek są następujące: Koszt transportu z farmy Piotra do przetwórni Michała to 1000 zł, Koszt transportu z farmy Piotra do przetwórni Karola to 1250 zł, Koszt transportu z farmy Sławka do przetwórni Michała to 1350 zł, Koszt transportu z farmy Sławka do przetwórni Karola to 1500 zł.
Koszty transportu 1 tony jabłek są następujące: Koszt transportu z farmy Piotra do przetwórni Michała to 1000 zł, Koszt transportu z farmy Piotra do przetwórni Karola to 1250 zł, Koszt transportu z farmy Sławka do przetwórni Michała to 1350 zł, Koszt transportu z farmy Sławka do przetwórni Karola to 1500 zł.
Jan jest właścicielem obu farm i przetwórni Chce tak zorganizować transport, aby zminimalizować koszty. Modelowanie: min(1000 x pm + 1250 x pk + 1350 x sm + 1450 x sk ) x pm - liczba ton jabłek przesyłana z farmy Piotra do przetwórni Michała x pk - liczba ton jabłek przesyłana z farmy Piotra do przetwórni Karola x sm - liczba ton jabłek przesyłana z farmy Sławka do przetwórni Michała x sk - liczba ton jabłek przesyłana z farmy Sławka do przetwórni Karola
Jan jest właścicielem obu farm i przetwórni Chce tak zorganizować transport, aby zminimalizować koszty. Modelowanie: min(1000 x pm + 1250 x pk + 1350 x sm + 1450 x sk ) x pm - liczba ton jabłek przesyłana z farmy Piotra do przetwórni Michała x pk - liczba ton jabłek przesyłana z farmy Piotra do przetwórni Karola x sm - liczba ton jabłek przesyłana z farmy Sławka do przetwórni Michała x sk - liczba ton jabłek przesyłana z farmy Sławka do przetwórni Karola
Jan jest właścicielem obu farm i przetwórni Chce tak zorganizować transport, aby zminimalizować koszty. Modelowanie: min(1000 x pm + 1250 x pk + 1350 x sm + 1450 x sk ) x pm - liczba ton jabłek przesyłana z farmy Piotra do przetwórni Michała x pk - liczba ton jabłek przesyłana z farmy Piotra do przetwórni Karola x sm - liczba ton jabłek przesyłana z farmy Sławka do przetwórni Michała x sk - liczba ton jabłek przesyłana z farmy Sławka do przetwórni Karola
Modelowanie min(1000 x pm + 1250 x pk + 1350 x sm + 1450 x sk ) przy ograniczeniach: x pm + x pk 2 x sm + x sk 4 x pm + x sm 5 x pk + x sk 1
Modelowanie min(1000 x pm + 1250 x pk + 1350 x sm + 1450 x sk ) przy ograniczeniach: x pm + x pk 2 x sm + x sk 4 x pm + x sm 5 x pk + x sk 1
Modelowanie min(1000 x pm + 1250 x pk + 1350 x sm + 1450 x sk ) przy ograniczeniach: x pm + x pk 2 x sm + x sk 4 x pm + x sm 5 x pk + x sk 1
Modelowanie min(1000 x pm + 1250 x pk + 1350 x sm + 1450 x sk ) przy ograniczeniach: x pm + x pk 2 x sm + x sk 4 x pm + x sm 5 x pk + x sk 1
Zadanie rozwiążemy metodą Algorytmów Genetycznych Użyjemy biblioteki <b>ga</b> install.packages("ga") library(ga) Uruchomienie zadania: GA <- ga(type = real-valued, fitness = function(x) -Evaluation(x), min = c(0, 0,0,0), max = c(2, 2, 4, 4), popsize = 50, maxiter = 100) summary(ga) plot(ga)
Zadanie rozwiążemy metodą Algorytmów Genetycznych Użyjemy biblioteki <b>ga</b> install.packages("ga") library(ga) Uruchomienie zadania: GA <- ga(type = real-valued, fitness = function(x) -Evaluation(x), min = c(0, 0,0,0), max = c(2, 2, 4, 4), popsize = 50, maxiter = 100) summary(ga) plot(ga)
Zadanie rozwiążemy metodą Algorytmów Genetycznych Użyjemy biblioteki <b>ga</b> install.packages("ga") library(ga) Uruchomienie zadania: GA <- ga(type = real-valued, fitness = function(x) -Evaluation(x), min = c(0, 0,0,0), max = c(2, 2, 4, 4), popsize = 50, maxiter = 100) summary(ga) plot(ga)
Funkcja ewaluacji Evaluation <- function(x){ fact=10^9 penalty=(abs(x[1]+x[2]-2)+abs(x[3]+x[4]-4)+abs(x[1]+x[3]- 5)+abs(x[2]+x[4]-1)) return(c(1000,1250,1350,1500)%*%x+fact*penalty) } penalty - kara za niedotrzymanie ograniczeń, fact - współczynnik zwiększający siłę kary
Funkcja ewaluacji Evaluation <- function(x){ fact=10^9 penalty=(abs(x[1]+x[2]-2)+abs(x[3]+x[4]-4)+abs(x[1]+x[3]- 5)+abs(x[2]+x[4]-1)) return(c(1000,1250,1350,1500)%*%x+fact*penalty) } penalty - kara za niedotrzymanie ograniczeń, fact - współczynnik zwiększający siłę kary
Funkcja ewaluacji Evaluation <- function(x){ fact=10^9 penalty=(abs(x[1]+x[2]-2)+abs(x[3]+x[4]-4)+abs(x[1]+x[3]- 5)+abs(x[2]+x[4]-1)) return(c(1000,1250,1350,1500)%*%x+fact*penalty) } penalty - kara za niedotrzymanie ograniczeń, fact - współczynnik zwiększający siłę kary
Uwaga: zmiennej x pm odpowiada element x[1], zmiennej x pk odpowiada element x[2], zmiennej x sm odpowiada element x[3], zmiennej x sk odpowiada element x[4].
Uwaga: zmiennej x pm odpowiada element x[1], zmiennej x pk odpowiada element x[2], zmiennej x sm odpowiada element x[3], zmiennej x sk odpowiada element x[4].
Uwaga: zmiennej x pm odpowiada element x[1], zmiennej x pk odpowiada element x[2], zmiennej x sm odpowiada element x[3], zmiennej x sk odpowiada element x[4].
Uwaga: zmiennej x pm odpowiada element x[1], zmiennej x pk odpowiada element x[2], zmiennej x sm odpowiada element x[3], zmiennej x sk odpowiada element x[4].
Interpretacja wykresu
Zadanie 2 Funkcja kary w naszym rozwiązaniu nie uwzględnia kierunków nierówności w ograniczeniach, na przykład w przypadku nierówności x pm + x pk 2 stosowany do tej pory czynnik kary przyjmie taką samą wartość gdy x pm + x pk = 1 jak gdy x pm + x pk = 3, choć tylko druga sytuacja niespełnia ograniczenia. Proszę zaproponować modyfikację kary, która uzwględni kierunki nierówności w ograniczeniach.
Zadanie 2 Funkcja kary w naszym rozwiązaniu nie uwzględnia kierunków nierówności w ograniczeniach, na przykład w przypadku nierówności x pm + x pk 2 stosowany do tej pory czynnik kary przyjmie taką samą wartość gdy x pm + x pk = 1 jak gdy x pm + x pk = 3, choć tylko druga sytuacja niespełnia ograniczenia. Proszę zaproponować modyfikację kary, która uzwględni kierunki nierówności w ograniczeniach.
Zadanie 2 Funkcja kary w naszym rozwiązaniu nie uwzględnia kierunków nierówności w ograniczeniach, na przykład w przypadku nierówności x pm + x pk 2 stosowany do tej pory czynnik kary przyjmie taką samą wartość gdy x pm + x pk = 1 jak gdy x pm + x pk = 3, choć tylko druga sytuacja niespełnia ograniczenia. Proszę zaproponować modyfikację kary, która uzwględni kierunki nierówności w ograniczeniach.
Zadanie 2 - przykład rozwiązania W ograniczeniach: x[1]+x[2] 2 x[3]+x[4] 4 x[1]+x[3] 5 x[2]+x[4] 1 Po przeniesieniu dwóch pierwszych przypadkach na lewą stronę a w pozostałych naprawą stronę nierówności oraz oznaczeniu wyrażeń przez t1, t2, t3 oraz t4 odpowiednio, otrzymujemy: t1=x[1]+x[2]-2 t2=x[3]+x[4]-4 t3=5-x[1]+x[3] t4=1-x[2]+x[4].
Zadanie 2 - przykład rozwiązania W ograniczeniach: x[1]+x[2] 2 x[3]+x[4] 4 x[1]+x[3] 5 x[2]+x[4] 1 Po przeniesieniu dwóch pierwszych przypadkach na lewą stronę a w pozostałych naprawą stronę nierówności oraz oznaczeniu wyrażeń przez t1, t2, t3 oraz t4 odpowiednio, otrzymujemy: t1=x[1]+x[2]-2 t2=x[3]+x[4]-4 t3=5-x[1]+x[3] t4=1-x[2]+x[4].
Zadanie 2 - przykład rozwiązania W ograniczeniach: x[1]+x[2] 2 x[3]+x[4] 4 x[1]+x[3] 5 x[2]+x[4] 1 Po przeniesieniu dwóch pierwszych przypadkach na lewą stronę a w pozostałych naprawą stronę nierówności oraz oznaczeniu wyrażeń przez t1, t2, t3 oraz t4 odpowiednio, otrzymujemy: t1=x[1]+x[2]-2 t2=x[3]+x[4]-4 t3=5-x[1]+x[3] t4=1-x[2]+x[4].
Zadanie 2 - przykład rozwiązania W poniższej funkcji karę zwiększamy o wartość t1, t2, t3 lub t4 kiedy nie jest spełniona odpowiednia nierówność: Evaluation <- function(x){ fact=10^9 penalty=0 t1=x[1]+x[2]-2 if(t1>0) penalty=penalty+t1 t2=x[3]+x[4]-4 if(t2>0) penalty=penalty+t2 t3=5-x[1]-x[3] if(t3>0) penalty=penalty+t3 t4=1-x[2]-x[4] if(t4>0) penalty=penalty+t4 return(c(1000,1250,1350,1500)%*%x+fact*penalty) }
Zadanie 3 Rozwiązać zadanie dla większego problemu (np. 7 producentów i 8 przetwórni) Należy pobrać plik http://ii.pw.edu.pl/~bnachyla/mtw/exercises/ zadanie3.r oraz wypełnić brakujące elementy (znaki?)
Zadanie 3 Rozwiązać zadanie dla większego problemu (np. 7 producentów i 8 przetwórni) Należy pobrać plik http://ii.pw.edu.pl/~bnachyla/mtw/exercises/ zadanie3.r oraz wypełnić brakujące elementy (znaki?)
Zadanie 3 - wyjaśnienie Funkcja randtransportproblem <- function(f,d,sf,sd) generuje: wielkości produkcji dla F farm, wielkości zapotrzebowania dla D przetwórni oraz koszty przesyłów (F D), przy łącznej produkcji sf oraz łącznym zapotrzebowaniu sd.
Zadanie 3 - wyjaśnienie Funkcja randtransportproblem <- function(f,d,sf,sd) generuje: wielkości produkcji dla F farm, wielkości zapotrzebowania dla D przetwórni oraz koszty przesyłów (F D), przy łącznej produkcji sf oraz łącznym zapotrzebowaniu sd.
Zadanie 3 - wyjaśnienie Należy także wypełnić minimalne i maksymalne ograniczenia rozwiązań: Jeśli mamy 4 farmy które produkują odpowiednio od=(7,6,9,6) ton jabłek oraz 7 przetwórni, to: max=(7 7 7 7 7 7 7 6 6 6 6 6 6 6 9 9 9 9 9 9 9 6 6 6 6 6 6 6), min to wektor 28 zer.
Zadanie 3 - wyjaśnienie Należy także wypełnić minimalne i maksymalne ograniczenia rozwiązań: Jeśli mamy 4 farmy które produkują odpowiednio od=(7,6,9,6) ton jabłek oraz 7 przetwórni, to: max=(7 7 7 7 7 7 7 6 6 6 6 6 6 6 9 9 9 9 9 9 9 6 6 6 6 6 6 6), min to wektor 28 zer.
Zadanie 3 - wyjaśnienie Należy także wypełnić minimalne i maksymalne ograniczenia rozwiązań: Jeśli mamy 4 farmy które produkują odpowiednio od=(7,6,9,6) ton jabłek oraz 7 przetwórni, to: max=(7 7 7 7 7 7 7 6 6 6 6 6 6 6 9 9 9 9 9 9 9 6 6 6 6 6 6 6), min to wektor 28 zer.
Zadanie 3 - wyjaśnienie Należy także wypełnić minimalne i maksymalne ograniczenia rozwiązań: Jeśli mamy 4 farmy które produkują odpowiednio od=(7,6,9,6) ton jabłek oraz 7 przetwórni, to: max=(7 7 7 7 7 7 7 6 6 6 6 6 6 6 9 9 9 9 9 9 9 6 6 6 6 6 6 6), min to wektor 28 zer.
Zadanie 3 - rozwiązanie min = rep(0,f*d), max = rep(od,each=f)
Zadanie 3 - rozwiązanie min = rep(0,f*d), max = rep(od,each=f)
Zadanie 4 W rozwiązaniach otrzymujemy wartości rzeczywiste o długim rozwinięciu dziesiętnych. Pakiet GA nie wyróżnia zadań o rozwiązaniach całkowitoliczbowych. W jaki sposób sprawić, żeby transportować z danej farmy do przetwórni ilość ton jabłek, która jest liczbą całkowitą?
Zadanie 4 W rozwiązaniach otrzymujemy wartości rzeczywiste o długim rozwinięciu dziesiętnych. Pakiet GA nie wyróżnia zadań o rozwiązaniach całkowitoliczbowych. W jaki sposób sprawić, żeby transportować z danej farmy do przetwórni ilość ton jabłek, która jest liczbą całkowitą?
Zadanie 4 - rozwiązanie Rozwiązanie polega na dodaniu drugiego czynnika kary za odległość od najbliższej liczby całkowitej: Evaluation <- function(x,k,od,of,d,f){... penalty2=sum(abs(x-round(x))) penalty=penalty1+penalty2... }
Zadanie do domu Należy zapoznać się z metodami mutacji i krzyżowania dostepnymi w pakiecie GA. Które z nich można zastosować w naszym zadaniu? Sprawdzić ich działanie. Ograniczenia nie zawsze są spełnione dokładnie. Czasami farma dostarcza więcej jabłek niż może wyprodukować. Jak można wyeliminować ten problem?
Zadanie do domu Należy zapoznać się z metodami mutacji i krzyżowania dostepnymi w pakiecie GA. Które z nich można zastosować w naszym zadaniu? Sprawdzić ich działanie. Ograniczenia nie zawsze są spełnione dokładnie. Czasami farma dostarcza więcej jabłek niż może wyprodukować. Jak można wyeliminować ten problem?