Fragment rozprawy doktorskiej: „Wybór strategii dostaw i

Transkrypt

Fragment rozprawy doktorskiej: „Wybór strategii dostaw i
Fragment rozprawy doktorskiej: „Wybór strategii dostaw i magazynowania materiałów
budowlanych z zastosowaniem algorytmów genetycznych” autorstwa Michała Krzemińskiego
5.3.
Program
komputerowy
sterowania
zapasami
z
zastosowaniem
algorytmów
genetycznych
5.3.1. Wprowadzenie
Program
komputerowy
„Algorytm
Genetyczny
Sterowania
Dostawami
i
Magazynowaniem Materiałów Budowlanych” (AGSDiMMB) został napisany w obiektowym
języku programowania Java. Algorytm programu w postaci schematycznej został
przedstawiony na rys 5.13.
Rys 5.13. Schemat programu komputerowego AGSDiMMB.
Opis poszczególnych bloków algorytmu znajduje się w rozdziale: 5.3.2. Instrukcja
obsługi programu.
5.3.2. Instrukcja obsługi programu AGSDiMMB
5.3.2.1.
Instalacja programu AGSDiMMB
Program „AGSDiMMB” pracuje w każdym środowisku w którym zostało
zaimplementowane środowisko uruchomieniowe Javy( Java Runtime Environment w skrócie
JRE). Oznacza to tyle że aby uruchomić program należy najpierw zainicjować środowisko
Javy poprzez instalację JRE 6 update 14 lub nowszy [14\. Inicjator środowiska Javy można
pobrać za darmo ze strony firmy SUN Mikrosystem (http://www.java.com/pl/download/)
twórcy języka programowania Java. Program nie wymaga instalacji. Należy jednak pamiętać
o tym aby plik agdsimmb.jar był umieszczony w tym samym katalogu co katalog PLIKI. Jest
to konieczne ponieważ w katalogu dane znajdują się niezbędne informacje dotyczące
normatywów składowania dla materiałów budowlanych.
5.3.2.2.
Uruchomienie programu AGSDiMMG
Program „AGSDiMMB” uruchamia się poprzez dwukrotne kliknięcie na ikonę
programu. Po wykonaniu tej operacji zostanie uruchomiona „KLASA GŁOWNA” której
zadaniem jest uruchamianie kolejno wszystkich klas. Dodatkowo klasa główna odpowiadać
będzie za określoną jako tysiąc ilość przejść pętli głównej. Jako pierwsza zostanie
uruchomiona „KLASA OKNO WPROWADZANIA DANYCH”. Na ekranie pokaże się
pierwsze z okien wprowadzania danych. Na rys. 5.14 zaprezentowano zdjęcie z ekranu na
którym to okno jest widoczne.
Rys. 5.14. Pierwsze okno wprowadzania danych.
5.3.2.3.
Wprowadzanie danych do programu AGSDiMMB
Wybór rodzaju składowiska
Pierwszą daną jaką należy wprowadzić jest wybranie z listy rodzaju składowanego
materiału. Na górze ekranu znajduje się napis „Wybierz z listy rodzaj składowanego
materiału” a obok niego tzw. „ComboBox”, czyli rozwijana lista, z której należy wybrać
rodzaj materiału dla jakiego prowadzona będzie optymalizacja strategii dostaw i
magazynowania
materiałów
budowlanych.
Operacja
ta
uruchamia
blok
„KLASA
WCZYTYWANIA DANYCH MATERIAŁOWYCH Z PLIKU”. Do wyboru użytkownik
otrzyma jedną z trzech możliwości, czyli składowiska otwarte, składowiska zadaszone oraz
składowiska zamknięte. Należy kliknąć lewym klawiszem myszy na opcji która nas interesuje
w danym momencie, aby uzyskać dostęp do opcji należy uprzednio kliknąć lewym klawiszem
na mały trójkącik znajdujący się po prawej stronie pola „ComboBox’ [13]. W przykładzie
prezentowanym na rysunku zostały wybrane składowiska otwarte.
Wybór materiału
Drugą informację jaka należy wprowadzić do programu jest wybranie rodzaju
konkretnego materiału jaki będzie składowany. Na górze ekranu z prawej strony obok napisu
:wybierz materiał z listy” znajduje się kolejna lista z której należy wybrać konkretny materiał.
Trójkąt po prawej stronie rozwija listę natomiast wyboru dokonujemy poprzez kliknięcie
lewym klawiszem myszy na wybrany materiał. Dobrym udogodnieniem wpływającym na
obsługę programu jest fakt że listę konkretnych materiałów każdy użytkownik może
rozbudowywać w prosty sposób. Jest to możliwe ponieważ listy zostały zamieszczone w
plikach tekstowych znajdujących się w katalogu PLIKI. Pliki te można edytować w każdym
edytorze tekstu, należy jednak pamiętać że bardzo waży jest prawidłowy zapis. Nazwę
każdego nowego materiału należy wprowadzać w nowym wierszu, a dane dotyczące
normatywów powierzchni składowania i jednostki w jakiej mierzony jest materiał należy
rozdzielać średnikami, na rys. 5.15 zaprezentowano plik tekstowy zawierający listę
materiałów budowlanych składowanych na składowiskach otwartych.
Rys. 5.15. Wprowadzanie nowego rodzaju materiału do bazy materiałów.
Wprowadzanie harmonogramu zużycia
Kolejnym etapem jest wprowadzanie danych dotyczących harmonogramu zużycia
materiału budowlanego. Aby wprowadzić te dane należy kliknąć lewym klawiszem myszy
„Wprowadź harmonogram zużycia materiału”. Zostaje uruchomiona „KLASA OKNO
WPROWADZANIA HARMONOGRAMU ZUŻYCIA” Program automatycznie skieruje
użytkownika do nowego okna, które znajduje się na rys. 5.16.
Rys. 5.16. Okno wprowadzania harmonogramu zużycia materiału.
Możliwe są dwa sposoby wprowadzania harmonogramu zużycia materiałów. Zanim
jednak przejdziemy do opisu tych dwóch metod należy zaznaczyć że w każdym przypadku
należy najpierw wybrać jednostkę czasową na jakiej opisany jest harmonogram. Do wyboru
mamy pięć jednostek czasowych: dzień, tydzień, miesiąc, kwartał i rok. Wyboru jednostki
dokonujemy przy użyciu lewego klawisza myszy, a wybieramy z rozwijanej listy znajdującej
się po prawej stronie napisu „Wybierz rodzaj jednostki czasowej”. Następnie można przejść
do wprowadzania danych dotyczących wielkości zużycia w poszczególnych jednostkach
czasowych.
Pierwszy sposób to wprowadzanie ręczne. Najpierw podajemy ilość jednostek
czasowych w okienku znajdującym się po prawej stronie napisu „Podaj ilość jednostek
czasowych”. Wpisana liczbę zatwierdzamy klawiszem „enter”. Wpisanie tej wartości
spowoduje automatyczne wygenerowanie tabeli o zakładanej długości równej długości
rozpatrywanego horyzontu czasowego. Operacja ta wykonywana jest przez blok „KLASA
MODEL TABELI HARMONOGRAMU”. Przykładowa tabela dla 10 dni została pokazana na
rysunku 5.17.
Rys. 5.17. Tabela wprowadzania harmonogramu zużycia materiału.
Dane dotyczące wielkości zużycia wprowadzamy do prawej kolumny „Wielkość
zużycia” Aby wprowadzić dane należy dwukrotnie kliknąć na komórce prawym klawiszem
myszy a następnie wpisać wymaganą wartość, aby zatwierdzić należy nacisnąć przycisk
„enter”. Dane można w każdej chwili modyfikować powtarzając te samą operację. Na ekranie
wyświetlane jest jednorazowo pięć wierszy, aby przewijać tabelę harmonogramu należy
używać suwaka który znajduje się po prawej stronie tabeli. W tabeli wszystkie wiersze
zostały automatycznie wypełnione wartością „0.0”, w ten sam sposób należy zaznaczać
jednostki czasowe wolne od zużycia czyli na przykład soboty, niedziele, święta wolne od
pracy lub inne dni w których nie przewiduje się zużycia. Ważnym jest aby w przypadku gdy
wielkość zużycia nie może być określona przez liczbę całkowitą, jako rozdzielacz liczb
ułamkowych stosować znak kropki
Po wprowadzeniu harmonogramu zużycia istnieje możliwość zapisania go w pliku.
Aby to zrobić należy kliknąć lewym klawiszem myszy na przycisk „Zapisz harmonogram w
…”, zostaniemy skierowani to okna zapisywania harmonogramu. Zapisywanie wygląda tak
samo jak zapisywanie każdego innego pliku w środowisku Windows. Tak zapisany
harmonogram można ponownie wczytać. Na przykład przy kolejnym uruchomieniu
programu.
Jest to drugi sposób wczytywania harmonogramu zużycia i aby to zrobić należy
kliknąć lewym klawiszem myszy na przycisk „Z pliku …”. Dalsza część jest również taka
sama jak w przypadku wczytywania dowolnego innego np. dokumentu w środowisku
Windows, należy jednak pamiętać o wyborze jednostki zużycia ponieważ program
automatycznie wybiera jako jednostkę dzień. Kiedy wszystkie dane dotyczące harmonogramu
zużycia zostaną wczytane należy nacisnąć przycisk „Gotowe” [73] lewym klawiszem myszy.
Ta operacja skieruje użytkownika z powrotem do okna początkowego znajdującego się na
rysunku 5.14. Równocześnie zostanie w programie uruchomiona kolejna „KLASA
HARMONOGRAM ZYŻYCIA”
Wprowadzanie kosztów
Aby wprowadzić koszty związane ze składowaniem i dostawami materiałów
budowlanych należy kliknąć lewym klawiszem myszy na przycisku „Wprowadź koszty
zapasów” Po naciśnięciu przycisku automatyczne zostanie otwarte nowe okno, które znajduje
się na rysunku 5.18 oraz zostanie uruchomiona „KLASA OKNA WPROWADZANIA
KOSZTÓW MIO.
Rys. 5.18. Okno wprowadzania kosztów magazynowania i obsługi.
Domyślną jednostką w jakiej należy wprowadzać koszty jest złotówka na metr
kwadratowy powierzchni placu składowego. Jeżeli dysponujemy danymi w innej postaci
należy je najpierw przeliczyć. Wprowadzanie danych polega na dwukrotnym kliknięciu w
pole w które chcemy wprowadzić konkretną wartość a następnie na wpisaniu tej wartości i
zatwierdzeniem klawiszem „enter”. Tak samo jak w przypadku liczb ułamkowych w
harmonogramie zużycia jako rozdzielacza należy używać kropki. Kiedy zostaną
wprowadzone wszystkie wartości należy kliknąć również lewym przyciskiem myszy na
przyciski „Następne >>” znajdujący się w prawym dolnym rogu okna. Po wykonaniu tej
operacji program automatycznie otworzy kolejne okno i uruchomi kolejny blok „KLASA
OKNO WPROWADZANIA KOSZTÓW UZiTD” Należy w nim wprowadzić resztę danych
dotyczących kosztów magazynowania. Okno to znajduje się na rysunku 5.19.
Rys. 5.19. Okno wprowadzania kosztów tworzenia dostaw i utrzymania zapasów.
Wypełnianie kolejnych pól tekstowych przebiega tak samo jak w przypadku
wypełniania pól w poprzednim oknie. U góry po lewej stronie znajdują się cztery pola
tekstowe do których należy wpisać dane dotyczące kosztów tworzenia dostaw, także u góry
ale po prawej stronie można wpisać dane dotyczące wysokości rabatów jakie można
uzyskiwać przy zamówieniu większej partii materiału. Użytkownik ma możliwość
wprowadzenia wartości dla dwóch progów rabatowych. Koszt utrzymania zapasów należy
wprowadzać do okienek znajdujących się w dolnej części programu po lewej stronie. W
przypadku wypełniania tej części okna należy najpierw podać dostępną na placu wielkość
powierzchni magazynowej. Wielkość ta podawana jest w metrach. Jest to taka część
powierzchni magazynowej jaka z założenia zostaje przeznaczona i zarezerwowana dla danego
materiału. Następnie należy podać wielkość kosztów jakie zostaną poniesione ze względu na
zarezerwowanie tej powierzchni. Wiadomo że poza powierzchnią magazynową znajdującą się
w obrębie placu składowego istnieje również możliwość wynajęcia dodatkowej powierzchni
magazynowej na terenie znajdującym się niedaleko placu Budowu. Taki podnajęty teren także
można traktować jako teren placu składowego. Dzierżawa terenu wiąże się jednak z
poniesieniem dodatkowych kosztów można przyjąć że koszty te będą zależne od wielkości
powierzchni jaką podnajmujemy. W programie podajemy przedziałowo że za każde następne
„x” metrów płacimy określona kwotę. Kiedy określone zostaną już wszystkie koszty
związane z zapasami należy powrócić do głównego okna wprowadzania. Aby to zrobić należy
nacisnąć lewym klawiszem myszy przyciski „Gotowe”. Kiedy przyciski zostanie przyciśnięty
program automatycznie skieruje nas do okna wprowadzania danych. Zostanie również
uruchomiona „KLASA KOSZTÓW ZAPASÓW”
Wybór sposobu prowadzenia obliczeń
Program
może
wykonywać
obliczenia
w
sposób
deterministyczny
lub
probabilistyczny. Aby wybrać sposób deterministyczny należy zaznaczyć używając lewego
klawisza myszy kółko znajdujące się po lewej stronie napisu „Deterministyczny”. Jeżeli
natomiast
zaznaczone
zostanie
kółko
znajdujące
się
po
prawej
obok
napisu
„Probabilistyczny” obliczenia zostaną wykonane z uwzględnieniem czynników losowych.
Jeżeli wybrana zostanie druga opcja należy także podać zakładaną pewność z jaką
chcielibyśmy uzyskać wyniki obliczeń. Pewność należy wprowadzić w procentach w polu
tekstowym znajdującym się po prawej stronie napisu „Wymagana pewność”. Dane te są
przekazane do bloku „KLASA FUNKCJA PRZYSTOSOWANIA”. Na rysunku 5.20
pokazano fragment okna wprowadzania danych gdzie użytkownik dokonuje wyboru sposobu
wykonywania obliczeń.
Rys. 5.20. Sposób wykonywania obliczeń.
W rozpatrywanym przykładzie wybrano probabilistyczny sposób prowadzenia
obliczeń. Wymaganą pewność poprawności wyników ustawiono na poziomie 70 %.
Wybór sposobu zatrzymania algorytmu
W programie przewidziano dwa sposoby zakończenia pracy pętli algorytmu. Oba
wybierane są poprzez kliknięcie lewym przyciskiem myszy na kółko znajdujące się po lewej
stronie napisu oznaczającego jedną z opcji. Jeżeli wybierzemy opcje z osiągnięciem pełnej
zbieżności program będzie liczył tak długo aż osiągnie zbieżność czyli do momentu w którym
wszystkie osobniki populacji będą takie same. Drugim sposobem jaki jest dostępny do
wyboru jest wpisanie do okna tekstowego znajdującego się po prawej stronie napisu ”Liczba
interacji” zakładanej liczby interacji. Jeżeli wybierzemy tą opcję program wykona zakładaną
liczbę przejść pełnej pętli i na tym skończy wybierając najlepszy chromosom. Dane
wprowadzone w tej klasie zostaną przekazane do bloku „WARUNEK ZATRZYMANIA”. Na
rysunku 5.21 pokazano fragment okna wprowadzania danych gdzie użytkownik dokonuje
wyboru sposobu zatrzymania obliczeń.
Rys. 5.21. Sposób wykonywania obliczeń.
W rozpatrywanym przykładzie wybrano zatrzymanie działania pętli poprzez
osiągnięcie zakładanej z góry liczby interacji wynoszącej 100.
5.3.2.4.
Wykonanie obliczeń oraz wyniki
Aby uruchomić wykonywanie obliczeń w należy nacisnąć przyciski „Wykonaj
obliczenia” znajdujący się w dole ekranu. Uruchomienie obliczeń spowoduje uruchomienie
KLASY GENERATOR CHROMOSOMÓW” Klasa ta wygeneruję populację rodzicielską.
Dane niezbędne do opracowania populacji zostaną pozyskane ze wcześniej uruchomionej
klasy zawierającej dane na temat harmonogramu zużycia. Kolejnym etapem jest określenie
wartości funkcji przystosowania poszczególnych osobników. Jest to pierwszy z etapów pętli
głównej programu. Za wyznaczenie wartości tej funkcji odpowiada „KLASA FUNKCJA
PRZYSTOSOWANIA”. Kolejną operacją jaką wykonuje program jest wyznaczenie
najlepszego chromosomu. Za te operację odpowiedzialna jest „KLASA NAJLEPSZE
CHROMOSOMY” Następnie wykonywane są kolejne trzy operacje. Dokładny opis sposobu
wykonywania tych operacji został przedstawiony w opisie działania algorytmu, rozdziały 4.2.
i 4.3. Kolejnym blokiem kończącym pętlę główna programu jest blok „WARUNEK
ZATRZYMANIA” Dane do tego bloku zostają przekazane z „KLASY OKNO
WPROWADZANIA
DANYCH”.
Jeżeli
zadziała
warunek
zatrzymania
następuję
automatyczne uruchomienie dwóch klas odpowiedzialnych za opracowanie wyników
końcowych. Klasy te to: „KLASA MODEL TABELI WYNIKÓW” i „KLASA OKNO
WYNIKÓW”. Druga z wymienionych klas powoduje włączenie się okna wyników na ekranie
komputera, znajdującego się na rysunku 5.22.
Rys. 5.22. Okno wyników.
W oknie w formie tabelarycznej zostanie przedstawiona optymalna polityka dostaw i
magazynowania materiałów oraz łączny koszt związany z tym rozwiązaniem. Program
umożliwia także zapisywanie wyników obliczeń w pliku. Aby to zrobić należy nacisnąć
przycisk „Zapisz wyniki w …” znajdujący się w lewym dolnym rogu okna. Istnieje także
możliwość powrotu do początku programu w celu wykonania nowych obliczeń, a także
możliwość zakończenia prac w programie. Obie te funkcje dostępne są dzięki użyciu
przycisków znajdujących się w prawym dolnym rogu okna
5.3.3. Podsumowanie
Program komputerowy AGSDiMMB jest programem umożliwiającym obliczenia w
których sprawdzana są nawet miliony różnych możliwych rozwiązań. Ilości możliwych
rozwiązań przeglądane przez program w przypadkach długich horyzontów czasowych nie są
równe wielkości permutacji zbioru możliwych rozwiązań, mogą to być jednak wartości o
porównywalnych rzędach wielkości [34]. Program komputerowy jest więc narzędziem
niezbędnym w przypadku w którym chcemy stosować techniki obliczeniowe oparte na
algorytmach genetycznych.
Program posiada także możliwość zapisywania zarówno harmonogramu zużycia jak i
wyników obliczeń. Możliwość zapamiętania harmonogramu zużycia powoduję że wykonanie
ponownych obliczeń spowodowanych zmianami kosztów zapasów nie stanowi większych
problemów które mogły by być powodowane pracochłonnym sposobem wprowadzania
harmonogramu zużycia. Zapisywanie wyników jest natomiast ważnym elementem programu
ponieważ wyniki zapisywane w postaci pliku *.txt [25] łatwo jest przekazywać do innych
działów w przedsiębiorstwie.
Program zostanie przetestowany na podstawie danych które w sposób jednoznaczny
potwierdzą działanie sposobu oprogramowania algorytmów z rozdziałów 5.1. i 5.2. Badanie
sprawdzające wykonane zostaną w rozdziale 6.2. Przykłady sprawdzające poprawność
działania programu. Wybrane klasy programu znajdują się w załączniku nr 4 do pracy.