todays work

This commit is contained in:
Nicole Dresselhaus 2017-10-11 19:53:01 +02:00
parent 34fd8efaa8
commit fc0c67f538
Signed by: Drezil
GPG Key ID: 057D94F356F41E25
6 changed files with 618 additions and 86 deletions

View File

@ -59,7 +59,7 @@
\begin{center} \begin{center}
\begin{tabular}{lrl} \begin{tabular}{lrl}
\hspace{0.99cm} Supervisor:~&Prof.~Dr.~&Mario Botsch\\ \hspace{0.99cm} Supervisor:~&Prof.~Dr.~&Mario Botsch\\
\hspace{0.99cm} &Dipl.~Math.~&Alexander~Richter \hspace{0.99cm} &Dipl.~Math.~&Andreas~Richter
\end{tabular} \end{tabular}
\end{center} \end{center}
\vspace*{\stretch{.2}} \vspace*{\stretch{.2}}

BIN
arbeit/img/B-Splines.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

405
arbeit/img/B-Splines.svg Normal file
View File

@ -0,0 +1,405 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
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:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="117.30389mm"
height="66.311211mm"
viewBox="0 0 415.64372 234.96098"
id="svg2"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="B-Splines.svg">
<defs
id="defs4">
<linearGradient
inkscape:collect="always"
id="linearGradient6399">
<stop
style="stop-color:#ff0000;stop-opacity:1;"
offset="0"
id="stop6401" />
<stop
id="stop6407"
offset="0.55555558"
style="stop-color:#ffff00;stop-opacity:1" />
<stop
style="stop-color:#00ff00;stop-opacity:1"
offset="1"
id="stop6403" />
</linearGradient>
<linearGradient
id="linearGradient6329-9-7-3">
<stop
style="stop-color:#ff0000;stop-opacity:1;"
offset="0"
id="stop6377" />
</linearGradient>
<linearGradient
id="linearGradient6329-9-7">
<stop
id="stop6373"
offset="0"
style="stop-color:#ff0000;stop-opacity:1;" />
</linearGradient>
<linearGradient
id="linearGradient6329-9">
<stop
style="stop-color:#ff0000;stop-opacity:1;"
offset="0"
id="stop6367" />
</linearGradient>
<linearGradient
id="linearGradient6369">
<stop
id="stop6363"
offset="0"
style="stop-color:#ff0000;stop-opacity:1;" />
</linearGradient>
<linearGradient
id="linearGradient6347"
osb:paint="solid">
<stop
style="stop-color:#ff0000;stop-opacity:1;"
offset="0"
id="stop6349" />
</linearGradient>
<linearGradient
id="linearGradient6341"
osb:paint="solid">
<stop
style="stop-color:#000000;stop-opacity:1;"
offset="0"
id="stop6343" />
</linearGradient>
<linearGradient
id="linearGradient6335"
osb:paint="solid">
<stop
style="stop-color:#000000;stop-opacity:1;"
offset="0"
id="stop6337" />
</linearGradient>
<linearGradient
id="linearGradient6329">
<stop
style="stop-color:#ff0000;stop-opacity:1"
offset="0"
id="stop6331" />
</linearGradient>
<marker
inkscape:isstock="true"
style="overflow:visible"
id="marker4580"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow1Lend">
<path
transform="matrix(-0.8,0,0,-0.8,-10,0)"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
id="path4582"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:stockid="Arrow1Lend"
orient="auto"
refY="0"
refX="0"
id="marker4540"
style="overflow:visible"
inkscape:isstock="true"
inkscape:collect="always">
<path
id="path4542"
d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
style="fill:#cccccc;fill-opacity:1;fill-rule:evenodd;stroke:#cccccc;stroke-width:1pt;stroke-opacity:1"
transform="matrix(-0.8,0,0,-0.8,-10,0)"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:isstock="true"
style="overflow:visible"
id="marker4488"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow1Lend"
inkscape:collect="always">
<path
transform="matrix(-0.8,0,0,-0.8,-10,0)"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
id="path4490"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:stockid="Arrow1Lend"
orient="auto"
refY="0"
refX="0"
id="Arrow1Lend"
style="overflow:visible"
inkscape:isstock="true"
inkscape:collect="always">
<path
id="path4203"
d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
transform="matrix(-0.8,0,0,-0.8,-10,0)"
inkscape:connector-curvature="0" />
</marker>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient6399"
id="linearGradient6405"
x1="61.428577"
y1="576.29077"
x2="200.71428"
y2="576.29077"
gradientUnits="userSpaceOnUse" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient6399"
id="linearGradient6423"
x1="309.28772"
y1="576.29077"
x2="469.84653"
y2="576.29077"
gradientUnits="userSpaceOnUse" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="2.8"
inkscape:cx="176.80108"
inkscape:cy="131.06794"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:object-paths="false"
inkscape:snap-object-midpoints="true"
inkscape:snap-others="true"
inkscape:snap-nodes="true"
inkscape:snap-center="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(-57.714292,-393.25836)">
<path
style="fill:none;fill-rule:evenodd;stroke:url(#linearGradient6405);stroke-opacity:1"
d="m 61.428577,576.29077 139.285703,0"
id="path6389"
inkscape:connector-curvature="0" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 60.503738,433.4594 140.916282,0.12627"
id="path4136"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 309.28772,437.17931 c 31.66531,0 31.84405,-39.74202 47.72971,-26.51651 15.88566,13.22551 32.30661,71.10193 39.90102,37.37565 7.5944,-33.72628 14.51411,-41.77591 34.09265,-36.11296 19.57854,5.66295 14.2684,23.35978 38.82773,23.73859"
id="path4140"
inkscape:connector-curvature="0"
sodipodi:nodetypes="czzzc" />
<path
style="fill:none;fill-rule:evenodd;stroke:url(#linearGradient6423);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 309.28772,580.26322 c 31.66531,0 31.84405,-39.74202 47.72971,-26.51651 15.88566,13.22551 32.30661,71.10193 39.90102,37.37565 7.5944,-33.72628 14.51411,-41.77591 34.09265,-36.11296 19.57854,5.66295 14.2684,23.35978 38.82773,23.73859"
id="path4140-6"
inkscape:connector-curvature="0"
sodipodi:nodetypes="czzzc" />
<path
style="fill:#cccccc;fill-rule:evenodd;stroke:#cccccc;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker4540)"
d="m 233.03571,433.20686 50.71429,0"
id="path4160"
inkscape:connector-curvature="0" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1, 1;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#Arrow1Lend)"
d="m 130.96188,474.23721 0,56.7857"
id="path4162"
inkscape:connector-curvature="0" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1, 1;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker4488)"
d="m 389.56713,532.84294 0,-56.78571"
id="path4162-7"
inkscape:connector-curvature="0" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1, 1;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker4580)"
d="m 233.03571,576.29077 50.71429,0"
id="path4160-5"
inkscape:connector-curvature="0" />
<flowRoot
xml:space="preserve"
id="flowRoot4644"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
transform="translate(22.576306,-94.642857)"><flowRegion
id="flowRegion4646"><rect
id="rect4648"
width="66.785713"
height="51.785713"
x="226.07143"
y="477.71936" /></flowRegion><flowPara
id="flowPara4650">?</flowPara></flowRoot> <circle
style="opacity:1;fill:#c83737;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0"
id="path4670"
cx="61.428577"
cy="576.29077"
r="3.2142856" />
<circle
style="opacity:1;fill:#c83737;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0"
id="path4670-2"
cx="200.71428"
cy="576.29077"
r="3.2142856" />
<circle
style="opacity:1;fill:#c83737;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0"
id="path4670-9"
cx="310.02182"
cy="580.25604"
r="3.2142856" />
<circle
style="opacity:1;fill:#c83737;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0"
id="path4670-3-1"
cx="343.75003"
cy="580.57648"
r="3.2142856" />
<circle
style="opacity:1;fill:#c83737;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0"
id="path4670-5-2"
cx="340.71426"
cy="539.86218"
r="3.2142856" />
<circle
style="opacity:1;fill:#c83737;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0"
id="path4670-6-7"
cx="373.39285"
cy="565.93359"
r="3.2142856" />
<circle
style="opacity:1;fill:#c83737;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0"
id="path4670-2-0"
cx="469.64374"
cy="578.74463"
r="3.2142856" />
<circle
style="opacity:1;fill:#c83737;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0"
id="path4670-2-0-9"
cx="390.35715"
cy="624.50507"
r="3.2142856" />
<circle
style="opacity:1;fill:#c83737;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0"
id="path4670-2-0-3"
cx="404.28571"
cy="557.00507"
r="3.2142856" />
<circle
style="opacity:1;fill:#c83737;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0"
id="path4670-2-0-6"
cx="411.78571"
cy="549.14789"
r="3.2142856" />
<circle
style="opacity:1;fill:#c83737;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0"
id="path4670-2-0-0"
cx="451.42856"
cy="560.57648"
r="3.2142856" />
<circle
style="opacity:1;fill:#c83737;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0"
id="path4670-2-0-62"
cx="445.71429"
cy="577.71936"
r="3.2142856" />
<path
style="fill:none;fill-rule:evenodd;stroke:#d4aa00;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 309.8954,580.47189 33.92857,0.40046 -3.05584,-41.47189 32.41026,26.34935 16.85443,58.56399 14.58157,-66.80366 6.99493,-8.29351 34.09446,29.84463 5.7285,-18.26069 18.42722,18.36158"
id="path4771"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccccc" />
<circle
style="opacity:1;fill:#c83737;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0"
id="path4670-6"
cx="76.90477"
cy="576.29077"
r="3.2142856" />
<circle
style="opacity:1;fill:#c83737;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0"
id="path4670-1"
cx="92.380959"
cy="576.29077"
r="3.2142856" />
<circle
style="opacity:1;fill:#c83737;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0"
id="path4670-8"
cx="107.85715"
cy="576.29077"
r="3.2142856" />
<circle
style="opacity:1;fill:#c83737;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0"
id="path4670-7"
cx="123.33334"
cy="576.29077"
r="3.2142856" />
<circle
style="opacity:1;fill:#c83737;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0"
id="path4670-92"
cx="138.80952"
cy="576.29077"
r="3.2142856" />
<circle
style="opacity:1;fill:#c83737;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0"
id="path4670-0"
cx="154.28572"
cy="576.29077"
r="3.2142856" />
<circle
style="opacity:1;fill:#c83737;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0"
id="path4670-23"
cx="169.7619"
cy="576.29077"
r="3.2142856" />
<circle
style="opacity:1;fill:#c83737;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0"
id="path4670-75"
cx="185.2381"
cy="576.29077"
r="3.2142856" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 15 KiB

