• Nie Znaleziono Wyników

4. Aplikacyjny model zaopatrzeniowy

4.1. Architektura systemu hybrydowego

Jak w każdym systemie, tak również i w omawianym systemie hybrydowym występują zmienne, będące zmiennymi wejściowymi systemu, po czy następuje ich przetworzenie, czyli następuje uruchomienie całego systemu, a jako rezultat system generuje dane wyjściowe. Architektura inteligentnego systemu hybrydowego zostanie przedstawiona zgodnie z opisanym procesem, zatem wpierw zostaną przybliżone dane wejściowe, po czym nastąpi dokładniejsza analiza działania całego systemu i jego części składowych by w następnym podrozdziale przybliżyć wyniki przeprowadzonych na tym systemie testów.

Danymi wejściowymi systemu są stałe parametry systemu, przybliżone w Tabeli 3, oraz zmienne dane odnoszące się do samych transportów, które przedstawiono poniżej wraz z ich opisem w Tabeli 4.

Tab. 3. Stałe parametry systemu wraz z ich opisem [opr. własne].

Tab. 4. Zmienne dane wejściowe systemu wraz z opisem [opr. własne].

Do każdego dostawcy przypisany jest wskaźnik położeniowy , ponieważ dostawcy są podzieleni na obszary i w ten sposób wpierw odbiory będą wyszukiwane wśród sąsiadów lub dostawców będących na trasie do zakładu produkcyjnego, a dopiero później wśród dalszych sąsiadów. W trakcie testów użyteczność tego wskaźnika została sprawdzona, poprzez przeprowadzenie prób nie uwzględniających tego wskaźnika i równolegle testy, w których wskaźnik był brany pod uwagę..

Dane wejściowe systemu ze względu na uproszczony charakter powyższego modelu są sczytywane z tabeli programu Microsoft E cel. Takie rozwiązanie jest korzystne z praktycznego punktu widzenia, gdyż system był testowany na małym zakresie danych.

Podczas rozbudowy systemu warto rozpatrzyć możliwość zastosowania innego narzędzia, przykładowo bazy danych.

Aby rozważania nie ograniczać tylko do jednego rodzaju środka transportu do programu zostaną wprowadzone wartości maksymalne ładowności pojazdu – pm oraz maksymalny ciężar gm, jaki może przewieź pojazd.

Rys. 16 Przebieg pracy systemu [opr. własne].

Przebieg pracy systemu będzie następujący (przedstawiono na rysunku 16):

1. Na podstawie danych wejściowych sieć neuronowa wyznacza pierwszą grupę dostawców, których ładunki będą odebrane przez pierwszy pojazd i kolejność odbioru towarów.

2. System SE 1 doda ostatni element trasy, czyli przedsiębiorstwo produkcyjne. Jest to o tyle istotne, gdyż wszystkie odebrane ładunki powinny być dostarczone do przedsiębiorstwa.

3. System ekspertowy zarchiwizuje otrzymaną grupę.

4. SE 1 inicjuje procedurę sprawdzania.

5. Jeśli grupa przejdzie pozytywnie w/w procedurę, to system zaktualizuje grupę możliwych punktów odbioru tak, aby w następnej grupie nie wystąpił dostawca od którego ładunki są już przewidziane do odbioru przez inny pojazd.

6. System ekspertowy SE 1 wyznaczy długość trasy na podstawie macierzy odległości.

7. W/w system ekspertowy uruchomi ponownie sieć neuronową.

8. Proces będzie się odbywał tak długo, aż zostaną przypisani do którejś grupy wszyscy dostawcy lub jeśli liczba prób przypisania wszystkich dostawców jest mniejsza niż wartość zmiennej lel (narzuconej z góry i definiującej maksymalną liczb prób wyznaczenia optimum).

9. Cała procedura uruchamiana jest wielokrotnie, a dokładniej nrandomtours razy, aby raz jeszcze upewnić się, czy znaleziono rozwiązanie, będące globalnym optimum.

