Algorytm hybrydowy dla alokacji portfela inwestycyjnego przy
Transkrypt
Algorytm hybrydowy dla alokacji portfela inwestycyjnego przy
Adam Stawowy Algorytm hybrydowy dla alokacji portfela inwestycyjnego przy ograniczonych zasobach Summary: We present a meta-heuristic to combine Monte Carlo simulation with genetic algorithm for Capital Budgeting Problem. The main idea is to embed genetic algorithm into simulation model so that the algorithm is able to solve any problem with uncertain inputs. Experimental tests quantify the power of the proposed technique. 1. Wprowadzenie Celem pracy jest pokazanie możliwości współpracy symulacji oraz algorytmu genetycznego do rozwiązania problemu alokacji portfela inwestycyjnego przy ograniczonych zasobach. Tradycyjne techniki (pełny przegląd, programowanie dynamiczne) są nieadekwatne w przypadku problemów o dużych rozmiarach bądź zawierających zmienne o charakterze losowym. 2. Problem alokacji portfela inwestycji Każdego roku organizacje gospodarcze muszą określić, jakie projekty realizować. Powszechnie przyjętym kryterium jest maksymalizacja sumy NPV wnoszonych przez wybrane projekty, przy uwzględnieniu ograniczonych nakładów kapitałowych [5]. Problem ten można zapisać: znaleźć maksimum przy warunkach xi = 0 lub 1, i=1,...,n gdzie: n Ni NPVi B liczba projektów, nakłady początkowe na projekt i, NPV projektu i, dysponowany budżet, - dr inż., Wydział Zarządzania, Akademia Górniczo-Hutnicza, Kraków Jest to w zasadzie wersja zero-jedynkowego zagadnienia plecakowego (ang. zero-one knapsack problem), przy czym funkcję ograniczonej wielkości plecaka spełnia ograniczona wartość możliwego do zainwestowania kapitału. Z obliczeniowego punktu widzenia problemy plecakowe są trudne; prawdopodobnie nie istnieją algorytmy wielomianowe dla tych problemów [3]. Proponowane w literaturze [1] techniki dzielą się na: metody redukcji i aproksymacji (typu zachłannego i Lagrange’a), metody dokładne: o techniki sieciowe, o programowanie dynamiczne, o metody przeglądu (w tym technika przeglądu i ograniczeń). Klasyczną pozycją poświęconą zagadnieniu lokaty kapitału jest praca Weingartnera [4], w której zaproponował metodę programowania dynamicznego dającą optymalne rozwiązanie problemu. Tradycyjne techniki są nieadekwatne w przypadku problemów o dużych rozmiarach bądź zawierających zmienne o charakterze losowym. Losowość może dotyczyć zarówno efektów (mierzonych NPV) jak i nakładów na poszczególne projekty. W tabeli 1. przedstawiono typologię problemów i metody ich rozwiązania. Tabela 1. Typologia problemów lokaty kapitału L.p Nakłady NPV Metoda . zdeterminowane dla zdeterminowane dla techniki tradycyjne 1 wszystkich projektów wszystkich projektów TS, SA, EA, CBP symulacja 2 zdeterminowane wielkości losowe techniki hybrydowe symulacja 3 wielkości losowe wielkości losowe rozmyte programowanie liniowe Źródło: opracowanie własne 3. Algorytm hybrydowy dla zagadnienia lokaty kapitału Proponowany algorytm przeznaczony jest dla problemów 2. typu. Algorytm hybrydowy składa się z 2 elementów: symulacja jest odpowiedzialna za obliczanie wartości NPV projektowanych inwestycji w warunkach niepewności, algorytm genetyczny służy do optymalizacji struktury portfela inwestycyjnego. Technika symulacji służy do obliczenia wartości NPV dla wszystkich projektów, przy czym na wejściu mamy najczęściej zmienne opisane rozkładem trójkątnym (np. kursy walut, spodziewane ilości i ceny sprzedaży, ceny materiałów, energii - założenia te są jednakowe dla wszystkich projektów). Powstały w wyniku symulacji wektor NPV oraz stały wektor nakładów są wielkościami używanymi do optymalizacji struktury portfela. W następnym kroku następuje ponowne obliczenie wektora NPV i optymalizacja struktury portfela. Symulacja i optymalizacja są powtarzane 1000 razy. To rozwiązanie, które „zwycięży” najwięcej razy jest uznawane za rozwiązanie problemu. Do optymalizacji struktury portfela użyto algorytmu genetycznego w klasycznej wersji [2] - jest to zrozumiałe, jako że rozwiązanie problemu jest wektorem składającym się z 0 i 1. Populację początkową stanowi 15 rozwiązań otrzymanych losowo. Selekcja odbywa się na zasadzie ruletki, podstawowym operatorem jest jednopunktowa krzyżówka. Prawdopodobieństwo krzyżowania wynosi 1.00, a prawdopodobieństwo mutacji - 0.05. Algorytm kończy działanie po wygenerowaniu 25 pokoleń, tak wiec badanych jest zaledwie 375 rozwiązań. W algorytmie maksymalizowano następującą funkcję: F s i C FD i 1 N N gdzie: s - 2 (2) stała kary, taka że: 1 s 1000 jeśli Fi C jeśli Fi C reszta oznaczeń jak w (1) 4. Badania eksperymentalne Realizację programową algorytmu wykonano przy użyciu arkusza oraz języka VBA: arkusz EXCEL jest odpowiedzialny za interfejs oraz symulację NPV projektów, VBA posłużył do oprogramowania algorytmu genetycznego. W celu ilustracji działania algorytmu prześledźmy jego działanie na prostym przykładzie. Opis sytuacji Przedsiębiorstwo rozpatruje realizację 16 projektów o nakładach przedstawionych w tabeli 1. Na realizację projektów przedsiębiorstwo dysponuje środkami w wysokości 3 500 000 zł. Oszacowano rozkłady podstawowych zmiennych mających wpływ na efektywność inwestycji. Należy tak dobrać realizację projektów, by spodziewane efekty były jak największe, przy nakładach nie przekraczających dysponowanych środków. Tabela 1. Nakłady początkowe na rozpatrywane projekty. Nakłady Nakłady Projekt Projekt początkowe początkowe 1 160 000 zł 9 470 000 zł 2 580 000 zł 10 240 000 zł 3 360 000 zł 11 210 000 zł 4 290 000 zł 12 230 000 zł 5 200 000 zł 13 450 000 zł 6 610 000 zł 14 560 000 zł 7 790 000 zł 15 150 000 zł 8 230 000 zł 16 110 000 zł Krok 1. Symulacja wartości NPV dla wszystkich projektów W wyniku obliczeń symulacyjnych otrzymano wektor wartości NPV przedstawiony w tabeli 2. Tabela 2. Obliczone w kroku 1. NPV dla rozpatrywanych projektów. Projekt NPV Projekt NPV 1 1 021 000 zł 9 1 890 000 zł 2 2 099 000 zł 10 1 010 000 zł 3 1 963 000 zł 11 610 000 zł 4 1 723 000 zł 12 790 000 zł 5 726 000 zł 13 1 350 000 zł 6 1 833 000 zł 14 1 660 000 zł 7 2 342 000 zł 15 570 000 zł 8 684 000 zł 16 510 000 zł Krok 2. Optymalizacja struktury portfela Po zastosowaniu algorytmu genetycznego, dla danych zebranych w tabelach 1 i 2, uzyskano następujące rozwiązanie: Projekt 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Decyzja 1 1 1 1 1 0 0 1 1 1 0 1 1 0 1 1 W tej konkretnej (zasymulowanej) sytuacji należałoby zrealizować projekty nr 1, 2, 3, 4, 5, 8, 9, 10, 12, 13, 15, 16, przy czym sumaryczna wartość NPV wyniosłaby 14 366 000 zł, a nakłady - 3 470 000 zł. Następne iteracje: powtórzenie kroków 1. i 2. Powtarzamy symulację i optymalizację zadaną ilość razy. Dla każdego wektora NPV otrzymujemy wektor rozwiązań problemu. Na końcu porównujemy wszystkie kolejne rozwiązania i wybieramy to, które otrzymaliśmy najczęściej w trakcie działania algorytmu hybrydowego. W naszym przykładzie byłby to wektor: Projekt 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Decyzja 1 1 1 1 0 0 0 1 1 1 1 1 1 0 1 1 dający średnią wartość sumy NPV w wysokości 14 200 271 (odchylenie standardowe - 344 510), przy nakładach 3 480 000 zł. W trakcie badań algorytmu rozwiązywano bez trudności problemy o rozmiarach 200 projektów. 5. Wnioski końcowe W pracy zaproponowano połączenie symulacji z algorytmem genetycznym w celu rozwiązania problemu lokaty kapitału w warunkach niepewności. Okazało się, że taką hybrydyzację można przeprowadzić stosunkowo prosto, a uzyskiwane rezultaty są bardzo zadowalające. Algorytm nie wymaga dużych nakładów obliczeniowych, jest prosty w konstrukcji i zastosowaniu. Literatura [1] Beasley J. E.: OR-notes: integer programming, www.mscmga.ms.ic.ac.uk/jeb/or/ip.html. [2] Michalewicz Z.: Algorytmy genetyczne + struktury danych = programy ewolucyjne, WNT, Warszawa 1996. [3] Sysło M., Deo N., Kowalik J.: Algorytmy optymalizacji dyskretnej, PWN, Warszawa 1995. [4] Weingartner H.: "Capital Budgeting and interrelated projects: survey and synthesis". Management Science, vol. 2, no. 1, 1968, str. 485-516. [5] Winston W. L.: Financial models using simulation and optimization, Palisade Corporation, Newfield 2000.