pobierz plik referatu
Transkrypt
pobierz plik referatu
Rozdział monografii: 'Bazy Danych: Rozwój metod i technologii', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2008 Rozdział 17 w Procesor decyzyjno-obliczeniowy dla rynkowego modelu danych M3 w w da .b Streszczenie. Na rynkach wielotowarowych ważnym celem z punktu widzenia funkcjonalności każdego modelu danych rynkowych jest możliwość sformułowania, a także wykonania pewnego zadania kojarzenia ofert kupna i sprzedaży tak, aby otrzymać wyniki w postaci przyjętych i odrzuconych ofert oraz właściwych cen rynkowych dla poszczególnych towarów. Przedstawiono narzędzie decyzyjne, które spełnia to zadanie w najlepszy, z punktu widzenia danego mechanizmu rynkowego, sposób. Decyzje te powinny być podejmowane na podstawie danych zapisanych za pomocą notacji M3, wyniki procesu decyzyjnego także powinny być sformułowane w tej notacji. Opisany tu procesor decyzyjno-obliczeniowy stanowi uniwersalny szkielet narzędzia, pozwalający wykorzystać typowe pakiety optymalizacyjne w celu wypracowania takich decyzji. Modelem danych rynkowych jest M3 (Multicommodity Market Model), który jest zbiorem formalnych modeli danych, stworzonym jako podstawa opartego na XML systemu wymiany danych, umożliwiającego łatwy przepływ informacji między różnymi segmentami rynków. Pozwala on na formułowanie szerokiego spektrum danych rynkowych (np. ofert), które mogą być przesyłane między uczestnikami rynku i przetwarzane przez aplikacje specyficzne dla danego segmentu rynku. pl s. 1 Wstęp M3 (Multicommodity Market Model), którego cechy dokładniej zostały opisane w pracach [5], [6], [7] jest modelem złożonych procesów rynkowych na rynkach wielotowarowych, pozwalającym opisywać owe procesy w specjalnie stworzonym dialekcie XML. Przemysław Kacprzak, Mariusz Kaleta, Piotr Pałka, Kamil Smolira, Eugeniusz Toczyłowski, Tomasz Traczyk Politechnika Warszawska, Instytut Automatyki i Informatyki Stosowanej, ul. Nowowiejska 15/19, 00665 Warszawa, Polska email: {P.Kacprzak, M.Kaleta}@elka.pw.edu.pl, [email protected], [email protected], {E.Toczylowski, T.Traczyk}@ia.pw.edu.pl (c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2008 Rozdział monografii: 'Bazy Danych: Rozwój metod i technologii', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2008 P. Kacprzak, M. Kaleta, P. Pałka, K. Smolira, E. Toczyłowski, T. Traczyk w Do działania rynku, oprócz ustandaryzowanych danych opisujących procesy rynkowe, niezbędne jest także narzędzie bilansujące, służące do kojarzenia ofert kupna i sprzedaży, uwzględniające ograniczenia charakterystyczne zarówno dla danego modelu obrotu (np. ograniczenia narzucane przez sieć przesyłową/dystrybucyjną energii elektrycznej [11], ograniczenia charakterystyczne dla infrastruktury sieci telekomunikacyjnej [2], czy specyficzne dla metod alokacji zasobów w sieciach kolejowych [1]), jak i ograniczenia indywidualne, właściwe dla danego podmiotu (np. ograniczenia właściwe dla elektrowni wodnej, która ma możliwość magazynowania wody w zbiorniku, czy też ograniczenia specyficzne dla kaskady elektrowni wodnych, wiążące ilość wody spuszczanej przez jedną elektrownię z dopływem do drugiej elektrowni). Liczba różnych modeli obrotu, służących do rozwiązywania problemów zapisanych za pomocą modelu M3, może więc być znaczna. Zgodnie z założeniami modelu M3, każdy proces bilansujący powinien zwracać wyniki bilansowania w postaci zgodnych z modelem M3 dokumentów XML. Konsekwencją potrzeby istnienia narzędzi bilansujących, dostosowanych do danych wejściowych i wyjściowych w postaci określonej przez model M3, jest potrzeba sformułowania uniwersalnego schematu działania takiego narzędzia. W zależności od użytego w takim schemacie programu obliczeniowego (solwera), można w różny sposób wypracowywać decyzje kojarzące oferty: od prostych decyzji, które oferty uznać za przyjęte, a które za odrzucone (np. wykorzystując mechanizm aukcji Vickreya [13]), do złożonych obliczeń, które uwzględniając ograniczenia wyznaczą najlepsze (często optymalne) rozwiązanie danego problemu (np. mechanizm LMP [4],[10]). By umożliwić takie działanie, podjęto pracę, której celem było opracowanie takiego sposobu nie tylko konstrukcji, ale także rozwiązywania zadań decyzyjnych dla danych, dotyczących różnorodnych segmentów rynkowych, opisanych za pomocą modelu M3, który pozwoliłby użyć tego nowego sposobu modelowania w połączeniu ze znanymi i sprawdzonymi narzędziami obliczeniowymi/optymalizacyjnymi (np. CPLEX, Matlab, GAMS itp.), przy czym sama postać zapisu danych o rynku nie powinna narzucać ani ograniczać sposobu sformułowania problemu optymalizacyjnego ani wyboru narzędzia decyzyjnego. Takie właśnie zadanie spełnia procesor decyzyjno-obliczeniowy, którego szkielet i przykładową implementację opisano w tej pracy. da .b w w pl s. 2 Model danych M3 Model danych M3, opisany dokładniej m.in. w [5], [6], [7] opisuje uogólniony rynek wielotowarowy [12]. Zawiera w szczególności opisy ofert elementarnych – jednotowarowych, zintegrowanych – wielotowarowych, a także grupujących, które opisują bardziej złożone relacje pomiędzy ofertami elementarnymi lub zintegrowanymi, ze wspólnymi warunkami lub ograniczeniami zasobowymi [12]. Związanie wielu ofert jednego podmiotu za pomocą oferty grupującej umożliwia bezpieczny wybór realizowanych ofert przy spełnieniu ograniczeń. Co więcej, wprowadzenie mechanizmu oferty grupującej ułatwia formułowanie nietrywialnych ograniczeń indywidualnych dla poszczególnych podmiotów rynkowych oraz często ich wycenę. W systemie obrotu wielotowarowego przedmiotem jednoczesnego obrotu jest wiele towarów (tzw. towarów elementarnych), które reprezentują pewne fizyczne lub abstrakcyjne produkty i usługi. Uczestnicy obrotu mogą składać oferty kupna i sprzedaży dotyczące wiązek towarów i usług [12]. Mówiąc inaczej, ofertami kupna i sprzedaży na rynku wielotowarowym mogą być pakiety towarów elementarnych, powiązanych w tzw. wiązki. Udział towaru elementarnego w wiązce towarów określa tzw. współczynnik udziału. Przykładowo, 218 (c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2008 Rozdział monografii: 'Bazy Danych: Rozwój metod i technologii', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2008 Procesor decyzyjno-obliczeniowy dla rynkowego modelu danych M3 w produkcja energii elektrycznej w elektrowni o określonych parametrach technicznych pozwala na dostarczenie do sieci przesyłowej energii oraz pewnych usług regulacyjnych, ponadto powoduje jednoczesną emisję określonej ilości zanieczyszczeń. W tym przypadku wiązkę towarów może stanowić energia elektryczna i usługi systemowe o dodatnich współczynnikach udziału (sprzedaż) oraz pozwolenia na emisję zanieczyszczeń o ujemnym współczynniku udziału (zakup). Procesy rynkowe w danym segmencie rynku składają się z sekwencji procesów bilansowania rynku. Bilans chwilowy rynku jest zachowany, gdy aktualnie przyjęte oferty równoważą podaż i popyt na towary i usługi, przy czym muszą się również bilansować przepływy finansowe wynikające z przyjętych ofert sprzedaży i kupna. Proces bilansowania przetwarza bieżące dane o systemie, takie jak infrastruktura reprezentująca fizyczne możliwości transportu towarów (np. sieć przesyłowa energii elektrycznej, infrastruktura telekomunikacyjna, drogowa), towary podlegające obrotowi, zbiór podmiotów rynkowych biorących udział w bilansowaniu, złożone przez nie oferty, a także wstępne programy, rozumiane jako indywidualne harmonogramy dostaw i odbiorów towarów, wynikające z dotychczas zawartych kontraktów. Na wyjściu procesu bilansowania segmentu rynkowego otrzymujemy rynkowe ceny poszczególnych towarów, rozpływy towarów w sieci, przyjęte oferty wraz z ilościowymi danymi dla każdej z nich oraz programy wyjściowe, które być może zostaną użyte do wyznaczenia programów wejściowych dla kolejnego procesu bilansowania. Uczestnikami procesu bilansowania są jednostki biorące aktywny udział w procesie poprzez składanie ofert, a także jednostka lub jednostki odpowiedzialne za nadzór i zarządzanie procesem (tzw. operator rynku, broker). Każda jednostka ma pewien obraz procesu bilansowania (lub szerzej segmentu rynku), postrzeganego z jej punktu widzenia, oraz zazwyczaj dysponuje systemem wspomagania decyzji, bazującym m.in. na danych wejściowych i wyjściowych procesu bilansowania. da .b w w 3 Modele obrotu pl s. Jak wspomniano wcześniej, konkretne systemy rynkowe wymagają różnych mechanizmów bilansowania bądź podejmowania decyzji, aby osiągnąć rozwiązanie problemu zgodne z założeniami. Weźmy na przykład aukcję Vickreya pojedynczego towaru [13]. Aby rozwiązać problem przydziału cen i wolumenów towarów optymalnego ze względu na rozpatrywany mechanizm rynkowy, należy przydzielić towar podmiotowi, który zgłosił najwyższą cenę zakupu, zaś jako cenę rynkową ustalić najwyższą cenę ofertową spośród ofert ze zbioru będącego różnicą zbioru ofert i oferty wygrywającej. Przytoczony mechanizm aukcji Vickreya jest bardzo prosty w implementacji, jednak istnieją mechanizmy rynkowe, w których obliczenia nie są trywialne. Przykładem jest mechanizm LMP (Locational Marginal Pricing) [4], [10], dotyczący handlu energią elektryczną w sieci przesyłowej, gdzie oprócz ograniczeń typowych dla handlu występują także ograniczenia infrastrukturalne, związane z rzeczywistą siecią przesyłową, które zapewniają możliwość przesyłu zakupionej energii przez sieć bez jej uszkodzenia. Taki mechanizm wymaga obliczeń optymalizacyjnych, aby zapewnić optymalny przydział wolumenów i cen. 219 (c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2008 Rozdział monografii: 'Bazy Danych: Rozwój metod i technologii', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2008 P. Kacprzak, M. Kaleta, P. Pałka, K. Smolira, E. Toczyłowski, T. Traczyk 3.1 Cele formułowania modeli obrotu w Aby otrzymać rozwiązanie bardziej złożonego mechanizmu rynkowego (np. LMP), należy sformułować model obrotu. Najczęściej jest to model matematyczny, określający które oferty przyjąć i jak wycenić poszczególne towary. Dane dotyczące danego procesu rynkowego, które są sformułowane zgodnie z modelem M3, są zapisane w postaci odpowiednich plików XML. Jednak postać ta nie może być bezpośrednio wykorzystana jako dane wejściowe do solwerów matematycznych, programów obliczeniowych itp. Należy przetransformować dane zapisane w postaci XML do formatu właściwego dla poszczególnych programów obliczeniowych. Naturalną metodą przekształcania danych XML do innego formatu jest transformacja XSLT [16]; można także użyć języka zapytań XQuery [15]. Obie metody operują na wejściowych plikach XML i zwracają wynik w postaci bądź to XML, bądź też innego formatu tekstowego. Po przekształceniu danych z formatu M3 do formatu odpowiedniego dla danego solwera (czyli programu obliczeniowego), następuje rozwiązanie zadania zapisanego w otrzymanym pliku. w w 3.2 Różnorodność modeli matematycznych i decyzyjnych da .b Model M3 jest uniwersalnym narzędziem, które umożliwia zapisywanie różnorodnych danych dla szerokiej gamy modeli obrotu. Takich modeli obrotu istnieje dużo, a każdy z nich opiera się na innym modelu decyzyjnym; model M3 pozwala na stosowanie różnych modeli decyzyjnych. Istnieje zatem potrzeba formułowania wielu różnych transformacji XSLT/XQuery, aby dane M3-XML przekształcać do postaci wymaganej dla rozwiązania zadań optymalizacyjno-decyzyjnych właściwych dla różnych modelu obrotu. Różnorodność modeli matematycznych i decyzyjnych powoduje jednak problemy. Samo sformułowania modelu obrotu w postaci wymaganej dla danego solwera nie wystarcza. Należy jeszcze uruchomić odpowiedni procesor obliczeniowy dla danego pliku wygenerowanego za pomocą transformacji XSLT/XQuery, a następnie pobrać otrzymane rozwiązanie i przekształcić je w wyjściowe pliki M3 – wyniki procesu ofertowego oraz tzw. programy wyjściowe. Pobranie rozwiązania z wyjścia procesora obliczeniowego stanowi duży problem ze względu na trudności z analizą składniową różnorodnych danych wyjściowych produkowanych przez różne solwery. pl s. 4 Procesor decyzyjno-obliczeniowy Zaproponowane przez nas narzędzie służy do ujednolicenia procesów podejmowania decyzji na podstawie danych zapisanych za pomocą modelu M3. Umożliwia ono przekształcanie wejściowych plików w formacie M3-XML za pomocą procesora XSLT/XQuery, uruchamianie na powstałych w ten sposób plikach danych odpowiedniego solwera optymalizacyjno-decyzyjnego i przetwarzanie danych zwróconych przez solwer do postaci plików wyjściowych M3. Narzędzie to ma charakter rozwiązania uniwersalnego. Posiada możliwość generowania danych dla różnorodnych modeli matematycznych bądź decyzyjnych za pomocą jednolicie zbudowanego procesora. 220 (c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2008 Rozdział monografii: 'Bazy Danych: Rozwój metod i technologii', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2008 Procesor decyzyjno-obliczeniowy dla rynkowego modelu danych M3 4.1 Transformacja XSLT/XQuery w Jak zauważono wcześniej, naturalnym sposobem transformowania plików M3-XML do wymaganego formatu jest wykorzystanie języków XSLT lub XQuery. Obydwie metody pozwalają w łatwy sposób otrzymać na podstawie danych zawartych w dokumentach XML pliki w postaci czysto tekstowej (bez znakowania). W szczególności stosunkowo proste jest wykonanie przekształcenia formatu M3-XML do modelu matematycznego programowania liniowego bądź całkowitoliczbowego, zapisanego w języku GNU MathProg Modelling Language [3]. Dane w dokumentach M3-XML zapisywane są za pomocą specyficznych dla modelu elementów i atrybutów, z intensywnym wykorzystaniem generycznych parametrów m3:parametr (patrz [14]). Dzięki temu można dość łatwo stworzyć generyczne szablony XSLT, ułatwiające przetwarzanie danych. Poniżej przedstawiono przykładowy fragment takiego generycznego szablonu, który służy do tworzenia zbiorów danych na podstawie bądź to nazwy atrybutu, bądź nazwy elementu, lub też na podstawie nazwy parametru generycznego, znajdującej się w atrybucie dref elementu m3:parameter: w w da .b <xsl:template name="parameter_generic_set"> <xsl:param name="param_xpath"/> <xsl:param name="param_set"/> <xsl:choose> <xsl:when test="$param_set = 'm3:arc'"> <xsl:for-each select="m3:networks/m3:Network/m3:arc"> <xsl:if test="count(.//@*[name() = $param_xpath] | .//*[name() = $param_xpath] | .//m3:parameter[@dref = $param_xpath] )> 0"> <xsl:apply-templates select="." mode="set"/> <xsl:call-template name="tab"/> <xsl:value-of select=".//@*[name() = $param_xpath] | .//*[name() = $param_xpath] | .//m3:parameter[@dref = $param_xpath]"/> <xsl:call-template name="newline"/> </xsl:if> </xsl:for-each> </xsl:when> <!-- ... --> </xsl:choose> </xsl:template> pl s. Przykładowy fragment pliku z danymi statycznymi zapisanymi w postaci M3-XML, jest przedstawiony poniżej. Jest to fragment opisu sieci rozdzielczej energii elektrycznej, definiuje on pojedynczą linię przesyłową wraz z pewną liczbą generycznych parametrów: <m3:arc dref="op:LVNetworkLine" id="op:lvline1"> <m3:name>LV Network line no 1</m3:name> <m3:predecessor ref="op:pole1" /> <m3:successor ref="op:pole2" /> <m3:parameter dref="op:NumberOfCables">3</m3:parameter> <m3:parameter dref="op:CableSurfaceArea">70</m3:parameter> <m3:parameter dref="op:CableType">Al XLPE</m3:parameter> <m3:parameter dref="op:CableLength">35</m3:parameter> <m3:parameter dref="op:arcLongTermRating">115</m3:parameter> <m3:parameter dref="op:arcReactance">125</m3:parameter> <m3:parameter dref="op:linearLossCoefficent">0.0008</m3:parameter> </m3:arc> 221 (c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2008 Rozdział monografii: 'Bazy Danych: Rozwój metod i technologii', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2008 P. Kacprzak, M. Kaleta, P. Pałka, K. Smolira, E. Toczyłowski, T. Traczyk W celu wygenerowania danych należy użyć wyżej zamieszczonego szablonu nazwanego parameter_generic_set. Przykładowo, aby otrzymać zbiór danych określających wytrzymałość danej linii na przeciążenie dla poszczególnych linii sieci dystrybucyjnej, należy użyć następującego fragmentu kodu: w param Q := <xsl:call-template name="newline"/> <xsl:call-template name="parameter_generic_set"> <xsl:with-param name="param_xpath">op:arcLongTermRating </xsl:with-param> <xsl:with-param name="param_set">m3:arc</xsl:with-param> </xsl:call-template>; Otrzymamy następujący fragment danych dla solwera: w param Q := 'op:fuseline1' 'op:lvline1' 'op:lvline2' 'op:lvline3' 100 115 115 115; w Stosowanie języka XSLT jest bardzo wygodnym rozwiązaniem, ze względu na łatwość formułowania poszczególnych transformacji. da .b 4.2 Przepływ danych Przepływ danych w procesorze decyzyjno-obliczeniowym (patrz rys. 1) został ujednolicony do następujących faz: 1) 2) 3) 4) 5) wczytanie parametrów wejściowych i danych w postaci M3-XML, przekształcenie plików wejściowych do plików w postaci wymaganej przez solwer, wykonanie obliczeń na otrzymanym pliku przez solwer, odczytanie rozwiązania w postaci właściwej dla solwera, zapisanie plików wyjściowych (ofert i programów) w postaci M3-XML. pl s. Rys. 1. Przepływ danych w procesorze decyzyjno-obliczeniowym W pierwszej fazie następuje wczytanie plików M3-XML z danymi potrzebnymi do rozwiązania danego problemu, wczytanie skryptu XSLT/XQuery odpowiedniego dla danego problemu, wczytanie ewentualnych parametrów dla procesora XSLT lub XQuery oraz 222 (c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2008 Rozdział monografii: 'Bazy Danych: Rozwój metod i technologii', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2008 Procesor decyzyjno-obliczeniowy dla rynkowego modelu danych M3 w wczytanie informacji o solwerze, który powinien być uruchomiony dla danego problemu oraz jego parametrach. W drugiej fazie odbywa się przekształcenie plików wejściowych przez wywołanie procesora XSLT lub XQuery na danych wejściowych. W wyniku działania tej fazy wykonania powstaje plik lub zestaw plików, np. dane dla solwera optymalizacyjnego, skrypt wykonywany w środowisku Matlab itp. W trzeciej fazie następuje wykonanie obliczeń dla uprzednio przygotowanych plików danych w środowisku dla którego zostały przygotowane. Przez środowisko możemy rozumieć dowolną aplikację obliczeniową (solwer), która pobiera pliki wejściowe, przetwarza je zgodnie z danym algorytmem, a następnie zwraca pliki wynikowe. Przykładowymi środowiskami obliczeniowymi, których zastosowanie zostało przewidziane, są pakiet programowania liniowego Glpsol i program Matlab. W wyniku wykonania obliczeń otrzymujemy rozwiązanie danego problemu decyzyjnego/optymalizacyjnego. Otrzymane rozwiązanie jest jednak zapisane w postaci specyficznej dla danego narzędzia, najczęściej w postaci pliku tekstowego. Otrzymany plik wyjściowy należy przekształcić w celu otrzymania wyników, to jest cen zakupu i sprzedaży dla poszczególnych towarów oraz przyjętych wolumenów dla każdej z ofert. Jest to zadanie dość trudne, gdyż dla każdej aplikacji obliczeniowej powinien powstać specyficzny moduł, służący do przekształcania plików wyjściowych z danej aplikacji. Ostatnim etapem działania procesora decyzyjno-obliczeniowego jest zapisanie plików wyjściowych w formacie M3-XML. Oferty wyjściowe zawierają ceny rynkowe oraz przyjęte wolumeny dla każdej z ofert. Tzw. programy wyjściowe opisują stan zawartych transakcji dla każdego podmiotu rynkowego, to znaczy zawierają wolumeny przyjętych ofert oraz pieniężną wartość transakcji dla każdego towaru. da .b w w 4.3 Przykładowa implementacja rozwiązania pl s. Założenia działania procesora decyzyjno-obliczeniowego, przedstawione wyżej, pozwalają na jego zaimplementowanie w różnych technologiach. Sam model M3 zakłada, że wymiana danych pomiędzy poszczególnymi modułami jest dokonywana za pomocą plików XML w dialekcie M3, nie narzuca więc także żadnej konkretnej technologii wykonania poszczególnych modułów. Jedną z możliwych technologii jest Java. Nasz procesor został zaimplementowany właśnie w tej technologii z wykorzystaniem biblioteki Xalan w wersji 2.7.1. Jako aplikację obliczeniową (solwer) wykorzystano program Glpsol z pakietu Glpk w wersji 4.9 [3], a dla plików wynikowych z tej aplikacji napisano specjalizowany parser w technologii Java, który stanowi jeden z modułów procesora. Obecna implementacja procesora jest prototypem, co oznacza, iż zakres rozwiązywanych problemów jest ograniczony do rozwiązywania problemów decyzyjno/optymalizacyjnych jedynie przez aplikację Glpsol. Główną trudność w implementacji narzędzia, powodującą dość znaczną pracochłonność dostosowania procesora do różnych solwerów, stanowi konieczność tworzenia modułu parsera danych wynikowych dla każdej aplikacji obliczeniowej. Niemniej, jeśli wziąć pod uwagę fakt, iż większość modeli rynkowych można zapisać w postaci zadania programowania liniowego bądź całkowitoliczbowego, czyli zadań właściwych dla aplikacji Glpsol, należy stwierdzić, że obecnie istniejący prototyp obejmuje znaczną część możliwych zastosowań modelu M3. 223 (c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2008 Rozdział monografii: 'Bazy Danych: Rozwój metod i technologii', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2008 P. Kacprzak, M. Kaleta, P. Pałka, K. Smolira, E. Toczyłowski, T. Traczyk 5 Przykład zastosowania w Zaprezentowany procesor decyzyjno-obliczeniowy jest z powodzeniem wykorzystywany przez autorów w pracach badawczych nad metodami rozwiązywania złożonych problemów rynkowych. Tu przedstawiony zostanie sposób rozwiązywania, za pomocą dwóch różnych podejść, niewielkiego problemu dotyczącego łącznego handlu energią i rezerwami mocy w sieci energetycznej. Pierwsze z podejść (dalej oznaczane skrótem LMP) zakłada rozwiązanie problemu za pomocą metody LMP. Dane wejściowe dla solwera transformuje się tu z modelu M3-XML za pomocą transformacji XSLT do postaci GNU MathProg Modelling Language. Następnie otrzymane zadanie rozwiązuje się za pomocą solwera z pakietu Glpk. Drugie z podejść (dalej oznaczane skrótem MATPOWER) zakłada rozwiązanie problemu za pomocą metody kooptymalizacji energii bilansującej i operacyjnych rezerw mocy [9]. Opis zadania otrzymuje się za pomocą transformacji XSLT do postaci pliku wykonywalnego pakietu Matpower, działającego w środowisku Matlab, a następnie zadanie rozwiązuje się za pomocą tego programu. Problem, który chcemy rozwiązać, dotyczy prostej sieci energetycznej, przedstawionej na rys. 2, złożonej z dwóch węzłów. W każdym z węzłów W1 oraz W2 znajduje się jeden wytwórca energii, oznaczony symbolem Sx, oraz jeden odbiorca energii, oznaczony symbolem Ox. Węzły są połączone linią przesyłową. Dla zilustrowania notacji M3-XML przedstawiono fragment danych dotyczący oferty złożonej przez wytwórcę S1: da .b w w <m3:Offer id="ex:s1-offer" offeredPrice="37.00"> <m3:offeredBy ref="ex:s1"/> <m3:volumeRange minValue="30" maxValue="60"/> <m3:ElementaryOffer> <m3:offeredCommodity shareFactor="1" ref="ex:energia"/> </m3:ElementaryOffer> </m3:Offer> pl s. Rys. 2. Prosta sieć energetyczna rozpatrywana w przykładzie Aby rozwiązać zadanie zapisane za pomocą notacji M3-XML, trzeba przetransformować dane do formatu wymaganego przez solwer (pliku w formacie GNU MathProg Modelling Language w przypadku metody LMP lub skryptu dla programu Matlab w przypadku metody MATPOWER). Sformułowanie transformacji XSLT jest stosunkowo proste. Następnie dane z pliku otrzymanego za pomocą transformacji są przetwarzane za pomocą odpowiedniego oprogramowania – solwera. Wyniki otrzymane przy użyciu metod LMP oraz MATPOWER (patrz tabela 1) są bardzo podobne. Różnice to inne wolumeny dla sprzedawcy S1 oraz inna cena w węźle W2. Rozbieżności wynikają przede wszystkim z faktu nieuwzględnienia strat przesyłowych w metodzie LMP. 224 (c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2008 Rozdział monografii: 'Bazy Danych: Rozwój metod i technologii', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2008 Procesor decyzyjno-obliczeniowy dla rynkowego modelu danych M3 Tabela 1. Zestawienie wyników otrzymanych za pomocą różnych metod rozwiązywania LMP MATPOWER Cena węzłowa W1 W2 37 37 37 36,54 S1 50 50,25 Wolumen przyjęty S2 O1 60 90 60 90 O2 20 20 w Otrzymane dane wynikowe należy następnie przekształcić do formatu M3-XML. Jest to zadanie nietrywialnie, gdyż w przeciwieństwie do transformacji danych z notacji M3-XML do formatu wymaganego dla konkretnego solwera, nie istnieje wygodne narzędzie (jak XSLT) ułatwiające dokonanie takiej odwrotnej transformacji. Dla każdego narzędzia obliczeniowego należy zaprojektować osobny moduł (parser) służący do odczytywania danych z plików wyjściowych danego narzędzia. Zadanie to jest o wiele trudniejsze, gdyż większość pakietów obliczeniowych nie zapisuje danych w wygodnym do przetwarzana formacie XML, lecz w plikach tekstowych o skomplikowanej strukturze. Po sparsowaniu plików wynikowych należy zapisać wyniki zgodnie z notacją M3-XML. Jest to ostatni krok działania uniwersalnego procesora decyzyjno-obliczeniowego. Zadanie powyższe stanowi typowy przykład wykorzystania mechanizmów handlu wielotowarowego. Obie metody rozwiązania operują na tych samych danych wejściowych w postaci zestawu plików M3-XML, ale ponieważ sposób rozwiązywania zadania różni się, metody te – korzystając z tych samych danych wejściowych – generują różne (ale w obu przypadkach dopuszczalne) rozwiązania. Należy przy tym podkreślić, iż różnice w wynikach nie wynikają z błędów, lecz z właściwości poszczególnych metod służących do rozwiązywania zadania. Użycie uniwersalnego szkieletu procesora decyzyjno-obliczeniowego pozwala na wygodne przeprowadzenie obliczeń kilkoma metodami, jednolity format danych wyjściowych ułatwia zaś porównywanie i analizę wyników. Uniwersalny procesor decyzyjno-obliczeniowy ułatwia zatem nie tylko rozwiązywanie złożonych problemów rynkowych, ale także porównywanie rozwiązań otrzymywanych za pomocą różnych podejść, niekoniecznie związanych tą samą technologią. Upraszcza to znacznie prowadzenie prac rozwojowych nad mechanizmami rynkowymi, gdyż bez takiego narzędzia (oraz bez wspólnego modelu M3) byłby to proces bardzo żmudny, głównie ze względu na konieczność stosowania pracochłonnych konwersji danych, zarówno wejściowych jak i wyjściowych, pomiędzy różnymi formatami. da .b w w pl s. 6 Ocena rozwiązania Przyjęto następujące kryteria oceny: użyteczność, elastyczność, niezależność implementacji od konkretnej technologii oraz bezpieczeństwo. Rozwiązanie jest użyteczne, gdyż spełnia wymagania funkcjonalne, jakimi są: możliwość wczytania danych wejściowych z plików w formacie M3-XML, zastosowanie na nich transformacji XSLT/XQuery, przeprowadzenie obliczeń na przetworzonych danych, odczytanie wyników bilansowania oraz zapisanie wyników do postaci wyjściowych dokumentów zgodnych ze standardem M3. Jak zauważono wcześniej, najbardziej kłopotliwą częścią rozwiązania jest parser, którego zadaniem jest odczytanie danych wynikowych z plików wyjściowych. Na obecnym etapie implementacji jest to część najbardziej wrażliwa na błędy. W przyszłości ta część rozwiązania powinna zostać udoskonalona. Rozwiązanie jest elastyczne, gdyż ma możliwość dostosowania swego działania do różnych, większych systemów, w których skład ma wchodzić. Przez zastosowanie XML 225 (c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2008 Rozdział monografii: 'Bazy Danych: Rozwój metod i technologii', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2008 P. Kacprzak, M. Kaleta, P. Pałka, K. Smolira, E. Toczyłowski, T. Traczyk w do komunikacji z innymi modułami systemu, zapewniamy łatwość wymiany informacji. Procesor może także być wydzielony z systemu poprzez zastosowanie technologii Web services. W takim przypadku z jednego modułu procesora może korzystać kilka systemów. Wydzielenie modułu procesora na osobny komputer może być także pożądane ze względu na potrzebę uzyskania odpowiedniej wydajności obliczeniowej (która powinna być duża dla niektórych trudniejszych problemów rynkowych). Zaletą projektu uniwersalnego procesora jest także możliwość jego implementacji w wielu różnych technologiach, co umożliwia przedstawiony szkielet rozwiązania. Wynika to z założeń samego modelu M3 – z jego otwartości oraz z faktu, iż wymiana danych z systemami współpracującymi ma odbywać się wyłącznie za pomocą dokumentów XML. Przez bezpieczeństwo będziemy rozumieli niemożność dostępu do poufnych danych (czyli do plików M3-XML) przez niepowołanych użytkowników. Problem występuje, gdy dostęp do procesora odbywa się poprzez mechanizm Web services. Wówczas należy zapewnić co najmniej szyfrowaną transmisję danych, najlepiej w wirtualnej sieci prywatnej. w w 7 Podsumowanie da .b Przedstawione w niniejszej pracy rozwiązanie, stanowi szkielet procesora obliczeniowodecyzyjnego. Fakt iż rozwiązanie zostało z łatwością zaimplementowane wskazuje, iż zaproponowany szkielet został opracowany w sposób poprawny i projekt może być rozwijany. Jak zostało wspomniane wcześniej, solwer umożliwiający rozwiązywanie zadań sformułowanych w notacji M3, jest istotnym elementem aplikacyjnym modelu M3, gdyż umożliwia rozwiązywanie problemów sformułowanych w postaci notacji M3-XML, za pomocą wielu modeli obliczeniowych lub decyzyjnych. 7.1 Spodziewane korzyści pl s. Uniwersalny procesor obliczeniowo-decyzyjny porządkuje pewne elementy procesu bilansowania, poprzez sformułowanie szkieletu modułowego narzędzia, które może być używane w wielu aplikacjach implementujących modele aukcyjne, mechanizmy rynkowe itp. Aby zaimplementować proces bilansowania dla danego problemu, wystarczy skonstruować arkusz transformacji XSLT bądź XQuery, który przekształci pliki M3-XML do wymaganego modelu obrotu oraz napisać parser (bądź skorzystać z gotowego), dostosowany do formatu plików wynikowych używanego solwera obliczeniowego lub decyzyjnego. Co więcej, jak pokazano wyżej, możliwe jest tworzenie generycznych szablonów, które mogą być używane w różnych problemach. Te same problemy, zapisane w postaci M3-XML, mogą być rozwiązywane za pomocą wielu różnorodnych metod, korzystających z różnych matematycznych modeli problemu optymalizacyjnego/decyzyjnego; dostosowanie do danego modelu nie wymaga innego zapisu problemu, a jedynie użycia właściwej transformacji XSLT/XQuery. Jest to więc rozwiązanie bardzo wygodne. 7.2 Możliwe zastosowania Przedstawione rozwiązanie procesora decyzyjno-obliczeniowego stanowi element prac nad modelem M3 i jego zastosowaniami. Procesor może być stosowany w rozwiązaniach bizne226 (c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2008 Rozdział monografii: 'Bazy Danych: Rozwój metod i technologii', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2008 Procesor decyzyjno-obliczeniowy dla rynkowego modelu danych M3 w sowych jako moduł większego systemu. Wymiana informacji z innymi modułami systemu za pomocą dokumentów w otwartym formacie M3-XML pozwala na stosowanie elastycznych rozwiązań – każdy moduł systemu może być wykonany w innej technologii. Założenia konstrukcji procesora decyzyjno-obliczeniowego, powodują, iż jest to rozwiązanie uniwersalne i można przenosić je pomiędzy różnymi systemami. Oprócz zastosowań biznesowych, procesor może być używany jako autonomiczna aplikacja służąca do rozwiązywania problemów zapisanych w notacji M3. Narzędzie takie jest potrzebne w środowiskach naukowych, na przykład w procesie badania właściwości nowych modeli matematycznych, umożliwiających ciągłą ewolucję rynków bądź też w procesie porównywania rozwiązań otrzymanych za pomocą różnych narzędzi obliczeniowych. w 7.3 Plany dalszych prac Literatura 1. da .b w Przedstawione narzędzie nie rozwiązuje oczywiście wszystkich istniejących problemów związanych z bilansowaniem i rozliczeniami na różnorodnych rynkach. Istnieją modele rynków, które zakładają istnienie kilku faz rozliczenia, np. model dwuetapowego bilansowania rynku wielotowarowego, zakładający rozchylenie cen rynkowych [12]. Istnieją także modele rynków, które po przeprowadzonym rozliczeniu wymagają jeszcze kilkukrotnego rozwiązania zmodyfikowanego problemu, w celu wyceny pewnych ograniczeń (np. ograniczeń sieciowych), przykładem takiego mechanizmu jest model MASIT, opisany w pracy [8]. Dalsze badania skupią się na metodach dostosowania szkieletu procesora decyzyjnoobliczeniowego do bardziej wyszukanych modeli obliczeniowych. Opracowany też powinien zostać uniwersalny – sterowany parametrami – moduł parsera przekształcającego wyniki działania solwerów do formatu M3-XML. pl s. Borndörfer R., Grötschel M., Lukac S., Mitusch K., Schlechte T., Schultz S., Tanner A.: An auctioning approach to railway slot allocation. Technical Report ZR-05-45, ZIB, Berlin 2005. 2. Courcoubetis C., Weber R.: Pricing Communication Networks: Economics, Technology and Modelling. John Willey & Sons, Ltd, 2003. 3. GLPK (GNU Linear Programming Toolkit). http://www.gnu.org/software/glpk 4. Hogan W. W.: Contract networks for electricity power transmission. Journal of Regulatory Economics, 4(3):211–242, Nov. 1992. 5. Kacprzak P., Kaleta M., Pałka P., Smolira K., Toczyłowski E., Traczyk T.: Communication Model for M3 – Open Multi-commodity Market Data Model. II Krajowa Konferencja Naukowa Technologie Przetwarzania Danych, ss. 139-150. Poznań, wrzesień 2007. 6. Kacprzak P., Kaleta M., Pałka P., Smolira K., Toczyłowski E., Traczyk T.: M3 – model danych dla otwartego systemu obrotu wielotowarowego. W książce: Bazy danych. Bezpieczeństwo, wybrane technologie i zastosowania. WNT, Warszawa, 2007, ss. 289-300. 7. Kacprzak P., Kaleta M., Pałka P., Smolira K., Toczyłowski E., Traczyk T.: M3: Open Multicommodity Market Data Model for Network Systems, materiały XVI Międzynarodowej Konferencji Systems Science, Wrocław, 2007, (przyjęte do druku). 8. Kaleta M.: Subsidize-Free Cost Allocation Method for Infrastructure Market Game, 13th IEEE/IFAC International Conference on Methods and Models in Automation and Robotics, Szczecin, 2007, ss. 1171-1175. 9. Korab R.: Łączna optymalizacja energii bilansującej i operacyjnych rezerw mocy na konkurencyjnym rynku energii elektrycznej, Przegląd Elektrotechniczny, 9:120-123, 2006. 10. Schwepe F.C.: Spot pricing of electricity. New Kluwer Academic Publishers, New York, 1988. 227 (c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2008 Rozdział monografii: 'Bazy Danych: Rozwój metod i technologii', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2008 P. Kacprzak, M. Kaleta, P. Pałka, K. Smolira, E. Toczyłowski, T. Traczyk 11. Stoft S.: Power System Economics: Designing Markets for Electricity. Wiley-Interscience, 2002. 12. Toczyłowski E.: Optymalizacja procesów rynkowych przy ograniczeniach. Akademicka Oficyna Wydawnicza EXIT, wydanie drugie rozszerzone, 2003. 13. Vickrey W.: Counterspeculation, auctions, and competitive sealed tenders. Journal of Finance, 16(1):8–37, 1961. 14. Witryna projektu M3. http://www.openm3.org/ 15. XQuery – XML Query Language website: http://www.w3.org/TR/xquery/ 16. XSL Transformations website: http://www.w3.org/TR/xslt w da .b w w pl s. 228 (c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2008