10. System ekspertowy SE 2 wyznaczy te grupy dostawców, których ładunki wystarczająco wypełniają powierzchnię ładunkową.

Rozpatrywana w pracy sieć Hopfielda jest w swojej budowie bardzo analogiczna do sieci, która rozwiązuje problem komiwojażera. Sieć została zaimplementowana w Matlabie, a kod źródłowy programu jest załączony do pracy na płycie CD. Budowa sieci została oparta na rozwiązaniu zaproponowanym przez Hervé Abdi, które można znaleźć w [Abdi 1994, 1999].

Program składa się z wielu funkcji, zapisanych w skryptach. Dzięki takiemu podejściu możliwa jest łatwa modyfikacja kodu źródłowego programu, ponieważ poszczególne skrypty odpowiadają tylko za ograniczony obszar. Takie postępowanie jest praktykowane podczas projektowania oprogramowania w środowisku Matlab. W tabeli poniżej przedstawiono przeznaczenie poszczególnych skryptów i obszar ich zastosowania.

Tab. 5. Funkcje zastosowane w implementacji systemu wraz z ich opisem [opr. własne].

W tej części pracy wpierw zostaną przybliżone istotne dla funkcjonowania całej sieci Hopfielda funkcje i skrypty programu Matlab (ich nazwy jak i zmienne zostały zapisane kursywą), w których są zapisane, aby zaznaczyć w którym momencie w programie w/w elementy następują oraz uściślić ich znaczenie dla funkcjonowania całego systemu, a następnie przedstawione zostaną podstawowe różnice między zaprogramowaną siecią, a typową siecią rozwiązującą problem komiwojażera.

Skrypt program.m steruje całym programem. Jest to tak naprawdę (wraz ze skryptem tspb.m) SE 1. System ekspertowy został rozdzielony na dwa skrypty, ponieważ autorka pracy

sugerowała się rozwiązaniem zaproponowanym przez Hervé Abdi. Podstawowym zadaniem program.m jest sczytanie wartości parametrów wejściowych sieci oraz zmiennych danych wejściowych do całego systemu. Przed uruchomieniem sieci neuronowej sprawdza on czy dane te są prawidłowe i czy podstawowe założenia są spełnione. Następnie jeśli dane są pod względem formalnym prawidłowe (co jest równoznaczne z faktem iż operacje na macierzach będą możliwe do wykonania) wtedy wielokrotnie (liczba powtórzeń jest zdeterminowana zmienną nrandomtour) uruchamiany jest skrypt tspb.m, który uruchamia sieć neuronową i sprawdza otrzymane wyniki (wyznaczane w skrypcie hop21.m), jak również zmienia zbiór możliwych dostawców, od których jest przewidziany odbiór. Taka procedura jest ważna, ponieważ gdy sieć uruchamiana jest powtórnie, to nie powinni być uwzględniani dostawcy, którzy już zostali przydzieleni do grup

Rys. 17 Procedura wywołań funkcji i odpowiadających im skryptów [oprac. własne].

Sieć (skrypt tspb.m) jest wywoływany wielokrotnie ponieważ na jego początku losowo wyznaczany jest wektor początkowy (w initsp.m). Może zaistnieć sytuacja, w której wyznaczona trasa jest tylko minimum lokalnym i istnieje lepsze rozwiązanie, dlatego też w skrypcie program.m każdorazowo wynik jest sprawdzany, aby zapamiętać tylko najbardziej korzystne rozwiązanie. W pracy przyjęte jest założenie, iż jest kilka kryteriów zgodnie z którymi trasa odbioru ładunków jest optymalizowana jednak najważniejszym z nich jest kryterium kosztowe, a co za tym idzie sumaryczna długość tras odbiorów, gdyż w opisywanym modelu rozpatrywana jest stawka kosztowa za km.

Wpierw ustanowione są wagi połączeń sieci na podstawie danych wejściowych pomnożonych przez odpowiednie stałe, będące parametrami sieci. W ten sposób obliczana jest macierz wszystkich połączeń (tspw.m).

