• Nie Znaleziono Wyników

Sposób kodowania czynników

W dokumencie Index of /rozprawy2/10045 (Stron 39-42)

Problematyka wyboru firm inwestuj ą cych na danym terenie

3.5. Sposób kodowania czynników

W przypadku problemu plecakowego, a takim właśnie modelem jest przybliŜany rozwaŜany w tej pracy problem wyboru firm inwestujących na danym

terenie, najczęściej stosowanym sposobem kodowania „zbioru wybranych

przedmiotów” jest kodowanie binarne. W kodowaniu tym, kaŜdemu chromosomowi odpowiada pewien koszyk wybranych elementów, w którym gen o wartości „1” oznacza, iŜ dany element został włoŜony do plecaka (firma została wybrana), natomiast „0”, iŜ element ten nie znajduje się w plecaku (firma nie została wybrana). Długość chromosomu to liczba elementów, podlegających procesowi wyboru (liczba firm).

Rys. 9 Chromosom kodujący koszyk firm

Problemu nie stanowi właśnie taka implementacja sposobu kodowania ale odwzorowanie mające na celu przyporządkowanie kaŜdemu genowi – firmy o określonych parametrach. W celu odpowiedniego zamodelowania zaistniałej sytuacji został stworzony meta-model danych zapewniający omawiane odwzorowanie. Wymóg, który został postawiony na początku, iŜ nie będzie z góry narzuconej struktury danych ani typu danych, wymusił konieczność parametryzacji kaŜdego rodzaju danych. Dane wczytywane są więc z pliku postaci XML prezentowanego poniŜej.

<?xml version="1.0" encoding="UTF-8"?>

<firms>

<parameters>

<parameter id="pl.rybarski.firms.water" name="water"

type="java.lang.Double" />

type="java.lang.Double" />

<parameter id="pl.rybarski.firms.transport" name="transport"

type="pl.rybarski.firms.Transport" />

<parameter id="pl.rybarski.firms.trade" name="trade"

type="pl.rybarski.firms.Trade" /> <parameter id="pl.rybarski.firms.contribution"

name="contribution" type="pl.rybarski.firms.Contribute" /> <parameter id="pl.rybarski.firms.enviroment" name="enviroment"

type="pl.rybarski.firms.Enviroment" />

<parameter id="pl.rybarski.firms.power" name="power"

type="java.lang.Double" />

<parameter id="pl.rybarski.firms.investition" name="investition"

type="java.lang.Double" />

<parameter id="pl.rybarski.firms.workers" name="workers"

type="java.lang.Integer" />

<parameter id="pl.rybarski.firms.productionType"

name="productionType" type="pl.rybarski.firms.ProductionType" /> <parameter id="pl.rybarski.firms.production" name="production"

type="java.lang.String" />

<parameter id="pl.rybarski.firms.size" name="size"

type="java.lang.Double" />

</parameters>

<firmset>

<firm id="0">

<name>Cebal Tuba Sp. z o.o.</name>

<data>

<parameter id="pl.rybarski.firms.size">11582.0</parameter> <parameter id="pl.rybarski.firms.power">21.0</parameter> <parameter id="pl.rybarski.firms.gas">32.0</parameter> <parameter id="pl.rybarski.firms.water">21.0</parameter> <parameter id="pl.rybarski.firms.production">tworzywa sztuczne - opakowania polietylenowe</parameter>

<parameter

id="pl.rybarski.firms.trade">chemiczna</parameter> <parameter

id="pl.rybarski.firms.investition">1.12E7</parameter>

<parameter id="pl.rybarski.firms.workers">45</parameter> <parameter id="pl.rybarski.firms.enviroment">

<en id="enviroment" value="średnia" /> <en id="persons" value="średnia" />

</parameter>

<parameter id="pl.rybarski.firms.contribution">

<con country="Francja" value="58.0" />

<con country="Polska" value="42.0" />

</parameter>

<parameter id="pl.rybarski.firms.productionType"> <prod>produkcyjna</prod>

</parameter>

<parameter id="pl.rybarski.firms.transport"> <trans>samochodowy</trans>

</parameter>

</data>

</firm>

<firm id="1">

<name>Steijn Paper Sp. z o.o.</name>

<data>

<parameter id="pl.rybarski.firms.size">

8829.0

</parameter>

<parameter id="pl.rybarski.firms.power">85.0</parameter> <parameter id="pl.rybarski.firms.gas">10.0</parameter> <parameter id="pl.rybarski.firms.water">85.0</parameter>

<parameter id="pl.rybarski.firms.production">

papiernicza - papier transferowy

</parameter> <parameter id="pl.rybarski.firms.trade"> papiernicza </parameter> <parameter id="pl.rybarski.firms.investition"> 2.5E7 </parameter>

<parameter id="pl.rybarski.firms.workers">80</parameter> <parameter id="pl.rybarski.firms.enviroment">

<en id="enviroment" value="średnia" /> <en id="persons" value="średnia" />

</parameter>

<parameter id="pl.rybarski.firms.contribution">

<con country="Holandia" value="100.0" />

</parameter>

<parameter id="pl.rybarski.firms.productionType"> <prod>produkcyjna</prod>

</parameter>

<parameter id="pl.rybarski.firms.transport"> <trans>samochodowy</trans> <trans>PKP</trans> </parameter> </data> </firm> </firmset> </firms>

Listing. 1 Plik zawierający informacje o firmach

Prezentowany plik ten został podzielony na dwie części. W pierwszej znajdują się informacje na temat typu danych oraz ich identyfikatory, pozwalające wczytać określone dane do systemu. Identyfikatory te odpowiadają identyfikatorom funkcji odpowiedzialnych za deserializację (ang. deserialization) danych (odczytywanie danych z dysku). Funkcje wczytujące muszą zostać stworzone indywidualnie dla kaŜdego rodzaju danych, a następnie zostać wczytane do modułu odpowiedzialnego za deserializację. W drugiej części pliku znajdują się konkretne wartości liczbowe bądź opisowe, które zostaną wczytane do systemu. Rozwiązanie, pomimo iŜ umoŜliwia wczytanie danych dowolnego rodzaju, posiada jedną wadę. W momencie pobierania danych z „metamodelu” w celu np. obliczenia wartość koszyka firm, konieczne jest ich rzutowanie do określonego typu (do typu, który jest w stanie obsłuŜyć dana funkcja), co wymusza narzut czasowy, który opóźnia działanie algorytmu.

W dokumencie Index of /rozprawy2/10045 (Stron 39-42)

Powiązane dokumenty