%
% Optimization Techniques Work 2 report
%
% authors:
%   Χρήστος Χουτουρίδης ΑΕΜ 8997
%   cchoutou@ece.auth.gr


\documentclass[a4paper, 11pt]{AUTHReport}

% Document configuration
\AuthorName{Χρήστος Χουτουρίδης}
\AuthorMail{cchoutou@ece.auth.gr}
\AuthorAEM{8997}

% \CoAuthorName{CoAuthor Name}
% \CoAuthorMail{CoAuthor Mail}
% \CoAuthorAEM{AEM}

% \WorkGroup{Ομάδα Χ}

\DocTitle{1η Εργαστηριακή Άσκηση}
\DocSubTitle{Ελαχιστοποίηση συναρτήσεων πολλών μεταβλητών χωρίς περιορισμούς με χρήση παραγώγων}

\Department{Τμήμα ΗΜΜΥ. Τομέας Ηλεκτρονικής}
\ClassName{Τεχνικές Βελτιστοποίησης}

\InstructorName{Γ. Ροβιθάκης}
\InstructorMail{rovithak@auth.gr}
\CurrentDate{\today}

\usepackage{capt-of}
\usepackage{enumitem}
\usepackage{tabularx}
\usepackage{array}
\usepackage{amssymb}

\begin{document}

\setlist[itemize]{topsep=0pt, partopsep=0pt, itemsep=3pt, parsep=3pt}

\InsertTitle

%\tableofcontents

\sloppy

\section{Εισαγωγή}
Η παρούσα εργασία αφορά το πρόβλημα της ελαχιστοποίησης μιας δοσμένης συνάρτησης πολλών μεταβλητών $f: \mathbb{R}^n \rightarrow \mathbb{R}$ χωρίς περιορισμούς.
Για το σκοπό αυτό κάνουμε χρήση τριών μεθόδων.
Της μεθόδου μέγιστης καθόδου (Steepest Descent), της μεθόδου Newton, και της Levenberg-Marquardt.
Ακόμα για κάθε μία από αυτές θα υλοποιήσουμε τρεις διαφορετικές τεχνικές υπολογισμού βήματος.