Dodatkowo aby umożliwić szybsze wyznaczenie tras nie zawierających wszystkich dostawców została wprowadzona zmienna ( , która przy każdorazowym uruchomieniu sieci jest losowo wyznaczana, przy założeniu, że jest ona ze zbioru . Długość nowej trasy, czyli liczba jej elementów jest mniejsza lub równa tej zmiennej. Takie postępowanie zostało wprowadzone, gdyż samo wyznaczenie trasy trwa krótko, natomiast sprawdzanie zajmuje więcej czasu, a zazwyczaj optymalna trasa nie zawiera wszystkich elementów, dlatego też dzięki wprowadzeniu tej zmiennej szybciej system poda propozycję trasy, która byłaby odpowiednia, czyli pozytywnie przeszłaby procedurę sprawdzenia propozycji.

Procedura sprawdzania propozycji sieci odbywa się w następujący sposób:

(a) Sprawdzenie, czy pierwszy dostawca jest w wyznaczonej przez sieć trasie na pierwszej pozycji, tj. czy trasa zaczyna się od przedsiębiorstwa produkcyjnego.

Za każdym razem trasa musi się zaczynać od przedsiębiorstwa, ponieważ pobierane są opakowania transportowe, a następnie gdy ładowany jest towar następuje rozładunek pojemników przeznaczonych dla tego dostawcy.

(b) Sprawdzenie, czy powtarzają się dostawcy (lub przedsiębiorstwo) w wyznaczonej trasie (sprawdzenie1.m).

(c) Sprawdzenie, czy trasa nie zawiera więcej punktów odbioru niż jest to potrzebne, czyli czy długość trasy jest mniejsza bądź równa zmiennej . (d) Sprawdzenie, czy w otrzymanej trasie są tylko ci dostawcy, którzy powinni. Ta

czynność jest niezwykle istotna przy odbiorach przy wykorzystaniu więcej niż jednego pojazdu, gdyż wtedy należy sprawdzić czy nowa trasa w całości ładunku przez jeden pojazd, a pozostałości przez inną (isladunek.m).

(f) Sprawdzana jest suma ładunków, tj. czy całkowity ładunek nie jest za duży w stosunku do dopuszczalnego ciężaru, jaki pojazd może przewozić (gm) lub czy liczba ładunków (palet) nie jest większa od ładowności pojazdu (pm).

W następnym etapie jako ostatni punkt trasy przypisywane jest przedsiębiorstwo produkcyjne, tak aby wszystkie odebrane towary trafiły do przedsiębiorstwa produkcyjnego, po czym zostaje obliczona sumaryczna odległość jaką ten pojazd pokona (tourdist2.m).

Każdorazowo cały proces jest powtarzany, dopóki wszystkie ładunki są przypisane do odbioru przez poszczególne pojazdy lub tylko jeden dostawca zostanie w zbiorze możliwych dostawców lub podjęto 5000 prób przypisania odbioru ładunków i sieć nie potrafiła podać rozwiązania. Jeśli sieć zdołała podać rozwiązanie zostanie on przekazany do program.m i tam jest on archiwizowany, jeśli rozwiązanie jest bardziej optymalne niż wszystkie wyznaczone do tej pory rozwiązania. To porównanie bazuje przede wszystkim na liczbie potrzebnych kilometrów do odbioru wszystkich ładunków.

Rys. 18 Procedura sprawdzania wyników pracy sieci neuronowej [oprac. własne].

Rys. 19 Schemat działania skryptów systemu hybrydowego [oprac. własne].

Rys. 20 Zależność między systemem ekspertowym SE 1 a innymi elementami systemu hybrydowego [oprac. własne].

Funkcja energii ma postać [zob. Kubiak N. 2013] losowo wyznaczoną przez system. Dodatkowo musi spełniony być warunek:

Sieć neuronowa jest skonstruowana na wzór sieci Hopfielda rozwiązującej problem komiwojażera, jednak występują istotne różnice między tymi sieciami. Przyjęte zostało założenie, że sieć pogrupuje dostawców według kolejności odbiorów. W jednej grupie będą dostawcy, których towary odbierze jeden i ten sam pojazd, który na końcu powróci do zakładu produkcyjnego. Przede wszystkim ze względu na ograniczenia gabarytowe i wagowe (wszystkie ładunki są paletowalne) może zaistnieć sytuacja, w której nie wszystkie towary zostaną odebrane przez jeden środek transportu, co oznacza, że

1. w jednej grupie nie muszą wystąpić wszyscy dostawcy, 2. w jednej grupie może wystąpić tylko jeden dostawca,

3. trasa może okazać się dłuższa niż optymalna, gdyż powierzchnia ładunkowa jest optymalizowana i trasa może być wydłużona celem wypełnienia powierzchni załadunkowej, ale trasa ta nie może być dłuższa niż odległość drugiego dostawcy od firmy produkcyjnej.

Walidacja sieci neuronowej

W pracy została zastosowana walidacja sieci neuronowej, a dokładniej różne definicje macierzy wag połączeń. Niestety nie zostały znalezione analogiczne zastosowania sieci Hopfielda w podobnej postaci, dlatego też przy różnym układzie parametrów systemu zostały w tej pracy przeprowadzone różne próby.

Testowanie macierzy połączeń odbywało się każdorazowo podczas uruchamiania skryptu program.m. W skrypcie tym zostały zdefiniowane różne wersje skryptu tspb.m, w którym to skrypcie wywoływana jest odpowiednia funkcja tspw, która generuje analizowaną macierz. W tabeli poniżej przedstawiono podstawowe różnice między odpowiednimi wersjami i miejsca zdefiniowania poszczególnych wielkości w macierzach składowych odpowiadających parametrom . Po wyznaczeniu tych macierzy zostaną one powielane, tak aby powstała macierz o wymiarach równych kwadratowi

wymiarów macierzy składowych, czyli . Macierz wag powstaje poprzez pomnożenie stałych przez powiększone macierze składowe, a następnie ich sumowanie.

Tab. 6. Lokalizacja wielkości wejściowych w macierzach składowych macierzy wag połączeń sieci w różnych walidacjach sieci neuronowej [opr. własne].

Definicja sąsiedztwa miast

Każde miasto będzie przyporządkowane do grupy określonej odpowiednim wskaźnikiem położeniowym. Ogólna koncepcja wywodzi się z koncepcji znajdowania zwycięskiego regionu [zob. Choy 1995, s. 2633] oraz metody poszukiwania najbliższego sąsiada, ponieważ można empirycznie zobaczyć, że w trasie optymalnej dane miasto zazwyczaj jest połączone ze swoim sąsiadem [Kahng 1989, s. 516]. Również w standardowym PSO (optymalizacja mrówkowa cząstek), jak i w artykule Joppa rozpatruje się miasta leżące w sąsiedztwie [Khakmardan 2011, s. 1501; Joppe 1990, s. III – 961-2].

Biorąc pod uwagę spostrzeżenia zawarte w tych artykułach również w tej pracy dostawcy będą podzieleni na grupy, będące zbiorami rozłącznymi i każdy dostawca będzie przypisany tylko do jednej grupy. W testach do konkretnego dostawcy zostanie już przydzielony numer grupy, tym niemniej proces przypisywania dostawcy do grupy zostanie poniżej przedstawiony. Proces ten będzie przeprowadzany wraz z przyporządkowaniem do określonego dostawcy odległości między dostawcami i nie będzie odbywać się podczas każdorazowego uruchomienia systemu, tylko podczas aktualizacji programu, ponieważ czynności te wymagają sytemu powiązanego z systemem GPS a wykonywać je będzie SE3.

Do określonego -tego dostawcy przyporządkowany będzie wektor odległości do każdego z dostawców, przy czym będzie oznaczało odległość dostawcy do przedsiębiorstwa produkcyjnego, a na początku współczynnik położeniowy będzie ustalony jako zero .

1. Dana będzie liczba grup sąsiedztwa . Liczba ta wyznaczona będzie indywidualnie dla przedsiębiorstwa.

2. Drugim etapem będzie wyznaczenie promienia okręgu sąsiedztwa zawierającego wszystkich dostawców, gdzie środkiem będzie przedsiębiorstwo produkcyjne.

Promieniem będzie największa odległość od dostawcy do przedsiębiorstwa.

3. Następnie wyznaczone zostaną obszary sąsiedztwa. Utworzone będą one na podstawie wielokąta foremnego, którego środkiem będzie położenie przedsiębiorstwa produkcyjnego. Obszar wewnątrz tego wielokąta będzie wyznaczał brak sąsiedztwa z przedsiębiorstwem produkcyjnym, zatem wielokąt będzie zbudowany na podstawie promienia okręgu sąsiedztwa wpisanego w wielokąt. Dodatkowe założenie zostało poczynione, polegające na tym, że pasy sąsiedztwa będą wyznaczone przez dwusieczne kąta wewnętrznego wielokąta foremnego. Jeśli odległość od przedsiębiorstwa będzie wyznaczała promień okręgu wpisanego w wielokąt, wtedy wielkość boku wielokąta wyznacza ze wzoru

.

4. Lokalizacja -tego dostawcy będzie wyznaczona na podstawie dwóch parametrów – odległości dostawcy od przedsiębiorstwa produkcyjnego oraz kąta wodzącego

. Kąt ten będzie wyznaczony przy pomocy współrzędnych geograficznych oraz , a dokładniej przy pomocy różnicy między współrzędnymi przedsiębiorstwa

, a dostawcami. Dzięki temu położenie przedsiębiorstwa produkcyjnego będzie nowym punktem początkowym układu współrzędnych. Nowe współrzędne dostawcy będą równe

.

Dzięki takiemu postępowaniu uwzględniona zostanie odległość od przedsiębiorstwa, która jest wyznaczana nie tylko na podstawie współrzędnych geograficznych, ale również przy uwzględnieniu dróg transportowych.

5. Kąt środkowy wielokąta wyznaczony zostanie zgodnie ze wzorem .

6. Pierwszym wierzchołkiem wielokąta będzie punkt , znajdujący się na osi i mający współrzędne

, gdzie , to promień okręgu opisanego na wielokącie:

, a wzór pierwszej prostej to .

7. Drugi wierzchołek wielokąta będzie leżał na prostej nachylonej do osi o kąt i przechodzącej przez początek układu współrzędnych, zatem wzór prostej to

.

8. Następnie nastąpi sprawdzenie, czy dostawca znajduje się pomiędzy tymi prostymi, czyli czy

i jeśli tak to .

9. Trzeci wierzchołek wielokąta będzie leżał na prostej nachylonej o kąt od prostej i przechodzącej przez początek układu współrzędnych, zatem wzór prostej to

.

Rys. 21 Ilustracja grup sąsiedztwa [oprac. własne].

10. Jeśli dostawca znajduje się między tymi dwiema prostymi

to , czyli zostanie przypisana odpowiednia grupa sąsiedztwa.

11. Następne wierzchołki i proste są wyznaczane analogicznie. Zatem uogólniając, jeśli

,

to , , gdy jest parzyste, a dla nieparzystego otrzymanych wyników w celu stwierdzenia, czy pojazdy odbierające ładunki na wyznaczonych trasach będą w dostatecznym stopniu wypełnione. Jeśli nie byłyby dostatecznie wypełnione, to ze względów ekonomicznych korzystne mogłoby być odbieranie tych towarów w dotychczasowy sposób, np. przy pomocy punktu konsolidacyjnego.

Opisywany system jest zaimplementowany w postaci prostej funkcji, jednak taka architektura systemu hybrydowego została w pracy zaproponowana, aby umożliwić zastosowanie wielu ulepszeń, opisanych w następnym rozdziale, a wprowadzenie i zaprogramowanie ich będzie możliwe właśnie w tej części systemu hybrydowego.

Powiązane dokumenty