]> git.rustad.me Git - optimering/commitdiff
Wrote some more on problem 2
authorBjørn Rustad <rustadbjornen@gmail.com>
Sun, 18 Mar 2012 22:32:25 +0000 (23:32 +0100)
committerBjørn Rustad <rustadbjornen@gmail.com>
Sun, 18 Mar 2012 22:32:25 +0000 (23:32 +0100)
rapport.tex

index 64e688ac1dd58f4dffb03d0d3822eb35c4a73497..f1411eb7274b0859b280c3ac4a7d5802d074c9e4 100644 (file)
@@ -109,7 +109,8 @@ er et KKT-punkt.
 Vi vil bruke MATLAB-funksjonen \texttt{fmincon} til å finne andre KKT-punkter.
 Først modifiserte vi den oppgitte koden.
 \begin{lstlisting}
-OPTIONS = optimset('Algorithm','active-set','TolX',1e-10,'TolCon',1e-10,'TolFun',1e-10);
+OPTIONS = optimset('Algorithm', 'active-set',...
+                   'TolX', 1e-10, 'TolCon', 1e-10, 'TolFun', 1e-10);
 x = fmincon('foppg1',x0,[],[],[],[],[],[],'constraints',OPTIONS)
 \end{lstlisting}
 Ved å prøve forskjellige verdier for $x_0$ fant vi frem til punktene $x_b =
@@ -217,17 +218,18 @@ får vi da dette kvadratiske optimiserings-problemet:
 \end{gather}
 
 \subsection{b)}
-KKT-likningene blir da
+KKT-likningene blir da (SKAL VI HA MED SKRANKELIKNINGENE HER OGSÅ?)
 \begin{gather}
   \label{eq:kkt}
   \nabla_x\mathcal{L} = -\mu + \kappa Cx - \pi v - \lambda = 0 \\
   \begin{alignedat}{2}
-  \pi\left(v'x-1\right) &= 0 \\
-  \lambda_i             &\geq 0 &\quad& i \in \mathcal{I}
+  \pi\left(v'x-1\right) &= 0 \nonumber \\
+  \lambda_i x_i         &= 0 &\quad& i \in \mathcal{I} \nonumber \\
+  \lambda_i             &\geq 0 && i \in \mathcal{I} \nonumber
   \end{alignedat}
 \end{gather}
-hvor $\lambda$ er en $n$-vektor med Lagrange-multiplikatorene til
-ulikhets-skrankene.
+hvor $\pi$ er Lagrange-multiplikatoren til likhetsskranken og $\lambda$
+er en $n$-vektor med Lagrange-multiplikatorene til ulikhets-skrankene.
 
 \subsection{c)}
 Når $\kappa = 0$ ser vi bort fra variansen og kovariansen til aksjene,
@@ -277,11 +279,51 @@ er det vilkårlig hvor mange vi kjøper av hver, så lenge likning
 $\kappa = \inf$ heyyy.
 
 \subsection{e)}
-Diskuter løsning når $n$ er liten. I dette tilfellet kan man gå gjennom
-alle mulige kombinasjoner av aktive constraints f.eks.
+Når antallet aksjer $n$ er liten, f.eks. $2$ eller $3$, lar problemet
+seg håndtere uten bruk av Matlab. Problemet \eqref{eq:quadopt} og
+KKT-likningene \eqref{eq:kkt} er som før, med en likhets-føring, og $n$
+ulikhetsføringer. Dette gir oss $2^n$ forskjellige mulige kombinasjoner
+av aktive føringer. Disse må man gå gjennom, og når man får et KKT-punkt
+vet man at man har et minimum, da problemet fortsatt er konvekst.
 
 \subsection{f)}
-Kanskje vi får plass til et bittelite numerisk eksempel her????
+Vi konstruerer et numerisk eksempel der
+\begin{equation}
+  C = \begin{bmatrix}
+   5 & .2 & .5 & .1 & .5 \\
+  .2 &  2 & .01 & .2 & .1 \\
+  .5 & .01 & 1 & 1 & 1 \\
+  .1 & .2 &  1 & .1 & .1 \\
+  .5 & .1 & 1 &.1 & .01
+  \end{bmatrix}
+  v = \begin{bmatrix}
+  1 \\
+  2 \\
+  3 \\
+  4 \\
+  5
+  \end{bmatrix}
+  \mu = \begin{bmatrix}
+  5 \\
+  4 \\
+  3 \\
+  2 \\
+  1
+  \end{bmatrix}.
+\end{equation}
+I Matlab løser vi dette med
+\begin{lstlisting}[language=Matlab]
+A = -eye(5);
+b = zeros(5, 1);
+beq = [1];
+X = quadprog(kappa*C, -mu, A, b, v', beq);
+\end{lstlisting}
+Hvis vi setter $\kappa = 0$, får vi løsningen $x = \left(1, 0, 0, 0,
+0\right)$, som forventet, fordi den første aksjen er den aksjen der
+$\frac{\mu_i}{v_i}$ er størst. Hvis setter alle elementene i $C$ som
+ikke ligger på diagonalen til null, og setter $\mu$ lik nullvektoren,
+får vi løsningen $x = \left(0.0001, 0.0004, 0.0011, 0.0150,
+0.1872\right)$. Vi kjøper altså litt av alt for å spre risikoen utover.
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \section{Oppgave 3}
@@ -290,9 +332,9 @@ Kanskje vi får plass til et bittelite numerisk eksempel her????
 \subsection{a)}
 \subsubsection{SR1}
 SR1 er en kvasi-newton-metode der vi ved hver iterasjon oppdaterer vårt
-estimat for hessianen, $B$, med en rang-1-matrise. Ved hvert steg trenger vi
-også inversen til $B$, som vi kaller $H$. Vi ser på en enkel og noe naiv
-implementasjon av SR1-metoden for løsning av testproblemet
+estimat for hessianen, $B$, med en rang-1-matrise. Ved hvert steg
+trenger vi også inversen til $B$, som vi kaller $H$. Vi ser på en enkel
+og noe naiv implementasjon av SR1-metoden for løsning av testproblemet
 \begin{equation}
   \label{eq:testproblem}
   \min_{x\in\mathbb{R}^n} \left\{ \frac{1}{2} x'Ax + b'x \right\},