\section{Παραδοτέα}
Τα παραδοτέα της εργασίας αποτελούνται από:
\begin{itemize}
    \item Την παρούσα αναφορά.
    \item Τον κατάλογο \textbf{scripts/}, που περιέχει τον κώδικα της MATLAB.
    \item Το \href{https://git.hoo2.net/hoo2/OptimizationTechniques/src/branch/master/Work2}{σύνδεσμο} με το αποθετήριο που περιέχει όλο το project με τον κώδικα της MATLAB, της αναφοράς και τα παραδοτέα.
\end{itemize}


\section{Προγραμματιστική προσέγγιση}
Για τον προγραμματισμό και εκτέλεση των μεθόδων της παρούσας εργασίας έγινε χρήση της MATLAB.
Στον κατάλογο \textbf{scripts}, περιέχονται όλες οι μέθοδοι και οι τεχνικές υπολογισμού βημάτων με τη μορφή συναρτήσεων καθώς και scripts που τις καλούν.
Για κάθε μία μέθοδο (ένα θέμα της εργασίας), υπάρχει το αντίστοιχο script που περιέχει τους υπολογισμούς, τις κλήσεις των μεθόδων και τη δημιουργία των διαγραμμάτων.
Στην παρούσα εργασία η υλοποίηση του κώδικα ακολουθεί την τεχνική της προηγούμενης εργασίας και “ομαδοποιεί” αρκετές λειτουργίες.
Πιο συγκεκριμένα.

\subsection{Πολυμορφική κλήση μεθόδων}
\label{subsec:polymorphic-calls}
...

\subsection{Symbolic expression functions}
Μία ακόμη προγραμματιστική τεχνική που ακολουθήθηκε είναι η χρήση \textbf{symbolic expression} για την αναπαράσταση των διαφορετικών αντικειμενικών συναρτήσεων.
Ο λόγος που επιλέχθηκε είναι η \textbf{δυνατότητα εξαγωγής ενός symbolic expression που αναπαριστά την κλήση $\nabla f$ και τον Εσσιανό $\nabla^2f$  μιας συνάρτησης} από την MATLAB, κάνοντας χρήση των εντολών \textit{gradient()} και \textit{hessian()}.
Αν αντίθετα χρησιμοποιούσαμε απλές συναρτήσεις, πολυώνυμα ή lambdas για την αναπαράσταση των αντικειμενικών συναρτήσεων, τότε για τον υπολογισμό της κλίσης και του Εσσιανού θα έπρεπε:
\begin{itemize}
    \item Είτε να υπολογίζαμε αριθμητικά τις παραγώγους gradient και hessian μέσα στις μεθόδους, κάτι που θα εισήγαγε \textit{\textbf{αχρείαστο αριθμητικό σφάλμα}}.
    \item Είτε να κάναμε χρήση δύο επιπλέων συναρτήσεων (ή πολυωνύμων) για την αναπαράσταση τους, κάτι που ουσιαστικά θα δημιουργούσε \textit{\textbf{πλεονασμό πληροφορίας εισόδου}} και άρα μεγαλύτερη πιθανότητα να κάνουμε λάθος.
\end{itemize}
Η αναπαράσταση όμως με χρήση symbolic expression είναι πιο “βαριά” όταν χρειάζεται να υπολογίσουμε την τιμή μιας συνάρτησης σε κάποιο σημείο (subs(expr, number)).
Αυτό είναι κάτι που χρειάζεται εκτενώς στον κώδικά μας.
Για το λόγο αυτό, ενώ η συνάρτηση δίνεται ως symbolic expression και μέσω αυτής υπολογίζονται αυτόματα η κλήση, ο Εσσιανός αλλά και οι “κανονικές” συναρτήσεις MATLAB που τις υλοποιούν.
Έτσι έχουμε την ακριβή αναπαράσταση της κλίσης και του Εσσιανού ως συναρτήσεις χωρίς να πληρώνουμε το κόστος της subs().

\section{Απεικόνιση της συνάρτησης}

Η συνάρτηση με την οποία ασχολούμαστε στην παρούσα εργασία είναι η:
\boldmath
\begin{equation}
    f(x,y) = x^5 \cdot e^{-x^2 - y^2}
\end{equation}
\label{eq:ObjectiveFunction}
\unboldmath

Στο παρακάτω σχήμα φαίνεται η τρισδιάστατη απεικόνιση της συνάρτησης.
\InsertFigure{0.8}{fig:plot3dFunction}{../scripts/figures/FunctionPlot.png}{Γραφική παράσταση της f}

Από το σχήμα μπορούμε πολύ εύκολα να διακρίνουμε ότι η συνάρτηση έχει ένα ευκρινές μέγιστο και ένα ελάχιστο στο διάστημα $\chi, \psi \in [-3, 3]$.
Για να πάρουμε μια καλύτερη αίσθηση για το που βρίσκονται αυτά τα τοπικά ακρότατα, παρακάτω παραθέτουμε ένα γράφημα με τις ισοβαρείς καμπύλες της $f$.
\InsertFigure{0.8}{fig:plotContour}{../scripts/figures/FunctionContour.png}{Ισοβαρείς της f}

Έτσι, από το σχήμα \ref{fig:plotContour} φαίνεται ότι το ελάχιστο της f βρίσκεται στο αρνητικό ημιεπίπεδο των χ, κοντά στο $\psi = 0$


\section{Τεχνικές υπολογισμού βήματος}

Πριν προχωρήσουμε στα επόμενα θέματα και στην ανάλυση των μεθόδων υπολογισμού του ελάχιστου, θέλουμε να αναφερθούμε στις διαφορετικές τεχνικές επιλογής βήματος $\gamma_k$.

%Σχόλια για τον Armijo Rule και τη μέθοδο ελαχιστοποίησης του γkγk​
%Armijo Rule
%
%Η Armijo Rule είναι μία μέθοδος για την επιλογή βήματος γkγk​ σε αλγόριθμους καθόδου (descent methods). Στόχος είναι να διασφαλιστεί ότι το βήμα που θα επιλεγεί μειώνει την αντικειμενική συνάρτηση σημαντικά, αλλά και να αποφευχθεί πολύ μικρό βήμα που οδηγεί σε αργή σύγκλιση. Ο κανόνας αυτός υλοποιείται ως εξής:
%
%Ξεκινάμε με μια αρχική τιμή για το γkγk​ (συνήθως γk=1γk​=1).
%Ελέγχουμε τη συνθήκη:
%f(xk−γk∇f(xk))≤f(xk)−σγk∥∇f(xk)∥2
%f(xk​−γk​∇f(xk​))≤f(xk​)−σγk​∥∇f(xk​)∥2 όπου σ∈(0,1)σ∈(0,1) είναι μια σταθερά (τυπικά κοντά στο 0.1).
%Αν η συνθήκη δεν ικανοποιείται, μειώνουμε το γkγk​ (π.χ., γk=β⋅γkγk​=β⋅γk​ με β∈(0,1)β∈(0,1)) και επαναλαμβάνουμε.
%
%Η Armijo Rule εγγυάται ότι το βήμα είναι "αρκετά καλό" για να μειώσει τη συνάρτηση, ενώ αποφεύγει την υπερβολική μείωση του γkγk​.

\section{Μέθοδος Μέγιστης Καθόδου - Steepest Descent}

Γενικές Πληροφορίες: Είναι μια μέθοδος πρώτης τάξης που χρησιμοποιεί την κατεύθυνση της αρνητικής κλίσης (gradient) της συνάρτησης f(x)f(x) ως κατεύθυνση καθόδου. Η μέθοδος θεωρείται βασική και συχνά χρησιμοποιείται ως εισαγωγή στις μεθόδους βελτιστοποίησης.
Περιγραφή: Η μέθοδος επιλέγει την κατεύθυνση dk=−∇f(xk)dk​=−∇f(xk​), η οποία είναι η κατεύθυνση της μέγιστης τοπικής μείωσης της συνάρτησης. Στη συνέχεια, υπολογίζεται το βήμα γkγk​ για να βρεθεί το επόμενο σημείο xk+1=xk+γkdkxk+1​=xk​+γk​dk​.
Απαιτήσεις: Η συνάρτηση f(x)f(x) πρέπει να είναι συνεχής και διαφορίσιμη. Η κλίση ∇f(x)∇f(x) πρέπει να είναι υπολογίσιμη.
Περιορισμοί:

Αργή σύγκλιση όταν η συνάρτηση έχει πολύ διαφορετικές κλίσεις σε διαφορετικές κατευθύνσεις (π.χ., σε επιμήκη κοιλάδα).
Δεν μπορεί να εκμεταλλευτεί τη δεύτερη τάξη πληροφοριών (Hessian).

Πλεονεκτήματα:

Απλή στην υλοποίηση.
Λειτουργεί καλά για καλά κλιμακούμενες συναρτήσεις.

Μειονεκτήματα:

Αργή σε κυρτές συναρτήσεις με στενά ελάχιστα.
Δεν εγγυάται την ταχύτερη σύγκλιση.

\section{Μέθοδος Newton}

\section{Μέθοδος Levenberg-Marquardt}

\section{Σύγκριση των μεθόδων}
Εκτελώντας όλους του αλγόριθμους για τα ίδια δεδομένα, \textbf{για τον αριθμό επαναλήψεων} έχουμε: \\

\par
\underline{Παρατηρήσεις:}
\begin{itemize}
    \item ...
\end{itemize}


\section{Συμπεράσματα}
Οι μέθοδοι της παρούσας εργασίας αποτελούν βασικές τεχνικές για την εύρεση του τοπικού ελαχίστου ...

\end{document}
