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.

Podobne dokumenty