added appended image for 3d

This commit is contained in:
Nicole Dresselhaus 2017-10-08 23:29:45 +02:00
parent 5b2abd2fa5
commit da01bd0e35
Signed by: Drezil
GPG Key ID: 057D94F356F41E25
6 changed files with 197 additions and 184 deletions

View File

@ -10,10 +10,10 @@ chapter.
Unless otherwise noted the following holds: Unless otherwise noted the following holds:
- lowercase letters $x,y,z$ - lowercase letters $x,y,z$
refer to real variables and represent a point in 3D-Space. refer to real variables and represent a point in 3D--Space.
- lowercase letters $u,v,w$ - lowercase letters $u,v,w$
refer to real variables between $0$ and $1$ used as coefficients in a 3D refer to real variables between $0$ and $1$ used as coefficients in a 3D
B-Spline grid. B--Spline grid.
- other lowercase letters - other lowercase letters
refer to other scalar (real) variables. refer to other scalar (real) variables.
- lowercase **bold** letters (e.g. $\vec{x},\vec{y}$) - lowercase **bold** letters (e.g. $\vec{x},\vec{y}$)
@ -29,9 +29,9 @@ Many modern industrial design processes require advanced optimization methods
do to the increased complexity. These designs have to adhere to more and more do 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
spatial resolution of the simulation -- or known hard algorithmic problems in spatial resolution of the simulation --- or known hard algorithmic problems in
informatics (i.e. layouting of circuit boards or stacking of 3D-objects). 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.
@ -39,8 +39,8 @@ Evolutional 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
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 can be challenging.
The quality of such a representation in biological evolution is called The quality of such a representation in biological evolution is called
@ -61,26 +61,26 @@ and potential of such optimization.
We will replicate the same setup on the same meshes but use \acf{FFD} instead of 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 given the different deformation
scheme, as suspected in \cite{anrichterEvol}. scheme, as suspected in \cite{anrichterEvol}.
## Outline of this thesis ## 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
(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 evolutional 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
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.
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
introduced in Chapter \ref{sec:back}. Following that, we evaluate the results in introduced in Chapter \ref{sec:back}. Following that, we evaluate the results in
Chapter \ref{sec:res} with further on discussion in Chapter \ref{sec:dis}. Chapter \ref{sec:res} with further on discussion in Chapter \ref{sec:dis}.
@ -93,7 +93,7 @@ Chapter \ref{sec:res} with further on discussion in Chapter \ref{sec:dis}.
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 meshes in the first place. For simplicity we only summarize
the 1D-case from \cite{spitzmuller1996bezier} here and go into the extension to the 1D--case from \cite{spitzmuller1996bezier} here and go into the extension to
the 3D case in chapter \ref{3dffd}. the 3D case in chapter \ref{3dffd}.
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
@ -110,20 +110,20 @@ N_{i,d,\tau}(u) = \frac{u-\tau_i}{\tau_{i+d}} N_{i,d-1,\tau}(u) + \frac{\tau_{i+
\end{equation} \end{equation}
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 $[i..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.
We can even derive this equation straightforward for an arbitrary We can even derive this equation straightforward for an arbitrary
$N$^[*Warning:* in the case of $d=1$ the recursion-formula yields a $0$ $N$^[*Warning:* in the case of $d=1$ the recursion--formula yields a $0$
denominator, but $N$ is also $0$. The right solution for this case is a denominator, but $N$ is also $0$. The right solution for this case is a
derivative of $0$]: derivative of $0$]:
$$\frac{\partial}{\partial u} N_{i,d,r}(u) = \frac{d}{\tau_{i+d} - \tau_i} N_{i,d-1,\tau}(u) - \frac{d}{\tau_{i+d+1} - \tau_{i+1}} N_{i+1,d-1,\tau}(u)$$ $$\frac{\partial}{\partial u} N_{i,d,r}(u) = \frac{d}{\tau_{i+d} - \tau_i} N_{i,d-1,\tau}(u) - \frac{d}{\tau_{i+d+1} - \tau_{i+1}} N_{i+1,d-1,\tau}(u)$$
For a B-Spline For a B--Spline
$$s(u) = \sum_{i} N_{i,d,\tau_i}(u) p_i$$ $$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$.
@ -138,7 +138,7 @@ recursion.
The usage of \ac{FFD} as a tool for manipulating follows directly from the The usage of \ac{FFD} as a tool for manipulating follows directly from the
properties of the polynomials and the correspondence to the control points. properties of the polynomials and the correspondence to the control points.
Having only a few control points gives the user a nicer high-level-interface, as Having only a few control points gives the user a nicer high--level--interface, as
she only needs to move these points and the model follows in an intuitive she only needs to move these points and the model follows in an intuitive
manner. The deformation is smooth as the underlying polygon is smooth as well manner. The deformation is smooth as the underlying polygon is smooth as well
and affects as many vertices of the model as needed. Moreover the changes are and affects as many vertices of the model as needed. Moreover the changes are
@ -150,11 +150,11 @@ plateau can be difficult to
achieve\cite[chapter~3.2]{hsu1991dmffd}\cite{hsu1992direct}. achieve\cite[chapter~3.2]{hsu1991dmffd}\cite{hsu1992direct}.
This disadvantages led to the formulation of This disadvantages led to the formulation of
\acf{DM-FFD}\cite[chapter~3.3]{hsu1991dmffd} in which the user directly \acf{DM--FFD}\cite[chapter~3.3]{hsu1991dmffd} in which the user directly
interacts with the surface-mesh. All interactions will be applied interacts with the surface--mesh. All interactions will be applied
proportionally to the control-points that make up the parametrization of the proportionally to the control--points that make up the parametrization of the
interaction-point itself yielding a smooth deformation of the surface *at* the interaction--point itself yielding a smooth deformation of the surface *at* the
surface without seemingly arbitrary scattered control-points. Moreover this surface without seemingly arbitrary scattered control--points. Moreover this
increases the efficiency of an evolutionary optimization\cite{Menzel2006}, which increases the efficiency of an evolutionary optimization\cite{Menzel2006}, which
we will use later on. we will use later on.
@ -168,7 +168,7 @@ But this approach also has downsides as can be seen in figure
\ref{fig:hsu_fig7}, as the tessellation of the invisible grid has a major impact \ref{fig:hsu_fig7}, as the tessellation of the invisible grid has a major impact
on the deformation itself. 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 evolutional optimization?
@ -181,12 +181,12 @@ mesh albeit the downsides.
\change[inline]{Needs citations} \change[inline]{Needs citations}
The main advantage of evolutional algorithms is the ability to find optima of The main advantage of evolutional algorithms is the ability to find optima of
general functions just with the help of a given error-function (or general functions just with the help of a given error--function (or
fitness-function in this domain). This avoids the general pitfalls of fitness--function in this domain). This avoids the general pitfalls of
gradient-based procedures, which often target the same error-function as an gradient--based procedures, which often target the same error--function as an
evolutional algorithm, but can get stuck in local optima. evolutional algorithm, but can get stuck in local optima.
This is mostly due to the fact that a gradient-based procedure has only one This is mostly due to the fact that a gradient--based procedure has only one
point of observation from where it evaluates the next steps, whereas an point of observation from where it evaluates the next steps, whereas an
evolutional strategy starts with a population of guessed solutions. Because an evolutional strategy starts with a population of guessed solutions. Because an
evolutional strategy modifies the solution randomly, keeps the best solutions evolutional strategy modifies the solution randomly, keeps the best solutions
@ -194,7 +194,7 @@ 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 (i.e. because the error-function is convex) If an analytic best solution exists (i.e. because the error--function is convex)
an evolutional algorithm is not the right choice. Although both converge to the an evolutional algorithm is not the right choice. Although both converge to the
same solution, the analytic one is usually faster. But in reality many problems same solution, the analytic one is usually faster. But in reality many problems
have no analytic solution, because the problem is not convex. Here evolutional have no analytic solution, because the problem is not convex. Here evolutional
@ -208,31 +208,31 @@ over time.
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 $m \times n$ deformation--Matrix 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
quotient will be $=1$ if all control points are independent of each other and quotient will be $=1$ if all control points are independent of each other and
the solution is to trivially move every control-point onto a target-point. 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 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$ each control point is not independent, but typically depends on $4^d$
control-points for an $d$-dimensional control mesh. control--points for an $d$--dimensional control mesh.
### Regularity ### Regularity
*Regularity* is defined\cite{anrichterEvol} as *Regularity* is defined\cite{anrichterEvol} as
$$R(\vec{U}) := \frac{1}{\kappa(\vec{U})} = \frac{\sigma_{min}}{\sigma_{max}}$$ $$R(\vec{U}) := \frac{1}{\kappa(\vec{U})} = \frac{\sigma_{min}}{\sigma_{max}}$$
where $\sigma_{min}$ and $\sigma_{max}$ are the smallest and greatest right singular where $\sigma_{min}$ and $\sigma_{max}$ are the smallest and greatest right singular
value of the deformation-matrix $\vec{U}$. value of the deformation--matrix $\vec{U}$.
As we deform the given Object only based on the parameters as $\vec{p} \mapsto As we deform the given Object only based on the parameters as $\vec{p} \mapsto
f(\vec{x} + \vec{U}\vec{p})$ this makes sure that $\|\vec{Up}\| \propto f(\vec{x} + \vec{U}\vec{p})$ this makes sure that $\|\vec{Up}\| \propto
\|\vec{p}\|$ when $\kappa(\vec{U}) \approx 1$. The inversion of $\kappa(\vec{U})$ \|\vec{p}\|$ when $\kappa(\vec{U}) \approx 1$. The inversion of $\kappa(\vec{U})$
is only performed to map the criterion-range to $[0..1]$, whereas $1$ is the 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
@ -243,7 +243,7 @@ locality\cite{weise2012evolutionary,thorhauer2014locality}.
### Improvement Potential ### Improvement Potential
In contrast to the general nature of *variability* and *regularity*, which are In contrast to the general nature of *variability* and *regularity*, which are
agnostic of the fitness-function at hand the third criterion should reflect a agnostic of the fitness--function at hand the third criterion should reflect a
notion of potential. notion of potential.
As during optimization some kind of gradient $g$ is available to suggest a As during optimization some kind of gradient $g$ is available to suggest a
@ -254,20 +254,20 @@ The definition for an *improvement potential* $P$ is\cite{anrichterEvol}:
$$ $$
P(\vec{U}) := 1 - \|(\vec{1} - \vec{UU}^+)\vec(G)\|^2_F P(\vec{U}) := 1 - \|(\vec{1} - \vec{UU}^+)\vec(G)\|^2_F
$$ $$
given some approximate $n \times d$ fitness-gradient $\vec{G}$, normalized to given some approximate $n \times d$ fitness--gradient $\vec{G}$, normalized to
$\|\vec{G}\|_F = 1$, whereby $\|\cdot\|_F$ denotes the Frobenius-Norm. $\|\vec{G}\|_F = 1$, whereby $\|\cdot\|_F$ denotes the Frobenius--Norm.
# Implementation of \acf{FFD} # Implementation of \acf{FFD}
\label{sec:impl} \label{sec:impl}
The general formulation of B-Splines has two free parameters $d$ and $\tau$ The general formulation of B--Splines has two free parameters $d$ and $\tau$
which must be chosen beforehand. which must be chosen beforehand.
As we usually work with regular grids in our \ac{FFD} we define $\tau$ As we usually work with regular grids in our \ac{FFD} we define $\tau$
statically as $\tau_i = \nicefrac{i}{n}$ whereby $n$ is the number of statically as $\tau_i = \nicefrac{i}{n}$ whereby $n$ is the number of
control-points in that direction. control--points in that direction.
$d$ defines the *degree* of the B-Spline-Function (the number of times this $d$ defines the *degree* of the B--Spline--Function (the number of times this
function is differentiable) and for our purposes we fix $d$ to $3$, but give the function is differentiable) and for our purposes we fix $d$ to $3$, but give the
formulas for the general case so it can be adapted quite freely. formulas for the general case so it can be adapted quite freely.
@ -275,21 +275,21 @@ formulas for the general case so it can be adapted quite freely.
## Adaption of \ac{FFD} ## Adaption of \ac{FFD}
As we have established in Chapter \ref{sec:back:ffd} we can define an As we have established in Chapter \ref{sec:back:ffd} we can define an
\ac{FFD}-displacement as \ac{FFD}--displacement as
\begin{equation} \begin{equation}
\Delta_x(u) = \sum_i N_{i,d,\tau_i}(u) \Delta_x c_i \Delta_x(u) = \sum_i N_{i,d,\tau_i}(u) \Delta_x c_i
\end{equation} \end{equation}
Note that we only sum up the $\Delta$-displacements in the control points $c_i$ to get Note that we only sum up the $\Delta$--displacements in the control points $c_i$ to get
the change in position of the point we are interested in. the change in position of the point we are interested in.
In this way every deformed vertex is defined by In this way every deformed vertex is defined by
$$ $$
\textrm{Deform}(v_x) = v_x + \Delta_x(u) \textrm{Deform}(v_x) = v_x + \Delta_x(u)
$$ $$
with $u \in [0..1[$ being the variable that connects the high-detailed with $u \in [0..1[$ being the variable that connects the high--detailed
vertex-mesh to the low-detailed control-grid. To actually calculate the new vertex--mesh to the low--detailed control--grid. To actually calculate the new
position of the vertex we first have to calculate the $u$-value for each position of the vertex we first have to calculate the $u$--value for each
vertex. This is achieved by finding out the parametrization of $v$ in terms of vertex. This is achieved by finding out the parametrization of $v$ in terms of
$c_i$ $c_i$
$$ $$
@ -299,35 +299,36 @@ so we can minimize the error between those two:
$$ $$
\underset{u}{\argmin}\,Err(u,v_x) = \underset{u}{\argmin}\,2 \cdot \|v_x - \sum_i N_{i,d,\tau_i}(u) c_i\|^2_2 \underset{u}{\argmin}\,Err(u,v_x) = \underset{u}{\argmin}\,2 \cdot \|v_x - \sum_i N_{i,d,\tau_i}(u) c_i\|^2_2
$$ $$
As this error--term is quadratic we just derive by $u$ yielding
$$
\begin{array}{rl}
\frac{\partial}{\partial u} & v_x - \sum_i N_{i,d,\tau_i}(u) c_i \\
= & - \sum_i \left( \frac{d}{\tau_{i+d} - \tau_i} N_{i,d-1,\tau}(u) - \frac{d}{\tau_{i+d+1} - \tau_{i+1}} N_{i+1,d-1,\tau}(u) \right) c_i
\end{array}
$$
and do a gradient--descend to approximate the value of $u$ up to an $\epsilon$ of $0.0001$.
As this error-term is quadratic we just derive by $u$ yielding For this we use the Gauss--Newton algorithm\cite{gaussNewton} as the solution to
\begin{eqnarray*}
& \frac{\partial}{\partial u} & v_x - \sum_i N_{i,d,\tau_i}(u) c_i \\
& = & - \sum_i \left( \frac{d}{\tau_{i+d} - \tau_i} N_{i,d-1,\tau}(u) - \frac{d}{\tau_{i+d+1} - \tau_{i+1}} N_{i+1,d-1,\tau}(u) \right) c_i
\end{eqnarray*}
and do a gradient-descend to approximate the value of $u$ up to an $\epsilon$ of $0.0001$.
For this we use the Gauss-Newton algorithm\cite{gaussNewton} as the solution to
this problem may not be deterministic, because we usually have way more vertices this problem may not be deterministic, because we usually have way more vertices
than control points ($\#v \gg \#c$). than control points ($\#v~\gg~\#c$).
## Adaption of \ac{FFD} for a 3D-Mesh ## Adaption of \ac{FFD} for a 3D--Mesh
\label{3dffd} \label{3dffd}
This is a straightforward extension of the 1D-method presented in the last This is a straightforward extension of the 1D--method presented in the last
chapter. But this time things get a bit more complicated. As we have a chapter. But this time things get a bit more complicated. As we have a
3-dimensional grid we may have a different amount of control-points in each 3--dimensional grid we may have a different amount of control--points in each
direction. direction.
Given $n,m,o$ control points in $x,y,z$-direction each Point on the curve is Given $n,m,o$ control points in $x,y,z$--direction each Point on the curve is
defined by defined by
$$V(u,v,w) = \sum_i \sum_j \sum_k N_{i,d,\tau_i}(u) N_{j,d,\tau_j}(v) N_{k,d,\tau_k}(w) \cdot C_{ijk}.$$ $$V(u,v,w) = \sum_i \sum_j \sum_k N_{i,d,\tau_i}(u) N_{j,d,\tau_j}(v) N_{k,d,\tau_k}(w) \cdot C_{ijk}.$$
In this case we have three different B-Splines (one for each dimension) and also In this case we have three different B--Splines (one for each dimension) and also
3 variables $u,v,w$ for each vertex we want to approximate. 3 variables $u,v,w$ for each vertex we want to approximate.
Given a target vertex $\vec{p}^*$ and an initial guess $\vec{p}=V(u,v,w)$ Given a target vertex $\vec{p}^*$ and an initial guess $\vec{p}=V(u,v,w)$
we define the error-function for the gradient-descent as: we define the error--function for the gradient--descent as:
$$Err(u,v,w,\vec{p}^{*}) = \vec{p}^{*} - V(u,v,w)$$ $$Err(u,v,w,\vec{p}^{*}) = \vec{p}^{*} - V(u,v,w)$$
@ -368,7 +369,7 @@ $$
\right) \right)
$$ $$
With the Gauss-Newton algorithm we iterate via the formula With the Gauss--Newton algorithm we iterate via the formula
$$J(Err(u,v,w)) \cdot \Delta \left( \begin{array}{c} u \\ v \\ w \end{array} \right) = -Err(u,v,w)$$ $$J(Err(u,v,w)) \cdot \Delta \left( \begin{array}{c} u \\ v \\ w \end{array} \right) = -Err(u,v,w)$$
and use Cramers rule for inverting the small Jacobian and solving this system of and use Cramers rule for inverting the small Jacobian and solving this system of
linear equations. linear equations.
@ -378,7 +379,7 @@ linear equations.
- Nachteile von Parametrisierung - Nachteile von Parametrisierung
- Deformation ist um einen Kontrollpunkt viel direkter zu steuern. - Deformation ist um einen Kontrollpunkt viel direkter zu steuern.
- => DM-FFD? - => DM--FFD?
# Scenarios for testing evolvability criteria using \acf{FFD} # Scenarios for testing evolvability criteria using \acf{FFD}
@ -388,7 +389,7 @@ linear equations.
### Optimierungszenario ### Optimierungszenario
- Ebene -> Template-Fit - Ebene -> Template--Fit
### Matching in 1D ### Matching in 1D
@ -398,7 +399,7 @@ linear equations.
- Analytische Lösung einzig beste - Analytische Lösung einzig beste
- Ergebnis auch bei Rauschen konstant? - Ergebnis auch bei Rauschen konstant?
- normierter 1-Vektor auf den Gradienten addieren - normierter 1--Vektor auf den Gradienten addieren
- Kegel entsteht - Kegel entsteht
## Test Scenario: 3D Function Approximation ## Test Scenario: 3D Function Approximation
@ -419,7 +420,7 @@ linear equations.
# Evaluation of Scenarios # Evaluation of Scenarios
\label{sec:res} \label{sec:res}
## Spearman/Pearson-Metriken ## Spearman/Pearson--Metriken
- Was ist das? - Was ist das?
- Wieso sollte uns das interessieren? - Wieso sollte uns das interessieren?
@ -445,7 +446,7 @@ linear equations.
\begin{figure}[!ht] \begin{figure}[!ht]
\includegraphics[width=\textwidth]{img/evolution3d/20170926_3dFit_both_append.png} \includegraphics[width=\textwidth]{img/evolution3d/20170926_3dFit_all_append.png}
\caption{Results 3D} \caption{Results 3D}
\end{figure} \end{figure}

Binary file not shown.

View File

@ -9,7 +9,11 @@ titlepage,
% pagesize=auto % pagesize=auto
% openany, % Kapitel koennen auch auf geraden Seiten starten % openany, % Kapitel koennen auch auf geraden Seiten starten
% draft % schneller compillieren, Bild-dummy % draft % schneller compillieren, Bild-dummy
% appendixprefix % Anhang mit Bezeichner % appendixprefix, % Anhang mit Bezeichner
bibtotocnumbered,
liststotocnumbered,
listof=totocnumbered,
index=totocnumbered,
xcolor=dvipsnames, xcolor=dvipsnames,
]{scrbook} ]{scrbook}
@ -53,10 +57,10 @@ xcolor=dvipsnames,
\titleformat{name=\chapter,numberless}[hang]{\Huge\bfseries\ }{#1}{20pt}{\Huge\bfseries\ } \titleformat{name=\chapter,numberless}[hang]{\Huge\bfseries\ }{#1}{20pt}{\Huge\bfseries\ }
\titleformat{\chapter}[hang]{\Huge\bfseries\ }{\color{CadetBlue}\thechapter}{20pt}{\begin{tabular}[t]{@{\color{CadetBlue}\vrule width 2pt}>{\hangindent=20pt\hsp}p{\dimexpr 1\textwidth -44pt}}#1\end{tabular}} \titleformat{\chapter}[hang]{\Huge\bfseries\ }{\color{CadetBlue}\thechapter}{20pt}{\begin{tabular}[t]{@{\color{CadetBlue}\vrule width 2pt}>{\hangindent=20pt\hsp}p{\dimexpr 1\textwidth -44pt}}#1\end{tabular}}
\titleformat{name=\section,numberless}[hang]{\large\bfseries\ }{#1}{32pt}{\large\bfseries\ } \titleformat{name=\section,numberless}[hang]{\Large\bfseries\ }{#1}{32pt}{\Large\bfseries\ }
\titleformat{\section}[hang]{\large\bfseries\ }{\color{CadetBlue}\thesection}{32pt}{\begin{tabular}[t]{p{\dimexpr 1\textwidth -44pt}}#1\end{tabular}} \titleformat{\section}[hang]{\Large\bfseries\ }{\color{CadetBlue}\thesection}{32pt}{\begin{tabular}[t]{p{\dimexpr 1\textwidth -44pt}}#1\end{tabular}}
\titleformat{name=\subsection,numberless}[hang]{\bfseries\ }{#1}{27pt}{\bfseries\ } \titleformat{name=\subsection,numberless}[hang]{\large\bfseries\ }{#1}{27pt}{\large\bfseries\ }
\titleformat{\subsection}[hang]{\bfseries\ }{\color{CadetBlue}\thesubsection}{27pt}{\begin{tabular}[t]{p{\dimexpr 1\textwidth -44pt}}#1\end{tabular}} \titleformat{\subsection}[hang]{\large\bfseries\ }{\color{CadetBlue}\thesubsection}{27pt}{\begin{tabular}[t]{p{\dimexpr 1\textwidth -44pt}}#1\end{tabular}}
% ### fr 1 seitig % ### fr 1 seitig
%\usepackage{fancyhdr} % %\usepackage{fancyhdr} %
@ -124,6 +128,7 @@ xcolor=dvipsnames,
% %
%%%%%%%%%%%%%%% Verzeichnisse %%%%%%%%%%%%%%% %%%%%%%%%%%%%%% Verzeichnisse %%%%%%%%%%%%%%%
\frontmatter % Abstrakte Gliederungsebene: Anfang des Buches \frontmatter % Abstrakte Gliederungsebene: Anfang des Buches
\renewcommand{\autodot}{}
\tableofcontents % Rueckseite leer \tableofcontents % Rueckseite leer
%\lstlistoflistings % fuer listingsverzeichnis mit package listings %\lstlistoflistings % fuer listingsverzeichnis mit package listings
@ -143,11 +148,11 @@ Unless otherwise noted the following holds:
\tightlist \tightlist
\item \item
lowercase letters \(x,y,z\)\\ lowercase letters \(x,y,z\)\\
refer to real variables and represent a point in 3D-Space. refer to real variables and represent a point in 3D--Space.
\item \item
lowercase letters \(u,v,w\)\\ lowercase letters \(u,v,w\)\\
refer to real variables between \(0\) and \(1\) used as coefficients refer to real variables between \(0\) and \(1\) used as coefficients
in a 3D B-Spline grid. in a 3D B--Spline grid.
\item \item
other lowercase letters\\ other lowercase letters\\
refer to other scalar (real) variables. refer to other scalar (real) variables.
@ -167,10 +172,10 @@ Many modern industrial design processes require advanced optimization
methods do to the increased complexity. These designs have to adhere to methods do 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
complexity increases with the temporal and spatial resolution of the complexity increases with the temporal and spatial resolution of the
simulation -- or known hard algorithmic problems in informatics simulation --- or known hard algorithmic problems in informatics
(i.e.~layouting of circuit boards or stacking of 3D-objects). Moreover (i.e.~layouting of circuit boards or stacking of 3D--objects). Moreover
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.
@ -178,9 +183,9 @@ Evolutional 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
an arbitrary cost-function for the fitness-functions (i.e.~amount of an arbitrary cost--function for the fitness--functions (i.e.~amount of
drag, amount of space, etc.), the translation of the problem-domain into drag, amount of space, etc.), the translation of the problem--domain
a simple parametric representation can be challenging. into a simple parametric representation can be challenging.
The quality of such a representation in biological evolution is called The quality of such a representation in biological evolution is called
\emph{evolvability}\cite{wagner1996complex} and is at the core of this \emph{evolvability}\cite{wagner1996complex} and is at the core of this
@ -203,7 +208,7 @@ optimization.
We will replicate the same setup on the same meshes but use \acf{FFD} 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 given the different deformation scheme, as suspected in
\cite{anrichterEvol}. \cite{anrichterEvol}.
@ -211,19 +216,19 @@ given the different deformation scheme, as suspected in
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}
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 evolutional 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
\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.
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
aspects introduced in Chapter \ref{sec:back}. Following that, we aspects introduced in Chapter \ref{sec:back}. Following that, we
evaluate the results in Chapter \ref{sec:res} with further on discussion evaluate the results in Chapter \ref{sec:res} with further on discussion
in Chapter \ref{sec:dis}. in Chapter \ref{sec:dis}.
@ -238,8 +243,8 @@ in Chapter \ref{sec:dis}.
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 meshes in the first place. For simplicity we
only summarize the 1D-case from \cite{spitzmuller1996bezier} here and go only summarize the 1D--case from \cite{spitzmuller1996bezier} here and
into the extension to the 3D case in chapter \ref{3dffd}. go into the extension to the 3D case in chapter \ref{3dffd}.
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
@ -258,7 +263,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 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 \([i..i+d]\) for any
given \(i\)\footnote{one more for each recursive step.}, which gives us, given \(i\)\footnote{one more for each recursive step.}, which gives us,
in combination with choosing \(p_i\) and \(\tau_i\) in order, only a in combination with choosing \(p_i\) and \(\tau_i\) in order, only a
@ -266,12 +271,12 @@ 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
recursion-formula yields a \(0\) denominator, but \(N\) is also \(0\). recursion--formula yields a \(0\) denominator, but \(N\) is also
The right solution for this case is a derivative of \(0\)}: \(0\). The right solution for this case is a derivative of \(0\)}:
\[\frac{\partial}{\partial u} N_{i,d,r}(u) = \frac{d}{\tau_{i+d} - \tau_i} N_{i,d-1,\tau}(u) - \frac{d}{\tau_{i+d+1} - \tau_{i+1}} N_{i+1,d-1,\tau}(u)\] \[\frac{\partial}{\partial u} N_{i,d,r}(u) = \frac{d}{\tau_{i+d} - \tau_i} N_{i,d-1,\tau}(u) - \frac{d}{\tau_{i+d+1} - \tau_{i+1}} N_{i+1,d-1,\tau}(u)\]
For a B-Spline \[s(u) = \sum_{i} N_{i,d,\tau_i}(u) p_i\] these For a B--Spline \[s(u) = \sum_{i} N_{i,d,\tau_i}(u) p_i\] these
derivations yield \(\frac{\partial^d}{\partial u} s(u) = 0\). 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
@ -288,7 +293,7 @@ function?}{Why is a good deformation function?}}\label{why-is-a-good-deformatio
The usage of \ac{FFD} as a tool for manipulating follows directly from The usage of \ac{FFD} as a tool for manipulating follows directly from
the properties of the polynomials and the correspondence to the control the properties of the polynomials and the correspondence to the control
points. Having only a few control points gives the user a nicer points. Having only a few control points gives the user a nicer
high-level-interface, as she only needs to move these points and the high--level--interface, as she only needs to move these points and the
model follows in an intuitive manner. The deformation is smooth as the model follows in an intuitive manner. The deformation is smooth as the
underlying polygon is smooth as well and affects as many vertices of the underlying polygon is smooth as well and affects as many vertices of the
model as needed. Moreover the changes are always local so one risks not model as needed. Moreover the changes are always local so one risks not
@ -300,12 +305,12 @@ as creating a plateau can be difficult to
achieve\cite[chapter~3.2]{hsu1991dmffd}\cite{hsu1992direct}. achieve\cite[chapter~3.2]{hsu1991dmffd}\cite{hsu1992direct}.
This disadvantages led to the formulation of This disadvantages led to the formulation of
\acf{DM-FFD}\cite[chapter~3.3]{hsu1991dmffd} in which the user directly \acf{DM--FFD}\cite[chapter~3.3]{hsu1991dmffd} in which the user directly
interacts with the surface-mesh. All interactions will be applied interacts with the surface--mesh. All interactions will be applied
proportionally to the control-points that make up the parametrization of proportionally to the control--points that make up the parametrization
the interaction-point itself yielding a smooth deformation of the of the interaction--point itself yielding a smooth deformation of the
surface \emph{at} the surface without seemingly arbitrary scattered surface \emph{at} the surface without seemingly arbitrary scattered
control-points. Moreover this increases the efficiency of an control--points. Moreover this increases the efficiency of an
evolutionary optimization\cite{Menzel2006}, which we will use later on. evolutionary optimization\cite{Menzel2006}, which we will use later on.
\begin{figure}[!ht] \begin{figure}[!ht]
@ -318,8 +323,8 @@ But this approach also has downsides as can be seen in figure
\ref{fig:hsu_fig7}, as the tessellation of the invisible grid has a \ref{fig:hsu_fig7}, as the tessellation of the invisible grid has a
major impact on the deformation itself. 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 evolutional
optimization?}\label{what-is-evolutional-optimization} optimization?}\label{what-is-evolutional-optimization}
@ -335,12 +340,12 @@ algorithms}\label{advantages-of-evolutional-algorithms}
\change[inline]{Needs citations} The main advantage of evolutional \change[inline]{Needs citations} The main advantage of evolutional
algorithms is the ability to find optima of general functions just with algorithms is the ability to find optima of general functions just with
the help of a given error-function (or fitness-function in this domain). the help of a given error--function (or fitness--function in this
This avoids the general pitfalls of gradient-based procedures, which domain). This avoids the general pitfalls of gradient--based procedures,
often target the same error-function as an evolutional algorithm, but which often target the same error--function as an evolutional algorithm,
can get stuck in local optima. but can get stuck in local optima.
This is mostly due to the fact that a gradient-based procedure has only This is mostly due to the fact that a gradient--based procedure has only
one point of observation from where it evaluates the next steps, whereas one point of observation from where it evaluates the next steps, whereas
an evolutional strategy starts with a population of guessed solutions. an evolutional strategy starts with a population of guessed solutions.
Because an evolutional strategy modifies the solution randomly, keeps Because an evolutional strategy modifies the solution randomly, keeps
@ -348,7 +353,7 @@ the best solutions and purges the worst, it can also target multiple
different hypothesis at the same time where the local optima die out in different hypothesis at the same time where the local optima die out in
the face of other, better candidates. the face of other, better candidates.
If an analytic best solution exists (i.e.~because the error-function is If an analytic best solution exists (i.e.~because the error--function is
convex) an evolutional algorithm is not the right choice. Although both convex) an evolutional algorithm is not the right choice. Although both
converge to the same solution, the analytic one is usually faster. But converge to the same solution, the analytic one is usually faster. But
in reality many problems have no analytic solution, because the problem in reality many problems have no analytic solution, because the problem
@ -364,33 +369,33 @@ deformations}\label{criteria-for-the-evolvability-of-linear-deformations}
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 \(m \times n\) deformation--Matrix used to map the \(m\) control
points onto the \(n\) vertices. 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
each other and the solution is to trivially move every control-point each other and the solution is to trivially move every control--point
onto a target-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 Additionally in our setup we connect neighbouring control--points in a
grid so each control point is not independent, but typically depends on grid so each control point is not independent, but typically depends on
\(4^d\) control-points for an \(d\)-dimensional control mesh. \(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
\[R(\vec{U}) := \frac{1}{\kappa(\vec{U})} = \frac{\sigma_{min}}{\sigma_{max}}\] \[R(\vec{U}) := \frac{1}{\kappa(\vec{U})} = \frac{\sigma_{min}}{\sigma_{max}}\]
where \(\sigma_{min}\) and \(\sigma_{max}\) are the smallest and where \(\sigma_{min}\) and \(\sigma_{max}\) are the smallest and
greatest right singular value of the deformation-matrix \(\vec{U}\). greatest right singular value of the deformation--matrix \(\vec{U}\).
As we deform the given Object only based on the parameters as As we deform the given Object only based on the parameters as
\(\vec{p} \mapsto f(\vec{x} + \vec{U}\vec{p})\) this makes sure that \(\vec{p} \mapsto f(\vec{x} + \vec{U}\vec{p})\) this makes sure that
\(\|\vec{Up}\| \propto \|\vec{p}\|\) when \(\kappa(\vec{U}) \approx 1\). \(\|\vec{Up}\| \propto \|\vec{p}\|\) when \(\kappa(\vec{U}) \approx 1\).
The inversion of \(\kappa(\vec{U})\) is only performed to map the The inversion of \(\kappa(\vec{U})\) is only performed to map the
criterion-range to \([0..1]\), whereas \(1\) is the optimal value and criterion--range to \([0..1]\), whereas \(1\) is the optimal value and
\(0\) is the worst value. \(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
@ -402,7 +407,7 @@ locality\cite{weise2012evolutionary,thorhauer2014locality}.
\subsection{Improvement Potential}\label{improvement-potential} \subsection{Improvement Potential}\label{improvement-potential}
In contrast to the general nature of \emph{variability} and In contrast to the general nature of \emph{variability} and
\emph{regularity}, which are agnostic of the fitness-function at hand \emph{regularity}, which are agnostic of the fitness--function at hand
the third criterion should reflect a notion of potential. the third criterion should reflect a notion of potential.
As during optimization some kind of gradient \(g\) is available to As during optimization some kind of gradient \(g\) is available to
@ -412,87 +417,83 @@ can be achieved in the given direction.
The definition for an \emph{improvement potential} \(P\) The definition for an \emph{improvement potential} \(P\)
is\cite{anrichterEvol}: \[ is\cite{anrichterEvol}: \[
P(\vec{U}) := 1 - \|(\vec{1} - \vec{UU}^+)\vec(G)\|^2_F P(\vec{U}) := 1 - \|(\vec{1} - \vec{UU}^+)\vec(G)\|^2_F
\] given some approximate \(n \times d\) fitness-gradient \(\vec{G}\), \] given some approximate \(n \times d\) fitness--gradient \(\vec{G}\),
normalized to \(\|\vec{G}\|_F = 1\), whereby \(\|\cdot\|_F\) denotes the normalized to \(\|\vec{G}\|_F = 1\), whereby \(\|\cdot\|_F\) denotes the
Frobenius-Norm. Frobenius--Norm.
\chapter{\texorpdfstring{Implementation of \chapter{\texorpdfstring{Implementation of
\acf{FFD}}{Implementation of }}\label{implementation-of} \acf{FFD}}{Implementation of }}\label{implementation-of}
\label{sec:impl} \label{sec:impl}
The general formulation of B-Splines has two free parameters \(d\) and The general formulation of B--Splines has two free parameters \(d\) and
\(\tau\) which must be chosen beforehand. \(\tau\) which must be chosen beforehand.
As we usually work with regular grids in our \ac{FFD} we define \(\tau\) As we usually work with regular grids in our \ac{FFD} we define \(\tau\)
statically as \(\tau_i = \nicefrac{i}{n}\) whereby \(n\) is the number statically as \(\tau_i = \nicefrac{i}{n}\) whereby \(n\) is the number
of control-points in that direction. of control--points in that direction.
\(d\) defines the \emph{degree} of the B-Spline-Function (the number of \(d\) defines the \emph{degree} of the B--Spline--Function (the number
times this function is differentiable) and for our purposes we fix \(d\) of times this function is differentiable) and for our purposes we fix
to \(3\), but give the formulas for the general case so it can be \(d\) to \(3\), but give the formulas for the general case so it can be
adapted quite freely. adapted quite freely.
\section{\texorpdfstring{Adaption of \section{\texorpdfstring{Adaption of
\ac{FFD}}{Adaption of }}\label{adaption-of} \ac{FFD}}{Adaption of }}\label{adaption-of}
As we have established in Chapter \ref{sec:back:ffd} we can define an As we have established in Chapter \ref{sec:back:ffd} we can define an
\ac{FFD}-displacement as \ac{FFD}--displacement as
\begin{equation} \begin{equation}
\Delta_x(u) = \sum_i N_{i,d,\tau_i}(u) \Delta_x c_i \Delta_x(u) = \sum_i N_{i,d,\tau_i}(u) \Delta_x c_i
\end{equation} \end{equation}
Note that we only sum up the \(\Delta\)-displacements in the control Note that we only sum up the \(\Delta\)--displacements in the control
points \(c_i\) to get the change in position of the point we are points \(c_i\) to get the change in position of the point we are
interested in. interested in.
In this way every deformed vertex is defined by \[ In this way every deformed vertex is defined by \[
\textrm{Deform}(v_x) = v_x + \Delta_x(u) \textrm{Deform}(v_x) = v_x + \Delta_x(u)
\] with \(u \in [0..1[\) being the variable that connects the \] with \(u \in [0..1[\) being the variable that connects the
high-detailed vertex-mesh to the low-detailed control-grid. To actually high--detailed vertex--mesh to the low--detailed control--grid. To
calculate the new position of the vertex we first have to calculate the actually calculate the new position of the vertex we first have to
\(u\)-value for each vertex. This is achieved by finding out the calculate the \(u\)--value for each vertex. This is achieved by finding
parametrization of \(v\) in terms of \(c_i\) \[ out the parametrization of \(v\) in terms of \(c_i\) \[
v_x \overset{!}{=} \sum_i N_{i,d,\tau_i}(u) c_i v_x \overset{!}{=} \sum_i N_{i,d,\tau_i}(u) c_i
\] so we can minimize the error between those two: \[ \] so we can minimize the error between those two: \[
\underset{u}{\argmin}\,Err(u,v_x) = \underset{u}{\argmin}\,2 \cdot \|v_x - \sum_i N_{i,d,\tau_i}(u) c_i\|^2_2 \underset{u}{\argmin}\,Err(u,v_x) = \underset{u}{\argmin}\,2 \cdot \|v_x - \sum_i N_{i,d,\tau_i}(u) c_i\|^2_2
\] \] As this error--term is quadratic we just derive by \(u\) yielding \[
\begin{array}{rl}
As this error-term is quadratic we just derive by \(u\) yielding \frac{\partial}{\partial u} & v_x - \sum_i N_{i,d,\tau_i}(u) c_i \\
= & - \sum_i \left( \frac{d}{\tau_{i+d} - \tau_i} N_{i,d-1,\tau}(u) - \frac{d}{\tau_{i+d+1} - \tau_{i+1}} N_{i+1,d-1,\tau}(u) \right) c_i
\begin{eqnarray*} \end{array}
& \frac{\partial}{\partial u} & v_x - \sum_i N_{i,d,\tau_i}(u) c_i \\ \] and do a gradient--descend to approximate the value of \(u\) up to an
& = & - \sum_i \left( \frac{d}{\tau_{i+d} - \tau_i} N_{i,d-1,\tau}(u) - \frac{d}{\tau_{i+d+1} - \tau_{i+1}} N_{i+1,d-1,\tau}(u) \right) c_i
\end{eqnarray*}
and do a gradient-descend to approximate the value of \(u\) up to an
\(\epsilon\) of \(0.0001\). \(\epsilon\) of \(0.0001\).
For this we use the Gauss-Newton algorithm\cite{gaussNewton} as the For this we use the Gauss--Newton algorithm\cite{gaussNewton} as the
solution to this problem may not be deterministic, because we usually solution to this problem may not be deterministic, because we usually
have way more vertices than control points (\(\#v \gg \#c\)). have way more vertices than control points (\(\#v~\gg~\#c\)).
\section{\texorpdfstring{Adaption of \ac{FFD} for a \section{\texorpdfstring{Adaption of \ac{FFD} for a
3D-Mesh}{Adaption of for a 3D-Mesh}}\label{adaption-of-for-a-3d-mesh} 3D--Mesh}{Adaption of for a 3D--Mesh}}\label{adaption-of-for-a-3dmesh}
\label{3dffd} \label{3dffd}
This is a straightforward extension of the 1D-method presented in the This is a straightforward extension of the 1D--method presented in the
last chapter. But this time things get a bit more complicated. As we last chapter. But this time things get a bit more complicated. As we
have a 3-dimensional grid we may have a different amount of have a 3--dimensional grid we may have a different amount of
control-points in each direction. control--points in each direction.
Given \(n,m,o\) control points in \(x,y,z\)-direction each Point on the Given \(n,m,o\) control points in \(x,y,z\)--direction each Point on the
curve is defined by curve is defined by
\[V(u,v,w) = \sum_i \sum_j \sum_k N_{i,d,\tau_i}(u) N_{j,d,\tau_j}(v) N_{k,d,\tau_k}(w) \cdot C_{ijk}.\] \[V(u,v,w) = \sum_i \sum_j \sum_k N_{i,d,\tau_i}(u) N_{j,d,\tau_j}(v) N_{k,d,\tau_k}(w) \cdot C_{ijk}.\]
In this case we have three different B-Splines (one for each dimension) In this case we have three different B--Splines (one for each dimension)
and also 3 variables \(u,v,w\) for each vertex we want to approximate. and also 3 variables \(u,v,w\) for each vertex we want to approximate.
Given a target vertex \(\vec{p}^*\) and an initial guess Given a target vertex \(\vec{p}^*\) and an initial guess
\(\vec{p}=V(u,v,w)\) we define the error-function for the \(\vec{p}=V(u,v,w)\) we define the error--function for the
gradient-descent as: gradient--descent as:
\[Err(u,v,w,\vec{p}^{*}) = \vec{p}^{*} - V(u,v,w)\] \[Err(u,v,w,\vec{p}^{*}) = \vec{p}^{*} - V(u,v,w)\]
@ -533,7 +534,7 @@ J(Err(u,v,w)) =
\right) \right)
\] \]
With the Gauss-Newton algorithm we iterate via the formula With the Gauss--Newton algorithm we iterate via the formula
\[J(Err(u,v,w)) \cdot \Delta \left( \begin{array}{c} u \\ v \\ w \end{array} \right) = -Err(u,v,w)\] \[J(Err(u,v,w)) \cdot \Delta \left( \begin{array}{c} u \\ v \\ w \end{array} \right) = -Err(u,v,w)\]
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.
@ -547,7 +548,7 @@ system of linear equations.
\item \item
Deformation ist um einen Kontrollpunkt viel direkter zu steuern. Deformation ist um einen Kontrollpunkt viel direkter zu steuern.
\item \item
=\textgreater{} DM-FFD? =\textgreater{} DM--FFD?
\end{itemize} \end{itemize}
\chapter{\texorpdfstring{Scenarios for testing evolvability criteria \chapter{\texorpdfstring{Scenarios for testing evolvability criteria
@ -564,7 +565,7 @@ Approximation}\label{test-scenario-1d-function-approximation}
\begin{itemize} \begin{itemize}
\tightlist \tightlist
\item \item
Ebene -\textgreater{} Template-Fit Ebene -\textgreater{} Template--Fit
\end{itemize} \end{itemize}
\subsection{Matching in 1D}\label{matching-in-1d} \subsection{Matching in 1D}\label{matching-in-1d}
@ -585,7 +586,7 @@ Auswertung}\label{besonderheiten-der-auswertung}
\item \item
Ergebnis auch bei Rauschen konstant? Ergebnis auch bei Rauschen konstant?
\item \item
normierter 1-Vektor auf den Gradienten addieren normierter 1--Vektor auf den Gradienten addieren
\begin{itemize} \begin{itemize}
\tightlist \tightlist
@ -628,7 +629,7 @@ Optimierung}\label{besonderheiten-der-optimierung}
\label{sec:res} \label{sec:res}
\section{Spearman/Pearson-Metriken}\label{spearmanpearson-metriken} \section{Spearman/Pearson--Metriken}\label{spearmanpearsonmetriken}
\begin{itemize} \begin{itemize}
\tightlist \tightlist
@ -668,28 +669,28 @@ Approximation}\label{results-of-3d-function-approximation}
HAHA .. als ob -.- HAHA .. als ob -.-
\backmatter % \backmatter
\cleardoublepage \cleardoublepage
\renewcommand\thesection{\Roman{section}} \renewcommand\thechapter{\Alph{chapter}}
\addtocontents{toc}{\protect\setcounter{tocdepth}{1}}
\setcounter{section}{1} % reset section to 1 so its stars I, II, III,...
\chapter*{Appendix} \chapter*{Appendix}
\addcontentsline{toc}{chapter}{\protect\numberline{}Appendix} \addcontentsline{toc}{chapter}{\protect\numberline{}Appendix}
\addtocontents{toc}{\protect\setcounter{tocdepth}{1}}
\setcounter{chapter}{0} % reset section to 1 so its stars I, II, III,...
\pagenumbering{roman} \pagenumbering{roman}
%%%%%%%%%%%%%%% Literaturverzeichnis %%%%%%%%%%%%%%% %%%%%%%%%%%%%%% Literaturverzeichnis %%%%%%%%%%%%%%%
\bibliographystyle{unsrtdin} % \bibliographystyle{natdin} \bibliographystyle{unsrtdin} % \bibliographystyle{natdin}
\bibliography{bibma} \bibliography{bibma}
\addcontentsline{toc}{section}{\protect\numberline{\thesection}Bibliography} % Literaturverzeichnis in das Inhaltsverzeichnis aufnehmen % \addcontentsline{toc}{chapter}{\protect\numberline{\thechapter}Bibliography} % Literaturverzeichnis in das Inhaltsverzeichnis aufnehmen
\addtocounter{section}{1} % \addtocounter{chapter}{1}
\newpage \newpage
%%%%%%%%%%%%%%% Anhang %%%%%%%%%%%%%%% %%%%%%%%%%%%%%% Anhang %%%%%%%%%%%%%%%
% \clearpage %spaeter alles wieder rein % \clearpage %spaeter alles wieder rein
% % \input{files/appendix} % % \input{files/appendix}
\input{settings/abkuerzungen} \input{settings/abkuerzungen}
\addcontentsline{toc}{section}{\protect\numberline{\thesection}Abbreviations} % \addcontentsline{toc}{chapter}{\protect\numberline{\thechapter}Abbreviations}
\addtocounter{section}{1} % \addtocounter{chapter}{1}
\newpage \newpage
% \listofalgorithms % \listofalgorithms
@ -698,10 +699,13 @@ HAHA .. als ob -.-
% \newpage % \newpage
% %
\listoffigures \listoffigures
% \addcontentsline{toc}{chapter}{\protect\numberline{\thechapter}List of Figures}
% \addtocounter{chapter}{1}
\newpage
% \listoftables % \listoftables
\listoftodos \listoftodos
\addcontentsline{toc}{section}{\protect\numberline{\thesection}TODOs} % \addcontentsline{toc}{chapter}{\protect\numberline{\thechapter}TODOs}
\addtocounter{section}{1} % \addtocounter{chapter}{1}
\newpage \newpage
% \printindex % \printindex

View File

@ -1,4 +1,4 @@
\chapter*{Abbreviations} \chapter{Abbreviations}
\label{cha:abbrev} \label{cha:abbrev}
\begin{acronym} \begin{acronym}
% Zugriff ueber \ac{BWT} 1te mal Vollreferenz, danach Abk. % Zugriff ueber \ac{BWT} 1te mal Vollreferenz, danach Abk.
@ -10,8 +10,8 @@
% %
%\acro{GPL}{GNU General Public License} -- %\acro{GPL}{GNU General Public License} --
% License for free software, see \url{http://www.gnu.org/copyleft/gpl.html}. % License for free software, see \url{http://www.gnu.org/copyleft/gpl.html}.
\acro{FFD}{Freeform-Deformation} \acro{FFD}{Freeform--Deformation}
\acro{DM-FFD}{Direct Manipulation Freeform-Deformation} \acro{DM--FFD}{Direct Manipulation Freeform--Deformation}
\acro{RBF}{Radial Basis Function} \acro{RBF}{Radial Basis Function}
% %

View File

@ -9,7 +9,11 @@ titlepage,
% pagesize=auto % pagesize=auto
% openany, % Kapitel koennen auch auf geraden Seiten starten % openany, % Kapitel koennen auch auf geraden Seiten starten
% draft % schneller compillieren, Bild-dummy % draft % schneller compillieren, Bild-dummy
% appendixprefix % Anhang mit Bezeichner % appendixprefix, % Anhang mit Bezeichner
bibtotocnumbered,
liststotocnumbered,
listof=totocnumbered,
index=totocnumbered,
xcolor=dvipsnames, xcolor=dvipsnames,
]{scrbook} ]{scrbook}
@ -53,10 +57,10 @@ xcolor=dvipsnames,
\titleformat{name=\chapter,numberless}[hang]{\Huge\bfseries\ }{#1}{20pt}{\Huge\bfseries\ } \titleformat{name=\chapter,numberless}[hang]{\Huge\bfseries\ }{#1}{20pt}{\Huge\bfseries\ }
\titleformat{\chapter}[hang]{\Huge\bfseries\ }{\color{CadetBlue}\thechapter}{20pt}{\begin{tabular}[t]{@{\color{CadetBlue}\vrule width 2pt}>{\hangindent=20pt\hsp}p{\dimexpr 1\textwidth -44pt}}#1\end{tabular}} \titleformat{\chapter}[hang]{\Huge\bfseries\ }{\color{CadetBlue}\thechapter}{20pt}{\begin{tabular}[t]{@{\color{CadetBlue}\vrule width 2pt}>{\hangindent=20pt\hsp}p{\dimexpr 1\textwidth -44pt}}#1\end{tabular}}
\titleformat{name=\section,numberless}[hang]{\large\bfseries\ }{#1}{32pt}{\large\bfseries\ } \titleformat{name=\section,numberless}[hang]{\Large\bfseries\ }{#1}{32pt}{\Large\bfseries\ }
\titleformat{\section}[hang]{\large\bfseries\ }{\color{CadetBlue}\thesection}{32pt}{\begin{tabular}[t]{p{\dimexpr 1\textwidth -44pt}}#1\end{tabular}} \titleformat{\section}[hang]{\Large\bfseries\ }{\color{CadetBlue}\thesection}{32pt}{\begin{tabular}[t]{p{\dimexpr 1\textwidth -44pt}}#1\end{tabular}}
\titleformat{name=\subsection,numberless}[hang]{\bfseries\ }{#1}{27pt}{\bfseries\ } \titleformat{name=\subsection,numberless}[hang]{\large\bfseries\ }{#1}{27pt}{\large\bfseries\ }
\titleformat{\subsection}[hang]{\bfseries\ }{\color{CadetBlue}\thesubsection}{27pt}{\begin{tabular}[t]{p{\dimexpr 1\textwidth -44pt}}#1\end{tabular}} \titleformat{\subsection}[hang]{\large\bfseries\ }{\color{CadetBlue}\thesubsection}{27pt}{\begin{tabular}[t]{p{\dimexpr 1\textwidth -44pt}}#1\end{tabular}}
% ### fr 1 seitig % ### fr 1 seitig
%\usepackage{fancyhdr} % %\usepackage{fancyhdr} %
@ -124,6 +128,7 @@ xcolor=dvipsnames,
% %
%%%%%%%%%%%%%%% Verzeichnisse %%%%%%%%%%%%%%% %%%%%%%%%%%%%%% Verzeichnisse %%%%%%%%%%%%%%%
\frontmatter % Abstrakte Gliederungsebene: Anfang des Buches \frontmatter % Abstrakte Gliederungsebene: Anfang des Buches
\renewcommand{\autodot}{}
\tableofcontents % Rueckseite leer \tableofcontents % Rueckseite leer
%\lstlistoflistings % fuer listingsverzeichnis mit package listings %\lstlistoflistings % fuer listingsverzeichnis mit package listings
@ -134,28 +139,28 @@ xcolor=dvipsnames,
\pagenumbering{arabic} \pagenumbering{arabic}
$body$ $body$
\backmatter % \backmatter
\cleardoublepage \cleardoublepage
\renewcommand\thesection{\Roman{section}} \renewcommand\thechapter{\Alph{chapter}}
\addtocontents{toc}{\protect\setcounter{tocdepth}{1}}
\setcounter{section}{1} % reset section to 1 so its stars I, II, III,...
\chapter*{Appendix} \chapter*{Appendix}
\addcontentsline{toc}{chapter}{\protect\numberline{}Appendix} \addcontentsline{toc}{chapter}{\protect\numberline{}Appendix}
\addtocontents{toc}{\protect\setcounter{tocdepth}{1}}
\setcounter{chapter}{0} % reset section to 1 so its stars I, II, III,...
\pagenumbering{roman} \pagenumbering{roman}
%%%%%%%%%%%%%%% Literaturverzeichnis %%%%%%%%%%%%%%% %%%%%%%%%%%%%%% Literaturverzeichnis %%%%%%%%%%%%%%%
\bibliographystyle{unsrtdin} % \bibliographystyle{natdin} \bibliographystyle{unsrtdin} % \bibliographystyle{natdin}
\bibliography{bibma} \bibliography{bibma}
\addcontentsline{toc}{section}{\protect\numberline{\thesection}Bibliography} % Literaturverzeichnis in das Inhaltsverzeichnis aufnehmen % \addcontentsline{toc}{chapter}{\protect\numberline{\thechapter}Bibliography} % Literaturverzeichnis in das Inhaltsverzeichnis aufnehmen
\addtocounter{section}{1} % \addtocounter{chapter}{1}
\newpage \newpage
%%%%%%%%%%%%%%% Anhang %%%%%%%%%%%%%%% %%%%%%%%%%%%%%% Anhang %%%%%%%%%%%%%%%
% \clearpage %spaeter alles wieder rein % \clearpage %spaeter alles wieder rein
% % \input{files/appendix} % % \input{files/appendix}
\input{settings/abkuerzungen} \input{settings/abkuerzungen}
\addcontentsline{toc}{section}{\protect\numberline{\thesection}Abbreviations} % \addcontentsline{toc}{chapter}{\protect\numberline{\thechapter}Abbreviations}
\addtocounter{section}{1} % \addtocounter{chapter}{1}
\newpage \newpage
% \listofalgorithms % \listofalgorithms
@ -164,10 +169,13 @@ $body$
% \newpage % \newpage
% %
\listoffigures \listoffigures
% \addcontentsline{toc}{chapter}{\protect\numberline{\thechapter}List of Figures}
% \addtocounter{chapter}{1}
\newpage
% \listoftables % \listoftables
\listoftodos \listoftodos
\addcontentsline{toc}{section}{\protect\numberline{\thesection}TODOs} % \addcontentsline{toc}{chapter}{\protect\numberline{\thechapter}TODOs}
\addtocounter{section}{1} % \addtocounter{chapter}{1}
\newpage \newpage
% \printindex % \printindex

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB