chapter 3 'complete'.

This commit is contained in:
Nicole Dresselhaus 2017-10-10 17:45:58 +02:00
parent 294cb4c501
commit 0a2e779181
Signed by: Drezil
GPG Key ID: 057D94F356F41E25
5 changed files with 811 additions and 49 deletions

BIN
arbeit/img/enoughCP.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

676
arbeit/img/enoughCP.svg Normal file
View File

@ -0,0 +1,676 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="94.223373mm"
height="91.639961mm"
viewBox="0 0 333.86235 324.70852"
id="svg2"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="enoughCP.svg">
<defs
id="defs4" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1.979899"
inkscape:cx="128.58458"
inkscape:cy="179.18795"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:snap-object-midpoints="true"
inkscape:snap-smooth-nodes="false"
inkscape:object-paths="true"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:window-width="1920"
inkscape:window-height="1141"
inkscape:window-x="1680"
inkscape:window-y="0"
inkscape:window-maximized="1" />
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-218.18947,-467.98862)">
<circle
style="opacity:1;fill:none;fill-opacity:1;stroke:#000080;stroke-width:0.98587084"
id="path4543"
cx="385.37317"
cy="632.13879"
r="158.09593" />
<circle
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
id="path4138"
cx="223.68947"
cy="473.48862"
r="5" />
<circle
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
id="path4138-3"
cx="259.56308"
cy="473.48862"
r="5" />
<circle
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
id="path4138-6"
cx="295.43668"
cy="473.48862"
r="5" />
<circle
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
id="path4138-7"
cx="331.31027"
cy="473.48862"
r="5" />
<circle
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
id="path4138-5"
cx="367.18387"
cy="473.48862"
r="5" />
<circle
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
id="path4138-35"
cx="403.05746"
cy="473.48862"
r="5" />
<circle
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
id="path4138-62"
cx="438.93106"
cy="473.48862"
r="5" />
<circle
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
id="path4138-9"
cx="474.80466"
cy="473.48862"
r="5" />
<circle
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
id="path4138-1"
cx="510.67825"
cy="473.48862"
r="5" />
<circle
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
id="path4138-2"
cx="546.55182"
cy="473.48862"
r="5" />
<circle
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
id="path4138-0"
cx="223.68947"
cy="508.34512"
r="5" />
<circle
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
id="path4138-3-9"
cx="259.56308"
cy="508.34512"
r="5" />
<circle
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
id="path4138-6-3"
cx="295.43668"
cy="508.34512"
r="5" />
<circle
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
id="path4138-7-6"
cx="331.31027"
cy="508.34512"
r="5" />
<circle
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
id="path4138-5-0"
cx="367.18387"
cy="508.34512"
r="5" />
<circle
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
id="path4138-35-6"
cx="403.05746"
cy="508.34512"
r="5" />
<circle
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
id="path4138-62-2"
cx="438.93106"
cy="508.34512"
r="5" />
<circle
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
id="path4138-9-6"
cx="474.80466"
cy="508.34512"
r="5" />
<circle
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
id="path4138-1-1"
cx="510.67825"
cy="508.34512"
r="5" />
<circle
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
id="path4138-2-8"
cx="546.55182"
cy="508.34512"
r="5" />
<circle
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
id="path4138-20"
cx="223.68947"
cy="578.05811"
r="5" />
<circle
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
id="path4138-3-2"
cx="259.56308"
cy="578.05811"
r="5" />
<circle
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
id="path4138-6-37"
cx="295.43668"
cy="578.05811"
r="5" />
<circle
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
id="path4138-7-5"
cx="331.31027"
cy="578.05811"
r="5" />
<circle
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
id="path4138-5-9"
cx="367.18387"
cy="578.05811"
r="5" />
<circle
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
id="path4138-35-2"
cx="403.05746"
cy="578.05811"
r="5" />
<circle
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
id="path4138-62-28"
cx="438.93106"
cy="578.05811"
r="5" />
<circle
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
id="path4138-9-9"
cx="474.80466"
cy="578.05811"
r="5" />
<circle
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
id="path4138-1-7"
cx="510.67825"
cy="578.05811"
r="5" />
<circle
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
id="path4138-2-3"
cx="546.55182"
cy="578.05811"
r="5" />
<circle
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
id="path4138-12"
cx="223.68947"
cy="612.91461"
r="5" />
<circle
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
id="path4138-3-93"
cx="259.56308"
cy="612.91461"
r="5" />
<circle
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
id="path4138-6-1"
cx="295.43668"
cy="612.91461"
r="5" />
<circle
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
id="path4138-7-9"
cx="331.31027"
cy="612.91461"
r="5" />
<circle
style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#000000"
id="path4138-5-4"
cx="367.18387"
cy="612.91461"
r="5" />
<circle
style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#000000"
id="path4138-35-7"
cx="403.05746"
cy="612.91461"
r="5" />
<circle
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
id="path4138-62-8"
cx="438.93106"
cy="612.91461"
r="5" />
<circle
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
id="path4138-9-4"
cx="474.80466"
cy="612.91461"
r="5" />
<circle
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
id="path4138-1-5"
cx="510.67825"
cy="612.91461"
r="5" />
<circle
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
id="path4138-2-0"
cx="546.55182"
cy="612.91461"
r="5" />
<circle
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
id="path4138-61"
cx="223.68947"
cy="647.77112"
r="5" />
<circle
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
id="path4138-3-0"
cx="259.56308"
cy="647.77112"
r="5" />
<circle
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
id="path4138-6-6"
cx="295.43668"
cy="647.77112"
r="5" />
<circle
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
id="path4138-7-3"
cx="331.31027"
cy="647.77112"
r="5" />
<circle
style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#000000"
id="path4138-5-2"
cx="367.18387"
cy="647.77112"
r="5" />
<circle
style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#000000"
id="path4138-35-0"
cx="403.05746"
cy="647.77112"
r="5" />
<circle
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
id="path4138-62-6"
cx="438.93106"
cy="647.77112"
r="5" />
<circle
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
id="path4138-9-1"
cx="474.80466"
cy="647.77112"
r="5" />
<circle
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
id="path4138-1-55"
cx="510.67825"
cy="647.77112"
r="5" />
<circle
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
id="path4138-2-4"
cx="546.55182"
cy="647.77112"
r="5" />
<circle
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
id="path4138-56"
cx="223.68947"
cy="682.62762"
r="5" />
<circle
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
id="path4138-3-937"
cx="259.56308"
cy="682.62762"
r="5" />
<circle
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
id="path4138-6-4"
cx="295.43668"
cy="682.62762"
r="5" />
<circle
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
id="path4138-7-52"
cx="331.31027"
cy="682.62762"
r="5" />
<circle
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
id="path4138-5-5"
cx="367.18387"
cy="682.62762"
r="5" />
<circle
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
id="path4138-35-4"
cx="403.05746"
cy="682.62762"
r="5" />
<circle
style="opacity:1;fill:#aad400;fill-opacity:1;stroke:#000000"
id="path4138-62-7"
cx="438.93106"
cy="682.62762"
r="5" />
<circle
style="opacity:1;fill:#aad400;fill-opacity:1;stroke:#000000"
id="path4138-9-44"
cx="474.80466"
cy="682.62762"
r="5" />
<circle
style="opacity:1;fill:#aad400;fill-opacity:1;stroke:#000000"
id="path4138-1-3"
cx="510.67825"
cy="682.62762"
r="5" />
<circle
style="opacity:1;fill:#aad400;fill-opacity:1;stroke:#000000"
id="path4138-2-07"
cx="546.55182"
cy="682.62762"
r="5" />
<circle
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
id="path4138-68"
cx="223.68947"
cy="717.48413"
r="5" />
<circle
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
id="path4138-3-8"
cx="259.56308"
cy="717.48413"
r="5" />
<circle
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
id="path4138-6-43"
cx="295.43668"
cy="717.48413"
r="5" />
<circle
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
id="path4138-7-1"
cx="331.31027"
cy="717.48413"
r="5" />
<circle
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
id="path4138-5-49"
cx="367.18387"
cy="717.48413"
r="5" />
<circle
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
id="path4138-35-20"
cx="403.05746"
cy="717.48413"
r="5" />
<circle
style="opacity:1;fill:#aad400;fill-opacity:1;stroke:#000000"
id="path4138-62-68"
cx="438.93106"
cy="717.48413"
r="5" />
<circle
style="opacity:1;fill:#aad400;fill-opacity:1;stroke:#000000"
id="path4138-9-92"
cx="474.80466"
cy="717.48413"
r="5" />
<circle
style="opacity:1;fill:#aad400;fill-opacity:1;stroke:#000000"
id="path4138-1-6"
cx="510.67825"
cy="717.48413"
r="5" />
<circle
style="opacity:1;fill:#aad400;fill-opacity:1;stroke:#000000"
id="path4138-2-6"
cx="546.55182"
cy="717.48413"
r="5" />
<circle
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
id="path4138-95"
cx="223.68947"
cy="752.34064"
r="5" />
<circle
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
id="path4138-3-04"
cx="259.56308"
cy="752.34064"
r="5" />
<circle
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
id="path4138-6-8"
cx="295.43668"
cy="752.34064"
r="5" />
<circle
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
id="path4138-7-7"
cx="331.31027"
cy="752.34064"
r="5" />
<circle
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
id="path4138-5-1"
cx="367.18387"
cy="752.34064"
r="5" />
<circle
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
id="path4138-35-72"
cx="403.05746"
cy="752.34064"
r="5" />
<circle
style="opacity:1;fill:#aad400;fill-opacity:1;stroke:#000000"
id="path4138-62-72"
cx="438.93106"
cy="752.34064"
r="5" />
<circle
style="opacity:1;fill:#aad400;fill-opacity:1;stroke:#000000"
id="path4138-9-2"
cx="474.80466"
cy="752.34064"
r="5" />
<circle
style="opacity:1;fill:#aad400;fill-opacity:1;stroke:#000000"
id="path4138-1-61"
cx="510.67825"
cy="752.34064"
r="5" />
<circle
style="opacity:1;fill:#aad400;fill-opacity:1;stroke:#000000"
id="path4138-2-06"
cx="546.55182"
cy="752.34064"
r="5" />
<circle
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
id="path4138-59"
cx="223.68947"
cy="787.19714"
r="5" />
<circle
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
id="path4138-3-4"
cx="259.56308"
cy="787.19714"
r="5" />
<circle
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
id="path4138-6-9"
cx="295.43668"
cy="787.19714"
r="5" />
<circle
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
id="path4138-7-0"
cx="331.31027"
cy="787.19714"
r="5" />
<circle
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
id="path4138-5-91"
cx="367.18387"
cy="787.19714"
r="5" />
<circle
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
id="path4138-35-77"
cx="403.05746"
cy="787.19714"
r="5" />
<circle
style="opacity:1;fill:#aad400;fill-opacity:1;stroke:#000000"
id="path4138-62-1"
cx="438.93106"
cy="787.19714"
r="5" />
<circle
style="opacity:1;fill:#aad400;fill-opacity:1;stroke:#000000"
id="path4138-9-15"
cx="474.80466"
cy="787.19714"
r="5" />
<circle
style="opacity:1;fill:#aad400;fill-opacity:1;stroke:#000000"
id="path4138-1-9"
cx="510.67825"
cy="787.19714"
r="5" />
<circle
style="opacity:1;fill:#aad400;fill-opacity:1;stroke:#000000"
id="path4138-2-7"
cx="546.55182"
cy="787.19714"
r="5" />
<circle
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
id="path4138-36"
cx="223.68947"
cy="543.2016"
r="5" />
<circle
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
id="path4138-3-5"
cx="259.56308"
cy="543.2016"
r="5" />
<circle
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
id="path4138-6-63"
cx="295.43668"
cy="543.2016"
r="5" />
<circle
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
id="path4138-7-94"
cx="331.31027"
cy="543.2016"
r="5" />
<circle
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
id="path4138-5-8"
cx="367.18387"
cy="543.2016"
r="5" />
<circle
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
id="path4138-35-1"
cx="403.05746"
cy="543.2016"
r="5" />
<circle
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
id="path4138-62-29"
cx="438.93106"
cy="543.2016"
r="5" />
<circle
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
id="path4138-9-3"
cx="474.80466"
cy="543.2016"
r="5" />
<circle
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
id="path4138-1-90"
cx="510.67825"
cy="543.2016"
r="5" />
<circle
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
id="path4138-2-88"
cx="546.55182"
cy="543.2016"
r="5" />
<circle
style="opacity:1;fill:#0000ff;fill-opacity:1;stroke:#000000"
id="path4138-35-7-5"
cx="504.78043"
cy="735.75458"
r="5" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 18 KiB