View File

@ -26,7 +26,7 @@ Unless otherwise noted the following holds:
\improvement[inline]{Mehr Bilder} \improvement[inline]{Mehr Bilder}
Many modern industrial design processes require advanced optimization methods Many modern industrial design processes require advanced optimization methods
do to the increased complexity. These designs have to adhere to more and more due to the increased complexity. These designs have to adhere to more and more
degrees of freedom as methods refine and/or other methods are used. Examples for degrees of freedom as methods refine and/or other methods are used. Examples for
this are physical domains like aerodynamic (i.e. drag), fluid dynamics (i.e. this are physical domains like aerodynamic (i.e. drag), fluid dynamics (i.e.
throughput of liquid) --- where the complexity increases with the temporal and throughput of liquid) --- where the complexity increases with the temporal and
@ -38,35 +38,54 @@ time or from case to case.
Evolutionary 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 *fitness--function*. While one can typically use an arbitrary
cost--function for the fitness--functions (i.e. amount of drag, amount of space, cost--function for the *fitness--functions* (i.e. amount of drag, amount of space,
etc.), the translation of the problem--domain into a simple parametric etc.), the translation of the problem--domain into a simple parametric
representation can be challenging. representation (the *genome*) can be challenging.
The quality of such a representation in biological evolution is called This translation is often necessary as the target of the optimization may have
*evolvability*\cite{wagner1996complex} and is at the core of this thesis, as the too many degrees of freedom. In the example of an aerodynamic simulation of drag
onto an object, those objects--designs tend to have a high number of vertices to
adhere to various requirements (visual, practical, physical, etc.). A simpler
representation of the same object in only a few parameters that manipulate the
whole in a sensible matter are desirable, as this often decreases the
computation time significantly.
Additionally one can exploit the fact, that drag in this case is especially
sensitive to non--smooth surfaces, so that a smooth local manipulation of the
surface as a whole is more advantageous than merely random manipulation of the
vertices.
The quality of such a low-dimensional representation in biological evolution is
strongly tied to the notion of *evolvability*\cite{wagner1996complex}, as the
parametrization of the problem has serious implications on the convergence speed parametrization of the problem has serious implications on the convergence speed
and the quality of the solution\cite{Rothlauf2006}. and the quality of the solution\cite{Rothlauf2006}.
However, there is no consensus on how *evolvability* is defined and the meaning However, there is no consensus on how *evolvability* is defined and the meaning
varies from context to context\cite{richter2015evolvability}. varies from context to context\cite{richter2015evolvability}, so there is need
for some criteria we can measure, so that we are able to compare different
representations to learn and improve upon these.
One example of such a general representation of an object is to generate random
points and represent vertices of an object as distances to these points --- for
example via \acf{RBF}. If one (or the algorithm) would move such a point the
object will get deformed locally (due to the \ac{RBF}). As this results in a
simple mapping from the parameter-space onto the object one can try out
different representations of the same object and evaluate the *evolvability*.
This is exactly what Richter et al.\cite{anrichterEvol} have done.
As we transfer the results of Richter et al.\cite{anrichterEvol} from using As we transfer the results of Richter et al.\cite{anrichterEvol} from using
\acf{RBF} as a representation to manipulate a geometric mesh to the use of \acf{RBF} as a representation to manipulate geometric objects to the use of
\acf{FFD} we will use the same definition for evolvability the original author \acf{FFD} we will use the same definition for evolvability the original author
used, namely *regularity*, *variability*, and *improvement potential*. We used, namely *regularity*, *variability*, and *improvement potential*. We
introduce these term in detail in Chapter \ref{sec:intro:rvi}. introduce these term in detail in Chapter \ref{sec:intro:rvi}. In the original
publication the author could show a correlation between these
evolvability--criteria with the quality and potential of such optimization.
In the original publication the author used random sampled points weighted with We will replicate the same setup on the same objects but use \acf{FFD} instead of
\acf{RBF} to deform the mesh and showed that the mentioned criteria of
*regularity*, *variability*, and *improvement potential* correlate with the quality
and potential of such optimization.
We will replicate the same setup on the same meshes but use \acf{FFD} instead of
\acf{RBF} to create a local deformation near the control points and evaluate if \acf{RBF} to create a local deformation near the control points and evaluate if
the evolution--criteria still work as a predictor given the different deformation the evolution--criteria still work as a predictor for *evolvability* of the
scheme, as suspected in \cite{anrichterEvol}. representation given the different deformation scheme, as suspected in
\cite{anrichterEvol}.
## Outline of this thesis
First we introduce different topics in isolation in Chapter \ref{sec:back}. We 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
@ -79,7 +98,7 @@ In a third step we take a look at the definition of the different evolvability
criteria established in \cite{anrichterEvol}. criteria established in \cite{anrichterEvol}.
In Chapter \ref{sec:impl} we take a look at our implementation of \ac{FFD} and In Chapter \ref{sec:impl} we take a look at our implementation of \ac{FFD} and
the adaptation for 3D--meshes. the adaptation for 3D--meshes that were used.
Next, in Chapter \ref{sec:eval}, we describe the different scenarios we use to Next, in Chapter \ref{sec:eval}, we describe the different scenarios we use to
evaluate the different evolvability--criteria incorporating all aspects evaluate the different evolvability--criteria incorporating all aspects
@ -94,13 +113,39 @@ Chapter \ref{sec:res} with further on discussion in Chapter \ref{sec:dis}.
\label{sec:back:ffd} \label{sec:back:ffd}
First of all we have to establish how a \ac{FFD} works and why this is a good First of all we have to establish how a \ac{FFD} works and why this is a good
tool for deforming meshes in the first place. For simplicity we only summarize tool for deforming geometric objects (esp. meshes in our case) in the first
the 1D--case from \cite{spitzmuller1996bezier} here and go into the extension to place. For simplicity we only summarize the 1D--case from
the 3D case in chapter \ref{3dffd}. \cite{spitzmuller1996bezier} here and go into the extension to the 3D case in
chapter \ref{3dffd}.
The main idea of \ac{FFD} is to create a function $s : [0,1[^d \mapsto
\mathbb{R}^d$ that spans a certain part of a vector--space and is only linearly
parametrized by some special control points $p_i$ and an constant
attribution--function $a_i(u)$, so
$$
s(u) = \sum_i a_i(u) p_i
$$
can be thought of a representation of the inside of the convex hull generated by
the control points where each point can be accessed by the right $u \in [0,1[$.
\begin{figure}[!ht]
\begin{center}
\includegraphics[width=0.7\textwidth]{img/B-Splines.png}
\end{center}
\caption[Example of B-Splines]{Example of a parametrization of a line with
corresponding deformation to generate a deformed objet}
\label{fig:bspline}
\end{figure}
In the example in figure \ref{fig:bspline}, the control--points are indicated as
red dots and the color-gradient should hint at the $u$--values ranging from
$0$ to $1$.
We now define a \acf{FFD} by the following:
Given an arbitrary number of points $p_i$ alongside a line, we map a scalar Given an arbitrary number of points $p_i$ alongside a line, we map a scalar
value $\tau_i \in [0,1[$ to each point with $\tau_i < \tau_{i+1} \forall i$. value $\tau_i \in [0,1[$ to each point with $\tau_i < \tau_{i+1} \forall i$
Given a degree of the target polynomial $d$ we define the curve according to the position of $p_i$ on said line.
Additionally, given a degree of the target polynomial $d$ we define the curve
$N_{i,d,\tau_i}(u)$ as follows: $N_{i,d,\tau_i}(u)$ as follows:
\begin{equation} \label{eqn:ffd1d1} \begin{equation} \label{eqn:ffd1d1}
@ -114,7 +159,7 @@ N_{i,d,\tau}(u) = \frac{u-\tau_i}{\tau_{i+d}} N_{i,d-1,\tau}(u) + \frac{\tau_{i+
If we now multiply every $p_i$ with the corresponding $N_{i,d,\tau_i}(u)$ we get If we now multiply every $p_i$ with the corresponding $N_{i,d,\tau_i}(u)$ we get
the contribution of each point $p_i$ to the final curve--point parameterized only the contribution of each point $p_i$ to the final curve--point parameterized only
by $u \in [0,1[$. As can be seen from \eqref{eqn:ffd1d2} we only access points by $u \in [0,1[$. As can be seen from \eqref{eqn:ffd1d2} we only access points
$[i..i+d]$ for any given $i$^[one more for each recursive step.], which gives $[p_i..p_{i+d}]$ for any given $i$^[one more for each recursive step.], which gives
us, in combination with choosing $p_i$ and $\tau_i$ in order, only a local us, in combination with choosing $p_i$ and $\tau_i$ in order, only a local
interference of $d+1$ points. interference of $d+1$ points.
@ -130,10 +175,28 @@ $$s(u) = \sum_{i} N_{i,d,\tau_i}(u) p_i$$
these derivations yield $\frac{\partial^d}{\partial u} s(u) = 0$. these derivations yield $\frac{\partial^d}{\partial u} s(u) = 0$.
Another interesting property of these recursive polynomials is that they are Another interesting property of these recursive polynomials is that they are
continuous (given $d \ge 1$) as every $p_i$ gets blended in linearly between continuous (given $d \ge 1$) as every $p_i$ gets blended in between $\tau_i$ and
$\tau_i$ and $\tau_{i+d}$ and out linearly between $\tau_{i+1}$ and $\tau_{i+d}$ and out between $\tau_{i+1}$, and $\tau_{i+d+1}$ as can bee seen from the two coefficients
$\tau_{i+d+1}$ as can bee seen from the two coefficients in every step of the in every step of the recursion.
recursion.
\improvement[inline]{Weitere Eigenschaften erwähnen:
\newline Convex hull
\newline $\sum_i N_i = 1$?
\newline Bilder von Basisfunktionen zur Visualisierung.
}
For a given number of points $v_1,\dots,v_n$ we can then calculate
the contributions $n_{i,j}~:=~N_{j,d,\tau}$ of each control point $p_j$ to get the
projection from the control--point--space into the object--space:
$$
v_i = \sum_j n_{i,j} \cdot p_j = \vec{n}_i^{T} \vec{p}
$$
or written for all points at the same time:
$$
\vec{v} = \vec{N} \vec{p}
$$
where $\vec{N}$ is the $n \times m$ transformation--matrix (later on called
**deformation matrix**) for $n$ object--space--points and $m$ control--points.
### Why is \ac{FFD} a good deformation function? ### Why is \ac{FFD} a good deformation function?
\label{sec:back:ffdgood} \label{sec:back:ffdgood}
@ -202,7 +265,7 @@ The general shape of an evolutionary algorithm (adapted from
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
we are looking for. Typically these are initialized by a random guess or just we are looking for. Typically these are initialized by a random guess or just
zero. Further on we need a so--called *fitness--function* $\Phi : I \mapsto M$ that can take zero. Further on we need a so--called *fitness--function* $\Phi : I \mapsto M$\improvement{Was ist $I,M$?\newline Bezug Genotyp/Phenotyp} that can take
each parameter to a measurable space along a convergence--function $c : I \mapsto each parameter to a measurable space along a convergence--function $c : I \mapsto
\mathbb{B}$ that terminates the optimization. \mathbb{B}$ that terminates the optimization.
@ -263,16 +326,20 @@ 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 evolutionary 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 suboptimal solutions fast, which then refine over time.
## Criteria for the evolvability of linear deformations ## Criteria for the evolvability of linear deformations
\label{sec:intro:rvi} \label{sec:intro:rvi}
\improvement[inline]{Nomenklatur. Was ist $\vec{U}$? Kurz Matrix--Darstellung
des Problems & Rückgriff auf FFD-Kapitel.}
### Variability ### Variability
In \cite{anrichterEvol} *variability* is defined as In \cite{anrichterEvol} *variability* is defined as
$$V(\vec{U}) := \frac{\textrm{rank}(\vec{U})}{n},$$ $$V(\vec{U}) := \frac{\textrm{rank}(\vec{U})}{n},$$
whereby $\vec{U}$ is the $m \times n$ deformation--Matrix used to map the $m$ whereby $\vec{U}$ is the $n \times m$ deformation--Matrix \unsure{Nicht $(n\cdot d) \times m$? Wegen $u,v,w$?} used to map the $m$
control points onto the $n$ vertices. control points onto the $n$ vertices.
Given $n = m$, an identical number of control--points and vertices, this Given $n = m$, an identical number of control--points and vertices, this
@ -282,10 +349,6 @@ the solution is to trivially move every control--point onto a target--point.
In praxis the value of $V(\vec{U})$ is typically $\ll 1$, because as In praxis the value of $V(\vec{U})$ is typically $\ll 1$, because as
there are only few control--points for many vertices, so $m \ll n$. there are only few control--points for many vertices, so $m \ll n$.
Additionally in our setup we connect neighbouring control--points in a grid so
each control point is not independent, but typically depends on $4^d$
control--points for an $d$--dimensional control mesh.
### Regularity ### Regularity
*Regularity* is defined\cite{anrichterEvol} as *Regularity* is defined\cite{anrichterEvol} as

Binary file not shown.

View File

@ -169,7 +169,7 @@ Unless otherwise noted the following holds:
\improvement[inline]{Mehr Bilder} \improvement[inline]{Mehr Bilder}
Many modern industrial design processes require advanced optimization Many modern industrial design processes require advanced optimization
methods do to the increased complexity. These designs have to adhere to methods due to the increased complexity. These designs have to adhere to
more and more degrees of freedom as methods refine and/or other methods more and more degrees of freedom as methods refine and/or other methods
are used. Examples for this are physical domains like aerodynamic are used. Examples for this are physical domains like aerodynamic
(i.e.~drag), fluid dynamics (i.e.~throughput of liquid) --- where the (i.e.~drag), fluid dynamics (i.e.~throughput of liquid) --- where the
@ -182,39 +182,59 @@ time or from case to case.
Evolutionary 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 \emph{genome} and \emph{fitness--function}. While one can
an arbitrary cost--function for the fitness--functions (i.e.~amount of typically use an arbitrary cost--function for the
drag, amount of space, etc.), the translation of the problem--domain \emph{fitness--functions} (i.e.~amount of drag, amount of space, etc.),
into a simple parametric representation can be challenging. the translation of the problem--domain into a simple parametric
representation (the \emph{genome}) can be challenging.
The quality of such a representation in biological evolution is called This translation is often necessary as the target of the optimization
\emph{evolvability}\cite{wagner1996complex} and is at the core of this may have too many degrees of freedom. In the example of an aerodynamic
thesis, as the parametrization of the problem has serious implications simulation of drag onto an object, those objects--designs tend to have a
on the convergence speed and the quality of the high number of vertices to adhere to various requirements (visual,
solution\cite{Rothlauf2006}. However, there is no consensus on how practical, physical, etc.). A simpler representation of the same object
\emph{evolvability} is defined and the meaning varies from context to in only a few parameters that manipulate the whole in a sensible matter
context\cite{richter2015evolvability}. are desirable, as this often decreases the computation time
significantly.
Additionally one can exploit the fact, that drag in this case is
especially sensitive to non--smooth surfaces, so that a smooth local
manipulation of the surface as a whole is more advantageous than merely
random manipulation of the vertices.
The quality of such a low-dimensional representation in biological
evolution is strongly tied to the notion of
\emph{evolvability}\cite{wagner1996complex}, as the parametrization of
the problem has serious implications on the convergence speed and the
quality of the solution\cite{Rothlauf2006}. However, there is no
consensus on how \emph{evolvability} is defined and the meaning varies
from context to context\cite{richter2015evolvability}, so there is need
for some criteria we can measure, so that we are able to compare
different representations to learn and improve upon these.
One example of such a general representation of an object is to generate
random points and represent vertices of an object as distances to these
points --- for example via \acf{RBF}. If one (or the algorithm) would
move such a point the object will get deformed locally (due to the
\ac{RBF}). As this results in a simple mapping from the parameter-space
onto the object one can try out different representations of the same
object and evaluate the \emph{evolvability}. This is exactly what
Richter et al.\cite{anrichterEvol} have done.
As we transfer the results of Richter et al.\cite{anrichterEvol} from As we transfer the results of Richter et al.\cite{anrichterEvol} from
using \acf{RBF} as a representation to manipulate a geometric mesh to using \acf{RBF} as a representation to manipulate geometric objects to
the use of \acf{FFD} we will use the same definition for evolvability the use of \acf{FFD} we will use the same definition for evolvability
the original author used, namely \emph{regularity}, \emph{variability}, the original author used, namely \emph{regularity}, \emph{variability},
and \emph{improvement potential}. We introduce these term in detail in and \emph{improvement potential}. We introduce these term in detail in
Chapter \ref{sec:intro:rvi}. Chapter \ref{sec:intro:rvi}. In the original publication the author
could show a correlation between these evolvability--criteria with the
quality and potential of such optimization.
In the original publication the author used random sampled points We will replicate the same setup on the same objects but use \acf{FFD}
weighted with \acf{RBF} to deform the mesh and showed that the mentioned
criteria of \emph{regularity}, \emph{variability}, and \emph{improvement
potential} correlate with the quality and potential of such
optimization.
We will replicate the same setup on the same meshes but use \acf{FFD}
instead of \acf{RBF} to create a local deformation near the control instead of \acf{RBF} to create a local deformation near the control
points and evaluate if the evolution--criteria still work as a predictor points and evaluate if the evolution--criteria still work as a predictor
given the different deformation scheme, as suspected in for \emph{evolvability} of the representation given the different
\cite{anrichterEvol}. deformation scheme, as suspected in \cite{anrichterEvol}.
\section{Outline of this thesis}\label{outline-of-this-thesis}
First we introduce different topics in isolation in Chapter 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}
@ -227,7 +247,7 @@ definition of the different evolvability criteria established in
\cite{anrichterEvol}. \cite{anrichterEvol}.
In Chapter \ref{sec:impl} we take a look at our implementation of In Chapter \ref{sec:impl} we take a look at our implementation of
\ac{FFD} and the adaptation for 3D--meshes. \ac{FFD} and the adaptation for 3D--meshes that were used.
Next, in Chapter \ref{sec:eval}, we describe the different scenarios we Next, in Chapter \ref{sec:eval}, we describe the different scenarios we
use to evaluate the different evolvability--criteria incorporating all use to evaluate the different evolvability--criteria incorporating all
@ -244,14 +264,39 @@ in Chapter \ref{sec:dis}.
\label{sec:back:ffd} \label{sec:back:ffd}
First of all we have to establish how a \ac{FFD} works and why this is a First of all we have to establish how a \ac{FFD} works and why this is a
good tool for deforming meshes in the first place. For simplicity we good tool for deforming geometric objects (esp. meshes in our case) in
only summarize the 1D--case from \cite{spitzmuller1996bezier} here and the first place. For simplicity we only summarize the 1D--case from
go into the extension to the 3D case in chapter \ref{3dffd}. \cite{spitzmuller1996bezier} here and go into the extension to the 3D
case in chapter~\ref{3dffd}.
The main idea of \ac{FFD} is to create a function
\(s : [0,1[^d \mapsto \mathbb{R}^d\) that spans a certain part of a
vector--space and is only linearly parametrized by some special control
points \(p_i\) and an constant attribution--function \(a_i(u)\), so \[
s(u) = \sum_i a_i(u) p_i
\] can be thought of a representation of the inside of the convex hull
generated by the control points where each point can be accessed by the
right \(u \in [0,1[\).
\begin{figure}[!ht]
\begin{center}
\includegraphics[width=0.7\textwidth]{img/B-Splines.png}
\end{center}
\caption[Example of B-Splines]{Example of a parametrization of a line with
corresponding deformation to generate a deformed objet}
\label{fig:bspline}
\end{figure}
In the example in figure~\ref{fig:bspline}, the control--points are
indicated as red dots and the color-gradient should hint at the
\(u\)--values ranging from \(0\) to \(1\).
We now define a \acf{FFD} by the following:\\
Given an arbitrary number of points \(p_i\) alongside a line, we map a Given an arbitrary number of points \(p_i\) alongside a line, we map a
scalar value \(\tau_i \in [0,1[\) to each point with scalar value \(\tau_i \in [0,1[\) to each point with
\(\tau_i < \tau_{i+1} \forall i\). Given a degree of the target \(\tau_i < \tau_{i+1} \forall i\) according to the position of \(p_i\)
polynomial \(d\) we define the curve \(N_{i,d,\tau_i}(u)\) as follows: on said line. Additionally, given a degree of the target polynomial
\(d\) we define the curve \(N_{i,d,\tau_i}(u)\) as follows:
\begin{equation} \label{eqn:ffd1d1} \begin{equation} \label{eqn:ffd1d1}
N_{i,0,\tau}(u) = \begin{cases} 1, & u \in [\tau_i, \tau_{i+1}[ \\ 0, & \mbox{otherwise} \end{cases} N_{i,0,\tau}(u) = \begin{cases} 1, & u \in [\tau_i, \tau_{i+1}[ \\ 0, & \mbox{otherwise} \end{cases}
@ -266,10 +311,10 @@ N_{i,d,\tau}(u) = \frac{u-\tau_i}{\tau_{i+d}} N_{i,d-1,\tau}(u) + \frac{\tau_{i+
If we now multiply every \(p_i\) with the corresponding If we now multiply every \(p_i\) with the corresponding
\(N_{i,d,\tau_i}(u)\) we get the contribution of each point \(p_i\) to \(N_{i,d,\tau_i}(u)\) we get the contribution of each point \(p_i\) to
the final curve--point parameterized only by \(u \in [0,1[\). As can be the final curve--point parameterized only by \(u \in [0,1[\). As can be
seen from \eqref{eqn:ffd1d2} we only access points \([i..i+d]\) for any seen from \eqref{eqn:ffd1d2} we only access points \([p_i..p_{i+d}]\)
given \(i\)\footnote{one more for each recursive step.}, which gives us, for any given \(i\)\footnote{one more for each recursive step.}, which
in combination with choosing \(p_i\) and \(\tau_i\) in order, only a gives us, in combination with choosing \(p_i\) and \(\tau_i\) in order,
local interference of \(d+1\) points. only a local interference of \(d+1\) points.
We can even derive this equation straightforward for an arbitrary We can even derive this equation straightforward for an arbitrary
\(N\)\footnote{\emph{Warning:} in the case of \(d=1\) the \(N\)\footnote{\emph{Warning:} in the case of \(d=1\) the
@ -283,9 +328,26 @@ derivations yield \(\frac{\partial^d}{\partial u} s(u) = 0\).
Another interesting property of these recursive polynomials is that they Another interesting property of these recursive polynomials is that they
are continuous (given \(d \ge 1\)) as every \(p_i\) gets blended in are continuous (given \(d \ge 1\)) as every \(p_i\) gets blended in
linearly between \(\tau_i\) and \(\tau_{i+d}\) and out linearly between between \(\tau_i\) and \(\tau_{i+d}\) and out between \(\tau_{i+1}\),
\(\tau_{i+1}\) and \(\tau_{i+d+1}\) as can bee seen from the two and \(\tau_{i+d+1}\) as can bee seen from the two coefficients in every
coefficients in every step of the recursion. step of the recursion.
\improvement[inline]{Weitere Eigenschaften erwähnen:
\newline Convex hull
\newline $\sum_i N_i = 1$?
\newline Bilder von Basisfunktionen zur Visualisierung.
}
For a given number of points \(v_1,\dots,v_n\) we can then calculate the
contributions \(n_{i,j}~:=~N_{j,d,\tau}\) of each control point \(p_j\)
to get the projection from the control--point--space into the
object--space: \[
v_i = \sum_j n_{i,j} \cdot p_j = \vec{n}_i^{T} \vec{p}
\] or written for all points at the same time: \[
\vec{v} = \vec{N} \vec{p}
\] where \(\vec{N}\) is the \(n \times m\) transformation--matrix (later
on called \textbf{deformation matrix}) for \(n\) object--space--points
and \(m\) control--points.
\subsection{\texorpdfstring{Why is \ac{FFD} a good deformation \subsection{\texorpdfstring{Why is \ac{FFD} a good deformation
function?}{Why is a good deformation function?}}\label{why-is-a-good-deformation-function} function?}{Why is a good deformation function?}}\label{why-is-a-good-deformation-function}
@ -361,9 +423,11 @@ The general shape of an evolutionary algorithm (adapted from
algorithm. The population contains \(\mu\) individuals \(a_i\) that fit algorithm. The population contains \(\mu\) individuals \(a_i\) that fit
the shape of the parameters we are looking for. Typically these are the shape of the parameters we are looking for. Typically these are
initialized by a random guess or just zero. Further on we need a initialized by a random guess or just zero. Further on we need a
so--called \emph{fitness--function} \(\Phi : I \mapsto M\) that can take so--called \emph{fitness--function}
each parameter to a measurable space along a convergence--function \(\Phi : I \mapsto M\)\improvement{Was ist $I,M$?\newline Bezug Genotyp/Phenotyp}
\(c : I \mapsto \mathbb{B}\) that terminates the optimization. that can take each parameter to a measurable space along a
convergence--function \(c : I \mapsto \mathbb{B}\) that terminates the
optimization.
The main algorithm just repeats the following steps: The main algorithm just repeats the following steps:
@ -435,7 +499,7 @@ 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 evolutionary 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 suboptimal solutions
fast, which then refine over time. fast, which then refine over time.
\section{Criteria for the evolvability of linear \section{Criteria for the evolvability of linear
@ -443,12 +507,16 @@ deformations}\label{criteria-for-the-evolvability-of-linear-deformations}
\label{sec:intro:rvi} \label{sec:intro:rvi}
\improvement[inline]{Nomenklatur. Was ist $\vec{U}$? Kurz Matrix--Darstellung
des Problems & Rückgriff auf FFD-Kapitel.}
\subsection{Variability}\label{variability} \subsection{Variability}\label{variability}
In \cite{anrichterEvol} \emph{variability} is defined as In \cite{anrichterEvol} \emph{variability} is defined as
\[V(\vec{U}) := \frac{\textrm{rank}(\vec{U})}{n},\] whereby \(\vec{U}\) \[V(\vec{U}) := \frac{\textrm{rank}(\vec{U})}{n},\] whereby \(\vec{U}\)
is the \(m \times n\) deformation--Matrix used to map the \(m\) control is the \(n \times m\) deformation--Matrix
points onto the \(n\) vertices. \unsure{Nicht $(n\cdot d) \times m$? Wegen $u,v,w$?} used to map the
\(m\) control points onto the \(n\) vertices.
Given \(n = m\), an identical number of control--points and vertices, Given \(n = m\), an identical number of control--points and vertices,
this quotient will be \(=1\) if all control points are independent of this quotient will be \(=1\) if all control points are independent of
@ -458,10 +526,6 @@ onto a target--point.
In praxis the value of \(V(\vec{U})\) is typically \(\ll 1\), because as In praxis the value of \(V(\vec{U})\) is typically \(\ll 1\), because as
there are only few control--points for many vertices, so \(m \ll n\). there are only few control--points for many vertices, so \(m \ll n\).
Additionally in our setup we connect neighbouring control--points in a
grid so each control point is not independent, but typically depends on
\(4^d\) control--points for an \(d\)--dimensional control mesh.
\subsection{Regularity}\label{regularity} \subsection{Regularity}\label{regularity}
\emph{Regularity} is defined\cite{anrichterEvol} as \emph{Regularity} is defined\cite{anrichterEvol} as