View File

@ -35,7 +35,7 @@ informatics (i.e. layouting of circuit boards or stacking of 3D--objects).
Moreover these are typically not static environments but requirements shift over Moreover these are typically not static environments but requirements shift over
time or from case to case. time or from case to case.
Evolutional algorithms cope especially well with these problem domains while Evolutionary algorithms cope especially well with these problem domains while
addressing all the issues at hand\cite{minai2006complex}. One of the main addressing all the issues at hand\cite{minai2006complex}. One of the main
concerns in these algorithms is the formulation of the problems in terms of a concerns in these algorithms is the formulation of the problems in terms of a
genome and a fitness function. While one can typically use an arbitrary genome and a fitness function. While one can typically use an arbitrary
@ -72,7 +72,7 @@ First we introduce different topics in isolation in Chapter \ref{sec:back}. We
take an abstract look at the definition of \ac{FFD} for a one--dimensional line take an abstract look at the definition of \ac{FFD} for a one--dimensional line
(in \ref{sec:back:ffd}) and discuss why this is a sensible deformation function (in \ref{sec:back:ffd}) and discuss why this is a sensible deformation function
(in \ref{sec:back:ffdgood}). (in \ref{sec:back:ffdgood}).
Then we establish some background--knowledge of evolutional algorithms (in Then we establish some background--knowledge of evolutionary algorithms (in
\ref{sec:back:evo}) and why this is useful in our domain (in \ref{sec:back:evo}) and why this is useful in our domain (in
\ref{sec:back:evogood}). \ref{sec:back:evogood}).
In a third step we take a look at the definition of the different evolvability In a third step we take a look at the definition of the different evolvability
@ -173,15 +173,15 @@ on the deformation itself.
All in all \ac{FFD} and \ac{DM--FFD} are still good ways to deform a high--polygon All in all \ac{FFD} and \ac{DM--FFD} are still good ways to deform a high--polygon
mesh albeit the downsides. mesh albeit the downsides.
## What is evolutional optimization? ## What is evolutionary optimization?
\label{sec:back:evo} \label{sec:back:evo}
In this thesis we are using an evolutional optimization strategy to solve the In this thesis we are using an evolutionary optimization strategy to solve the
problem of finding the best parameters for our deformation. This approach, problem of finding the best parameters for our deformation. This approach,
however, is very generic and we introduce it here in a broader sense. however, is very generic and we introduce it here in a broader sense.
\begin{algorithm} \begin{algorithm}
\caption{An outline of evolutional algorithms} \caption{An outline of evolutionary algorithms}
\label{alg:evo} \label{alg:evo}
\begin{algorithmic} \begin{algorithmic}
\STATE t := 0; \STATE t := 0;
@ -197,7 +197,7 @@ however, is very generic and we introduce it here in a broader sense.
\end{algorithmic} \end{algorithmic}
\end{algorithm} \end{algorithm}
The general shape of an evolutional algorithm (adapted from The general shape of an evolutionary algorithm (adapted from
\cite{back1993overview}) is outlined in Algorithm \ref{alg:evo}. Here, $P(t)$ \cite{back1993overview}) is outlined in Algorithm \ref{alg:evo}. Here, $P(t)$
denotes the population of parameters in step $t$ of the algorithm. The denotes the population of parameters in step $t$ of the algorithm. The
population contains $\mu$ individuals $a_i$ that fit the shape of the parameters population contains $\mu$ individuals $a_i$ that fit the shape of the parameters
@ -227,16 +227,16 @@ can be changed over time. One can for example start off with a high
mutation--rate that cools off over time (i.e. by lowering the variance of a mutation--rate that cools off over time (i.e. by lowering the variance of a
gaussian noise). gaussian noise).
## Advantages of evolutional algorithms ## Advantages of evolutionary algorithms
\label{sec:back:evogood} \label{sec:back:evogood}
The main advantage of evolutional algorithms is the ability to find optima of The main advantage of evolutionary algorithms is the ability to find optima of
general functions just with the help of a given fitness--function. With this general functions just with the help of a given fitness--function. With this
most problems of simple gradient--based procedures, which often target the same most problems of simple gradient--based procedures, which often target the same
error--function which measures the fitness, as an evolutional algorithm, but can error--function which measures the fitness, as an evolutionary algorithm, but can
easily get stuck in local optima. easily get stuck in local optima.
Components and techniques for evolutional algorithms are specifically known to Components and techniques for evolutionary algorithms are specifically known to
help with different problems arising in the domain of help with different problems arising in the domain of
optimization\cite{weise2012evolutionary}. An overview of the typical problems optimization\cite{weise2012evolutionary}. An overview of the typical problems
are shown in figure \ref{fig:probhard}. are shown in figure \ref{fig:probhard}.
@ -249,20 +249,20 @@ are shown in figure \ref{fig:probhard}.
Most of the advantages stem from the fact that a gradient--based procedure has Most of the advantages stem from the fact that a gradient--based procedure has
only one point of observation from where it evaluates the next steps, whereas an only one point of observation from where it evaluates the next steps, whereas an
evolutional strategy starts with a population of guessed solutions. Because an evolutionary strategy starts with a population of guessed solutions. Because an
evolutional strategy modifies the solution randomly, keeps the best solutions evolutionary strategy modifies the solution randomly, keeps the best solutions
and purges the worst, it can also target multiple different hypothesis at the and purges the worst, it can also target multiple different hypothesis at the
same time where the local optima die out in the face of other, better same time where the local optima die out in the face of other, better
candidates. candidates.
If an analytic best solution exists and is easily computable (i.e. because the If an analytic best solution exists and is easily computable (i.e. because the
error--function is convex) an evolutional algorithm is not the right choice. error--function is convex) an evolutionary algorithm is not the right choice.
Although both converge to the same solution, the analytic one is usually faster. Although both converge to the same solution, the analytic one is usually faster.
But in reality many problems have no analytic solution, because the problem is But in reality many problems have no analytic solution, because the problem is
either not convex or there are so many parameters that an analytic solution either not convex or there are so many parameters that an analytic solution
(mostly meaning the equivalence to an exhaustive search) is computationally not (mostly meaning the equivalence to an exhaustive search) is computationally not
feasible. Here evolutional optimization has one more advantage as you can at feasible. Here evolutionary optimization has one more advantage as you can at
least get a suboptimal solutions fast, which then refine over time. least get a suboptimal solutions fast, which then refine over time.
## Criteria for the evolvability of linear deformations ## Criteria for the evolvability of linear deformations
@ -300,9 +300,9 @@ is only performed to map the criterion--range to $[0..1]$, whereas $1$ is the
optimal value and $0$ is the worst value. optimal value and $0$ is the worst value.
This criterion should be characteristic for numeric stability on the on This criterion should be characteristic for numeric stability on the on
hand\cite[chapter 2.7]{golub2012matrix} and for convergence speed of evolutional hand\cite[chapter 2.7]{golub2012matrix} and for convergence speed of
algorithms on the other hand\cite{anrichterEvol} as it is tied to the notion of evolutionary algorithms on the other hand\cite{anrichterEvol} as it is tied to
locality\cite{weise2012evolutionary,thorhauer2014locality}. the notion of locality\cite{weise2012evolutionary,thorhauer2014locality}.
### Improvement Potential ### Improvement Potential
@ -439,17 +439,55 @@ and use Cramers rule for inverting the small Jacobian and solving this system of
linear equations. linear equations.
## Parametrisierung sinnvoll? ## Deformation Grid
- Nachteile von Parametrisierung As mentioned in chapter \ref{sec:back:evo}, the way of choosing the
- wie in kap. \ref{sec:back:evo} zu sehen, ist Parametrisierung representation to map the general problem (mesh--fitting/optimization in our
wichtig\cite{Rothlauf2006}. case) into a parameter-space it very important for the quality and runtime of
- Parametrisierung zwar lokal, aber nicht 1:1 evolutionary algorithms\cite{Rothlauf2006}.
- Deformation ist um einen Kontrollpunkt viel direkter zu steuern.
- => DM--FFD kann abhelfen, further study.
- Schlechte Parametrisierung sorgt dafür, dass CP u.U. nicht zur
Parametrisierung verwendet werden.
Because our control--points are arranged in a grid, we can accurately represent
each vertex--point inside the grids volume with proper B--Spline--coefficients
between $[0,1[$ and --- as a consequence --- we have to embed our object into it
(or create constant "dummy"-points outside).
The great advantage of B--Splines is the locality, direct impact of each
control point without having a $1:1$--correlation, and a smooth deformation.
While the advantages are great, the issues arise from the problem to decide
where to place the control--points and how many.
One would normally think, that the more control--points you add, the better the
result will be, but this is not the case for our B--Splines. Given any point $p$
only the $2 \cdot (d-1)$ control--points contribute to the parametrization of
that point^[Normally these are $d-1$ to each side, but at the boundaries the
number gets increased to the inside to meet the required smoothness].
This means, that a high resolution can have many control-points that are not
contributing to any point on the surface and are thus completely irrelevant to
the solution.
\begin{figure}[!ht]
\begin{center}
\includegraphics{img/enoughCP.png}
\end{center}
\caption{A high resolution ($10 \times 10$) of control--points over a circle.
yellow/green points contribute to the parametrization, red points don't.\newline
An Example--point (blue) is solely determined by the position of the green
control--points.}
\label{fig:enoughCP}
\end{figure}
We illustrate this phenomenon in figure \ref{fig:enoughCP}, where the four red
central points are not relevant for the parametrization of the circle.
\unsure[inline]{erwähnen, dass man aus $\vec{D}$ einfach die Null--Spalten
entfernen kann?}
For our tests we chose different uniformly sized grids and added gaussian noise
onto each control-point^[For the special case of the outer layer we only applied
noise away from the object] to simulate different starting-conditions.
\unsure[inline]{verweis auf DM--FFD?}
# Scenarios for testing evolvability criteria using \acf{FFD} # Scenarios for testing evolvability criteria using \acf{FFD}
\label{sec:eval} \label{sec:eval}

Binary file not shown.

View File

@ -179,7 +179,7 @@ simulation --- or known hard algorithmic problems in informatics
these are typically not static environments but requirements shift over these are typically not static environments but requirements shift over
time or from case to case. time or from case to case.
Evolutional algorithms cope especially well with these problem domains Evolutionary algorithms cope especially well with these problem domains
while addressing all the issues at hand\cite{minai2006complex}. One of while addressing all the issues at hand\cite{minai2006complex}. One of
the main concerns in these algorithms is the formulation of the problems the main concerns in these algorithms is the formulation of the problems
in terms of a genome and a fitness function. While one can typically use in terms of a genome and a fitness function. While one can typically use
@ -220,7 +220,7 @@ First we introduce different topics in isolation in Chapter
\ref{sec:back}. We take an abstract look at the definition of \ac{FFD} \ref{sec:back}. We take an abstract look at the definition of \ac{FFD}
for a one--dimensional line (in \ref{sec:back:ffd}) and discuss why this for a one--dimensional line (in \ref{sec:back:ffd}) and discuss why this
is a sensible deformation function (in \ref{sec:back:ffdgood}). Then we is a sensible deformation function (in \ref{sec:back:ffdgood}). Then we
establish some background--knowledge of evolutional algorithms (in establish some background--knowledge of evolutionary algorithms (in
\ref{sec:back:evo}) and why this is useful in our domain (in \ref{sec:back:evo}) and why this is useful in our domain (in
\ref{sec:back:evogood}). In a third step we take a look at the \ref{sec:back:evogood}). In a third step we take a look at the
definition of the different evolvability criteria established in definition of the different evolvability criteria established in
@ -328,18 +328,18 @@ major impact on the deformation itself.
All in all \ac{FFD} and \ac{DM--FFD} are still good ways to deform a All in all \ac{FFD} and \ac{DM--FFD} are still good ways to deform a
high--polygon mesh albeit the downsides. high--polygon mesh albeit the downsides.
\section{What is evolutional \section{What is evolutionary
optimization?}\label{what-is-evolutional-optimization} optimization?}\label{what-is-evolutionary-optimization}
\label{sec:back:evo} \label{sec:back:evo}
In this thesis we are using an evolutional optimization strategy to In this thesis we are using an evolutionary optimization strategy to
solve the problem of finding the best parameters for our deformation. solve the problem of finding the best parameters for our deformation.
This approach, however, is very generic and we introduce it here in a This approach, however, is very generic and we introduce it here in a
broader sense. broader sense.
\begin{algorithm} \begin{algorithm}
\caption{An outline of evolutional algorithms} \caption{An outline of evolutionary algorithms}
\label{alg:evo} \label{alg:evo}
\begin{algorithmic} \begin{algorithmic}
\STATE t := 0; \STATE t := 0;
@ -355,7 +355,7 @@ broader sense.
\end{algorithmic} \end{algorithmic}
\end{algorithm} \end{algorithm}
The general shape of an evolutional algorithm (adapted from The general shape of an evolutionary algorithm (adapted from
\cite{back1993overview}) is outlined in Algorithm \ref{alg:evo}. Here, \cite{back1993overview}) is outlined in Algorithm \ref{alg:evo}. Here,
\(P(t)\) denotes the population of parameters in step \(t\) of the \(P(t)\) denotes the population of parameters in step \(t\) of the
algorithm. The population contains \(\mu\) individuals \(a_i\) that fit algorithm. The population contains \(\mu\) individuals \(a_i\) that fit
@ -395,19 +395,19 @@ that can be changed over time. One can for example start off with a high
mutation--rate that cools off over time (i.e.~by lowering the variance mutation--rate that cools off over time (i.e.~by lowering the variance
of a gaussian noise). of a gaussian noise).
\section{Advantages of evolutional \section{Advantages of evolutionary
algorithms}\label{advantages-of-evolutional-algorithms} algorithms}\label{advantages-of-evolutionary-algorithms}
\label{sec:back:evogood} \label{sec:back:evogood}
The main advantage of evolutional algorithms is the ability to find The main advantage of evolutionary algorithms is the ability to find
optima of general functions just with the help of a given optima of general functions just with the help of a given
fitness--function. With this most problems of simple gradient--based fitness--function. With this most problems of simple gradient--based
procedures, which often target the same error--function which measures procedures, which often target the same error--function which measures
the fitness, as an evolutional algorithm, but can easily get stuck in the fitness, as an evolutionary algorithm, but can easily get stuck in
local optima. local optima.
Components and techniques for evolutional algorithms are specifically Components and techniques for evolutionary algorithms are specifically
known to help with different problems arising in the domain of known to help with different problems arising in the domain of
optimization\cite{weise2012evolutionary}. An overview of the typical optimization\cite{weise2012evolutionary}. An overview of the typical
problems are shown in figure \ref{fig:probhard}. problems are shown in figure \ref{fig:probhard}.
@ -420,21 +420,21 @@ problems are shown in figure \ref{fig:probhard}.
Most of the advantages stem from the fact that a gradient--based Most of the advantages stem from the fact that a gradient--based
procedure has only one point of observation from where it evaluates the procedure has only one point of observation from where it evaluates the
next steps, whereas an evolutional strategy starts with a population of next steps, whereas an evolutionary strategy starts with a population of
guessed solutions. Because an evolutional strategy modifies the solution guessed solutions. Because an evolutionary strategy modifies the
randomly, keeps the best solutions and purges the worst, it can also solution randomly, keeps the best solutions and purges the worst, it can
target multiple different hypothesis at the same time where the local also target multiple different hypothesis at the same time where the
optima die out in the face of other, better candidates. local optima die out in the face of other, better candidates.
If an analytic best solution exists and is easily computable If an analytic best solution exists and is easily computable
(i.e.~because the error--function is convex) an evolutional algorithm is (i.e.~because the error--function is convex) an evolutionary algorithm
not the right choice. Although both converge to the same solution, the is not the right choice. Although both converge to the same solution,
analytic one is usually faster. the analytic one is usually faster.
But in reality many problems have no analytic solution, because the But in reality many problems have no analytic solution, because the
problem is either not convex or there are so many parameters that an problem is either not convex or there are so many parameters that an
analytic solution (mostly meaning the equivalence to an exhaustive analytic solution (mostly meaning the equivalence to an exhaustive
search) is computationally not feasible. Here evolutional optimization search) is computationally not feasible. Here evolutionary optimization
has one more advantage as you can at least get a suboptimal solutions has one more advantage as you can at least get a suboptimal solutions
fast, which then refine over time. fast, which then refine over time.
@ -478,7 +478,7 @@ criterion--range to \([0..1]\), whereas \(1\) is the optimal value and
This criterion should be characteristic for numeric stability on the on This criterion should be characteristic for numeric stability on the on
hand\cite[chapter 2.7]{golub2012matrix} and for convergence speed of hand\cite[chapter 2.7]{golub2012matrix} and for convergence speed of
evolutional algorithms on the other hand\cite{anrichterEvol} as it is evolutionary algorithms on the other hand\cite{anrichterEvol} as it is
tied to the notion of tied to the notion of
locality\cite{weise2012evolutionary,thorhauer2014locality}. locality\cite{weise2012evolutionary,thorhauer2014locality}.
@ -617,7 +617,55 @@ With the Gauss--Newton algorithm we iterate via the formula
and use Cramers rule for inverting the small Jacobian and solving this and use Cramers rule for inverting the small Jacobian and solving this
system of linear equations. system of linear equations.
\section{Parametrisierung sinnvoll?}\label{parametrisierung-sinnvoll} \section{Deformation Grid}\label{deformation-grid}
As mentioned in chapter \ref{sec:back:evo}, the way of choosing the
representation to map the general problem (mesh--fitting/optimization in
our case) into a parameter-space it very important for the quality and
runtime of evolutionary algorithms\cite{Rothlauf2006}.
Because our control--points are arranged in a grid, we can accurately
represent each vertex--point inside the grids volume with proper
B--Spline--coefficients between \([0,1[\) and --- as a consequence ---
we have to embed our object into it (or create constant ``dummy''-points
outside).
The great advantage of B--Splines is the locality, direct impact of each
control point without having a \(1:1\)--correlation, and a smooth
deformation. While the advantages are great, the issues arise from the
problem to decide where to place the control--points and how many.
One would normally think, that the more control--points you add, the
better the result will be, but this is not the case for our B--Splines.
Given any point \(p\) only the \(2 \cdot (d-1)\) control--points
contribute to the parametrization of that point\footnote{Normally these
are \(d-1\) to each side, but at the boundaries the number gets
increased to the inside to meet the required smoothness}. This means,
that a high resolution can have many control-points that are not
contributing to any point on the surface and are thus completely
irrelevant to the solution.
\begin{figure}[!ht]
\begin{center}
\includegraphics{img/enoughCP.png}
\end{center}
\caption{A high resolution ($10 \times 10$) of control--points over a circle.
yellow/green points contribute to the parametrization, red points don't.\newline
An Example--point (blue) is solely determined by the position of the green
control--points.}
\label{fig:enoughCP}
\end{figure}
We illustrate this phenomenon in figure \ref{fig:enoughCP}, where the
central points are not relevant for the parametrization of the circle.
\unsure[inline]{erwähnen, dass man aus $\vec{D}$ einfach die Null--Spalten
entfernen kann?}
For our tests we chose different uniformly sized grids and added
gaussian noise onto each control-point\footnote{For the special case of
the outer layer we only applied noise away from the object} to
simulate different starting-conditions.
\begin{itemize} \begin{itemize}
\tightlist \tightlist