<!doctype html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"> <title> Evaluation of the Performance of Randomized FFD Control Grids: Master Thesis </title> <link rel="stylesheet" href="./template/revealjs/css/reveal.css"> <!-- Theme of AG CG (derived from reveal's white.css) --> <link rel="stylesheet" href="./template/agcg.css"> <!-- font needed for chalkboard buttons --> <link rel="stylesheet" href="./template/font-awesome/css/font-awesome.min.css"> <!-- Setup code formatting with highlight.js --> <link rel="stylesheet" href="./template/revealjs/css/highlight/xcode.css"> <!-- Printing and PDF exports --> <script> var link = document.createElement( 'link' ); link.rel = 'stylesheet'; link.type = 'text/css'; link.href = window.location.search.match( /print-pdf/gi ) ? './template/revealjs/css/print/pdf.css' : './template/revealjs/css/print/paper.css'; document.getElementsByTagName( 'head' )[0].appendChild( link ); // MARIO version if (window.location.search.match( /print-pdf/gi )) { var link = document.createElement( 'link' ); link.rel = 'stylesheet'; link.type = 'text/css'; link.href = './template/agcg-pdf.css'; document.getElementsByTagName( 'head' )[0].appendChild( link ); } </script> <!-- MathJax config --> <script type="text/x-mathjax-config"> MathJax.Hub.Config({ jax: ["input/TeX","output/HTML-CSS"], TeX: { Macros: { R: "{\\mathrm{{I}\\kern-.15em{R}}}", abs: ['\\left\\lvert #1 \\right\\rvert', 1], norm: ['\\left\\Vert #1 \\right\\Vert', 1], iprod: ['\\left\\langle #1 \\right\\rangle', 1], vec: ['\\mathbf{#1}', 1], mat: ['\\mathbf{#1}', 1], trans: ['{#1}\\mkern-1mu^{\\mathsf{T}}', 1], matrix: ['\\begin{bmatrix} #1 \\end{bmatrix}', 1], vector: ['\\begin{pmatrix} #1 \\end{pmatrix}', 1], of: ['\\mkern{-2mu}\\left( #1 \\right\)', 1] } }, tex2jax: { skipTags: ["script","noscript","style","textarea"], }, "HTML-CSS": { styles: { ".reveal section .MathJax_Display": { margin: "0.5em 0em" } }, styles: { ".reveal table .MathJax_Display": { margin: "0em" } }, scale: 95 } }); </script> </head> <body> <!-- here come the slides --> <div class="reveal"> <div class="slides"> <!-- Title slide --> <section class="white-on-blue"> <div class="title"> Evaluation of the Performance of Randomized FFD Control Grids </div> <div class="subtitle"> Master Thesis </div> <div class="author"> Stefan Dresselhaus </div> <div class="affiliation"> Graphics & Geometry Group </div> </section> <!-- Table of Contents --> <!-- all the slides from markdown document: DO NOT INDENT THE body LINE!!! --> <section id="introduction" class="slide level1"> <h1>Introduction</h1> <ul> <li>Many modern industrial design processes require advanced optimization methods due to increased complexity</li> <li>Examples are <ul> <li>physical domains <ul> <li>aerodynamics (i.e. drag)</li> <li>fluid dynamics (i.e. throughput of liquid)</li> </ul></li> <li>NP-hard problems <ul> <li>layouting of circuit boards</li> <li>stacking of 3D–objects</li> </ul></li> </ul></li> </ul> </section> <section id="motivation" class="slide level1"> <h1>Motivation</h1> <ul> <li>Evolutionary algorithms cope especially well with these problem domains <figure class="" style=""><img src="../arbeit/img/Evo_overview.png" style=""></img><figcaption>Example of the use of evolutionary algorithms in automotive design</figcaption></figure></li> <li>But formulation can be tricky</li> </ul> </section> <section id="motivation-1" class="slide level1"> <h1>Motivation</h1> <ul> <li>Problems tend to be very complex <ul> <li>i.e. a surface with <span class="math inline">\(n\)</span> vertices has <span class="math inline">\(3\cdot n\)</span> Degrees of Freedom (DoF).</li> </ul></li> <li>Need for a small-dimensional representation that manipulates the high-dimensional problem-space.</li> <li>We concentrate on smooth deformations (<span class="math inline">\(C^3\)</span>-continuous)</li> <li>But what representation is good?</li> </ul> </section> <section id="what-representation-is-good" class="slide level1"> <h1>What representation is good?</h1> <ul> <li>In biological evolution this measure is called <em>evolvability</em>. <ul> <li>no consensus on definition</li> <li>meaning varies from context to context</li> <li>measurable?</li> </ul></li> <li>Measure depends on representation as well.</li> </ul> </section> <section id="rbf-and-ffd" class="slide level1"> <h1>RBF and FFD</h1> <ul> <li>Andreas Richter uses Radial Basis Functions (RBF) to smoothly deform meshes</li> </ul> <p><figure class="" style=""><img src="../arbeit/img/deformations.png" style=""></img><figcaption>Example of RBF–based deformation and FFD targeting the same mesh.</figcaption></figure></p> </section> <section id="rbf-and-ffd-1" class="slide level1"> <h1>RBF and FFD</h1> <ul> <li>My master thesis transferred his idea to Freeform-Deformation (FFD) <ul> <li>same setup</li> <li>same measurements</li> <li>same results?</li> </ul></li> </ul> <p><figure class="" style=""><img src="../arbeit/img/deformations.png" style=""></img><figcaption>Example of RBF–based deformation and FFD targeting the same mesh.</figcaption></figure></p> </section> <section id="outline" class="slide level1"> <h1>Outline</h1> <ul> <li><strong>What is FFD?</strong></li> <li>What is evolutionary optimization?</li> <li>How to measure evolvability?</li> <li>Scenarios</li> <li>Results</li> </ul> </section> <section id="what-is-ffd" class="slide level1"> <h1>What is FFD?</h1> <ul> <li>Create a function <span class="math inline">\(s : [0,1[^d \mapsto \mathbb{R}^d\)</span> that is parametrized by some special control–points <span class="math inline">\(p_i\)</span> with coefficient functions <span class="math inline">\(a_i(u)\)</span>: <span class="math display">\[ s(\vec{u}) = \sum_i a_i(\vec{u}) \vec{p_i} \]</span></li> <li>All points inside the convex hull of <span class="math inline">\(\vec{p_i}\)</span> accessed by the right <span class="math inline">\(u \in [0,1[^d\)</span>.</li> </ul> <p><figure class="" style=""><img src="../arbeit/img/B-Splines.png" style=""></img><figcaption>Example of a parametrization of a line with corresponding deformation to generate a deformed objet</figcaption></figure></p> </section> <section id="definition-b-splines" class="slide level1"> <h1>Definition B-Splines</h1> <ul> <li>The coefficient functions <span class="math inline">\(a_i(u)\)</span> in <span class="math inline">\(s(\vec{u}) = \sum_i a_i(\vec{u}) \vec{p_i}\)</span> are different for each control-point</li> <li>Given a degree <span class="math inline">\(d\)</span> and position <span class="math inline">\(\tau_i\)</span> for the <span class="math inline">\(i\)</span>th control-point <span class="math inline">\(p_i\)</span> we define <span class="math display">\[\begin{equation} N_{i,0,\tau}(u) = \begin{cases} 1, & u \in [\tau_i, \tau_{i+1}[ \\ 0, & \mbox{otherwise} \end{cases} \end{equation}\]</span> and <span class="math display">\[\begin{equation} \label{eqn:ffd1d2} N_{i,d,\tau}(u) = \frac{u-\tau_i}{\tau_{i+d}} N_{i,d-1,\tau}(u) + \frac{\tau_{i+d+1} - u}{\tau_{i+d+1}-\tau_{i+1}} N_{i+1,d-1,\tau}(u) \end{equation}\]</span></li> <li>The derivatives of these coefficients are also easy to compute: <span class="math display">\[\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)\]</span></li> </ul> </section> <section id="properties-of-b-splines" class="slide level1"> <h1>Properties of B-Splines</h1> <ul> <li>Coefficients vanish after <span class="math inline">\(d\)</span> differentiations</li> <li>Coefficients are continuous with respect to <span class="math inline">\(u\)</span></li> <li>A change in prototypes only deforms the mapping locally<br /> (between <span class="math inline">\(p_i\)</span> to <span class="math inline">\(p_{i+d+1}\)</span>)</li> </ul> <p><figure class="" style=""><img src="../arbeit/img/unity.png" style=""></img><figcaption>Example of Basis-Functions for degree <span class="math inline">\(2\)</span>. [Brunet, 2010]<br /> Note, that Brunet starts his index at <span class="math inline">\(-d\)</span> opposed to our definition, where we start at <span class="math inline">\(0\)</span>.</figcaption></figure></p> </section> <section id="definition-ffd" class="slide level1"> <h1>Definition FFD</h1> <ul> <li>FFD is a space-deformation resulting based on the underlying B-Splines</li> <li>Coefficients of space-mapping <span class="math inline">\(s(u) = \sum_j a_j(u) p_j\)</span> for an initial vertex <span class="math inline">\(v_i\)</span> are constant</li> <li>Set <span class="math inline">\(u_{i,j}~:=~N_{j,d,\tau}\)</span> for each <span class="math inline">\(v_i\)</span> and <span class="math inline">\(p_j\)</span> to get the projection: <span class="math display">\[ v_i = \sum_j u_{i,j} \cdot p_j = \vec{u}_i^{T} \vec{p} \]</span> or written with matrices: <span class="math display">\[ \vec{v} = \vec{U} \vec{p} \]</span></li> <li><span class="math inline">\(\vec{U}\)</span> is called <strong>deformation matrix</strong></li> </ul> </section> <section id="implementation-of-ffd" class="slide level1"> <h1>Implementation of FFD</h1> <ul> <li>As we deal with 3D-Models we have to extend the introduced 1D-version</li> <li>We get one parameter for each dimension: <span class="math inline">\(u,v,w\)</span> instead of <span class="math inline">\(u\)</span></li> <li>Task: Find correct <span class="math inline">\(u,v,w\)</span> for each vertex in our model <ul> <li>We used a gradient-descent (via the gauss-newton algorithm)</li> </ul></li> </ul> </section> <section id="implementation-of-ffd-1" class="slide level1"> <h1>Implementation of FFD</h1> <ul> <li>Given <span class="math inline">\(n,m,o\)</span> control-points in <span class="math inline">\(x,y,z\)</span>–direction each Point inside the convex hull is defined by <span class="math display">\[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}.\]</span></li> <li>Given a target vertex <span class="math inline">\(\vec{p}^*\)</span> and an initial guess <span class="math inline">\(\vec{p}=V(u,v,w)\)</span> we define the error–function for the gradient–descent as: <span class="math display">\[Err(u,v,w,\vec{p}^{*}) = \vec{p}^{*} - V(u,v,w)\]</span></li> </ul> </section> <section id="implementation-of-ffd-2" class="slide level1"> <h1>Implementation of FFD</h1> <ul> <li>Derivation is straightforward <span class="math display">\[ \scriptsize \begin{array}{rl} \displaystyle \frac{\partial Err_x}{\partial u} & p^{*}_x - \displaystyle \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}}_x \\ = & \displaystyle - \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}}_x \end{array} \]</span> yielding a Jacobian:</li> </ul> <p><span class="math display">\[ \scriptsize J(Err(u,v,w)) = \left( \begin{array}{ccc} \frac{\partial Err_x}{\partial u} & \frac{\partial Err_x}{\partial v} & \frac{\partial Err_x}{\partial w} \\ \frac{\partial Err_y}{\partial u} & \frac{\partial Err_y}{\partial v} & \frac{\partial Err_y}{\partial w} \\ \frac{\partial Err_z}{\partial u} & \frac{\partial Err_z}{\partial v} & \frac{\partial Err_z}{\partial w} \end{array} \right) \]</span></p> </section> <section id="implementation-of-ffd-3" class="slide level1"> <h1>Implementation of FFD</h1> <ul> <li>Armed with this we iterate the formula <span class="math display">\[J(Err(u,v,w)) \cdot \Delta \left( \begin{array}{c} u \\ v \\ w \end{array} \right) = -Err(u,v,w)\]</span> using Cramer’s rule for inverting the small Jacobian.</li> <li>Usually terminates after <span class="math inline">\(3\)</span> to <span class="math inline">\(5\)</span> iteration with an <span class="math inline">\(\epsilon := \vec{p^*} - V(u,v,w) < 10^{-4}\)</span></li> <li>self-intersecting grids can invalidate the results <ul> <li>no problem, as these get not generated and contradict some properties we want (like locality)</li> </ul></li> </ul> </section> <section id="outline-1" class="slide level1"> <h1>Outline</h1> <ul> <li>What is FFD?</li> <li><strong>What is evolutionary optimization?</strong></li> <li>How to measure evolvability?</li> <li>Scenarios</li> <li>Results</li> </ul> </section> <section id="what-is-evolutionary-optimization" class="slide level1"> <h1>What is evolutionary optimization?</h1> <div id="section"> <div style="width:50%;float:left"> <pre><code data-noescape data-trim class="" style="">$t := 0$; initialize $P(0) := \{\vec{a}_1(0),\dots,\vec{a}_\mu(0)\} \in I^\mu$; evaluate $F(0) : \{\Phi(x) | x \in P(0)\}$; while($c(F(t)) \neq$ true) { recombine: $P’(t) := r(P(t))$; mutate: $P''(t) := m(P’(t))$; evaluate $F(t) : \{\Phi(x) | x \in P''(t)\}$ select: $P(t + 1) := s(P''(t) \cup Q,\Phi)$; $t := t + 1$; }</code></pre> </div> <div style="width:50%;float:left"> <pre><code data-noescape data-trim class="" style="">$t$: Iteration-step $I$: Set of possible Individuals $P$: Population of Individuals $F$: Fitness of Individuals $Q$: Either set of parents or $\emptyset$ $r(..) : I^\mu \mapsto I^\lambda$ $m(..) : I^\lambda \mapsto I^\lambda$ $s(..) : I^{\lambda + \mu} \mapsto I^\mu$</code></pre> </div> <div style="clear: both"> </div> </div> <ul> <li>Algorithm to model simple inheritance</li> <li>Consists of three main steps <ul> <li>recombination</li> <li>mutation</li> <li>selection</li> </ul></li> <li>An “individual” in our case is the displacement of control-points</li> </ul> </section> <section id="evolutional-loop" class="slide level1"> <h1>Evolutional loop</h1> <ul> <li><strong>Recombination</strong> generates <span class="math inline">\(\lambda\)</span> new individuals based on the characteristics of the <span class="math inline">\(\mu\)</span> parents. <ul> <li>This makes sure that the next guess is close to the old guess.</li> </ul></li> <li><strong>Mutation</strong> introduces new effects that cannot be produced by mere recombination of the parents. <ul> <li>Typically these are minor defects to individual members of the population i.e. through added noise</li> </ul></li> <li><strong>Selection</strong> selects <span class="math inline">\(\mu\)</span> individuals from the children (and optionally the parents) using a <em>fitness–function</em> <span class="math inline">\(\Phi\)</span>. <ul> <li>Fitness could mean low error, good improvement, etc.</li> <li>Fitness not solely determines who survives, there are many possibilities</li> </ul></li> </ul> </section> <section id="outline-2" class="slide level1"> <h1>Outline</h1> <ul> <li>What is FFD?</li> <li>What is evolutionary optimization?</li> <li><strong>How to measure evolvability?</strong></li> <li>Scenarios</li> <li>Results</li> </ul> </section> <section id="how-to-measure-evolvability" class="slide level1"> <h1>How to measure evolvability?</h1> <ul> <li>Different (conflicting) optimization targets <ul> <li>convergence speed?</li> <li>convergence quality?</li> </ul></li> <li>As <span class="math inline">\(\vec{v} = \vec{U}\vec{p}\)</span> is linear, we can also look at <span class="math inline">\(\Delta \vec{v} = \vec{U}\, \Delta \vec{p}\)</span> <ul> <li>We only change <span class="math inline">\(\Delta \vec{p}\)</span>, so evolvability should only use <span class="math inline">\(\vec{U}\)</span> for predictions</li> </ul></li> </ul> </section> <section id="evolvability-criteria" class="slide level1"> <h1>Evolvability criteria</h1> <ul> <li><strong>Variability</strong> <ul> <li>roughly: “How many actual Degrees of Freedom exist?”</li> <li>Defined by <span class="math display">\[\mathrm{variability}(\vec{U}) := \frac{\mathrm{rank}(\vec{U})}{n} \in [0..1]\]</span></li> <li>in FFD this is <span class="math inline">\(1/\#\textrm{CP}\)</span> for the number of control-points used for parametrization</li> </ul></li> </ul> </section> <section id="evolvability-criteria-1" class="slide level1"> <h1>Evolvability criteria</h1> <ul> <li><strong>Regularity</strong> <ul> <li>roughly: “How numerically stable is the optimization?”</li> <li>Defined by <span class="math display">\[\mathrm{regularity}(\vec{U}) := \frac{1}{\kappa(\vec{U})} = \frac{\sigma_{min}}{\sigma_{max}} \in [0..1]\]</span> with <span class="math inline">\(\sigma_{min/max}\)</span> being the least/greatest right singular value.</li> <li>high, when <span class="math inline">\(\|\vec{Up}\| \propto \|\vec{p}\|\)</span></li> </ul></li> </ul> </section> <section id="evolvability-criteria-2" class="slide level1"> <h1>Evolvability criteria</h1> <ul> <li><strong>Improvement Potential</strong> <ul> <li>roughly: “How good can the best fit become?”</li> <li>Defined by <span class="math display">\[\mathrm{potential}(\vec{U}) := 1 - \|(\vec{1} - \vec{UU}^+)\vec{G}\|^2_F\]</span> with a unit-normed guessed gradient <span class="math inline">\(\vec{G}\)</span></li> </ul></li> </ul> </section> <section id="outline-3" class="slide level1"> <h1>Outline</h1> <ul> <li>What is FFD?</li> <li>What is evolutionary optimization?</li> <li>How to measure evolvability?</li> <li><strong>Scenarios</strong></li> <li>Results</li> </ul> </section> <section id="scenarios" class="slide level1"> <h1>Scenarios</h1> <ul> <li>2 Testing Scenarios</li> <li>1-dimensional fit <ul> <li><span class="math inline">\(xy\)</span>-plane to <span class="math inline">\(xyz\)</span>-model, where only the <span class="math inline">\(z\)</span>-coordinate changes</li> <li>can be solved analytically with known global optimum</li> </ul></li> <li>3-dimensional fit <ul> <li>fit a parametrized sphere into a face</li> <li>cannot be solved analytically</li> <li>number of vertices differ between models</li> </ul></li> </ul> </section> <section id="d-scenario" class="slide level1"> <h1>1D-Scenario</h1> <p><figure class="" style=""><img src="../arbeit/img/example1d_grid.png" style=""></img><figcaption>Left: A regular <span class="math inline">\(7 \times 4\)</span>–grid<br />Right: The same grid after a random distortion to generate a testcase.</figcaption></figure></p> <p><figure class="" style="width:70%;"><img src="../arbeit/img/1dtarget.png" style="width:70%;"></img><figcaption>The target–shape for our 1–dimensional optimization–scenario including a wireframe–overlay of the vertices.</figcaption></figure></p> </section> <section id="d-scenarios" class="slide level1"> <h1>3D-Scenarios</h1> <p><figure class="" style=""><img src="../arbeit/img/3dtarget.png" style=""></img><figcaption>Left: The sphere we start from with 10 807 vertices<br />Right: The face we want to deform the sphere into with 12 024 vertices.</figcaption></figure></p> </section> <section id="outline-4" class="slide level1"> <h1>Outline</h1> <ul> <li>What is FFD?</li> <li>What is evolutionary optimization?</li> <li>How to measure evolvability?</li> <li>Scenarios</li> <li><strong>Results</strong></li> </ul> </section> <section id="variability-1d" class="slide level1"> <h1>Variability 1D</h1> <ul> <li>Should measure Degrees of Freedom and thus quality</li> </ul> <p><figure class="" style=""><img src="../arbeit/img/evolution1d/variability_boxplot.png" style=""></img><figcaption>The squared error for the various grids we examined.<br /> Note that <span class="math inline">\(7 \times 4\)</span> and <span class="math inline">\(4 \times 7\)</span> have the same number of control–points.</figcaption></figure></p> <ul> <li><span class="math inline">\(5 \times 5\)</span>, <span class="math inline">\(7 \times 7\)</span> and <span class="math inline">\(10 \times 10\)</span> have <em>very strong</em> correlation (<span class="math inline">\(-r_S = 0.94, p = 0\)</span>) between the <em>variability</em> and the evolutionary error.</li> </ul> </section> <section id="variability-3d" class="slide level1"> <h1>Variability 3D</h1> <ul> <li>Should measure Degrees of Freedom and thus quality</li> </ul> <p><figure class="" style=""><img src="../arbeit/img/evolution3d/variability_boxplot.png" style=""></img><figcaption>The fitting error for the various grids we examined.<br />Note that the number of control–points is a product of the resolution, so <span class="math inline">\(X \times 4 \times 4\)</span> and <span class="math inline">\(4 \times 4 \times X\)</span> have the same number of control–points.</figcaption></figure></p> <ul> <li><span class="math inline">\(4 \times 4 \times 4\)</span>, <span class="math inline">\(5 \times 5 \times 5\)</span> and <span class="math inline">\(6 \times 6 \times 6\)</span> have <em>very strong</em> correlation (<span class="math inline">\(-r_S = 0.91, p = 0\)</span>) between the <em>variability</em> and the evolutionary error.</li> </ul> </section> <section id="varying-variability" class="slide level1"> <h1>Varying Variability</h1> <div id="section-1"> <div style="width:50%;float:left"> <p><figure class="" style=""><img src="../arbeit/img/enoughCP.png" style=""></img><figcaption>A high resolution (<span class="math inline">\(10 \times 10\)</span>) of control–points over a circle. Yellow/green points contribute to the parametrization, red points don’t.<br />An Example–point (blue) is solely determined by the position of the green control–points.</figcaption></figure></p> </div> <div style="width:50%;float:left"> <p><figure class="" style=""><img src="../arbeit/img/evolution3d/variability2_boxplot.png" style=""></img><figcaption>Histogram of ranks of various <span class="math inline">\(10 \times 10 \times 10\)</span> grids with <span class="math inline">\(1000\)</span> control–points each showing in this case how many control–points are actually used in the calculations.</figcaption></figure></p> </div> <div style="clear: both"> </div> </div> </section> <section id="regularity-1d" class="slide level1"> <h1>Regularity 1D</h1> <ul> <li>Should measure convergence speed</li> </ul> <p><figure class="" style="width:70%;"><img src="../arbeit/img/evolution1d/55_to_1010_steps.png" style="width:70%;"></img><figcaption>Left: <em>Improvement potential</em> against number of iterations until convergence<br />Right: <em>Regularity</em> against number of iterations until convergence<br />Coloured by their grid–resolution, both with a linear fit over the whole dataset.</figcaption></figure></p> <ul> <li>Not in our scenarios - maybe due to the fact that a better solution simply takes longer to converge, thus dominating.</li> </ul> </section> <section id="regularity-3d" class="slide level1"> <h1>Regularity 3D</h1> <ul> <li>Should measure convergence speed</li> </ul> <p><figure class="" style="width:70%;"><img src="../arbeit/img/evolution3d/regularity_montage.png" style="width:70%;"></img><figcaption>Plots of <em>regularity</em> against number of iterations for various scenarios together with a linear fit to indicate trends.</figcaption></figure></p> <ul> <li>Only <em>very weak</em> correlation</li> <li>Point that contributes the worst dominates regularity by lowering the least right singular value towards 0.</li> </ul> </section> <section id="improvement-potential-in-1d" class="slide level1"> <h1>Improvement Potential in 1D</h1> <ul> <li>Should measure expected quality given a gradient</li> </ul> <p><figure class="" style="width:70%;"><img src="../arbeit/img/evolution1d/55_to_1010_improvement-vs-evo-error.png" style="width:70%;"></img><figcaption><em>Improvement potential</em> plotted against the error yielded by the evolutionary optimization for different grid–resolutions</figcaption></figure></p> <ul> <li><em>very strong</em> correlation of <span class="math inline">\(- r_S = 1.0, p = 0\)</span>.</li> <li>Even with a distorted gradient</li> </ul> </section> <section id="improvement-potential-in-3d" class="slide level1"> <h1>Improvement Potential in 3D</h1> <ul> <li>Should measure expected quality given a gradient</li> </ul> <p><figure class="" style="width:70%;"><img src="../arbeit/img/evolution3d/improvement_montage.png" style="width:70%;"></img><figcaption>Plots of <em>improvement potential</em> against error given by our <em>fitness–function</em> after convergence together with a linear fit of each of the plotted data to indicate trends.</figcaption></figure></p> <ul> <li><em>weak</em> to <em>moderate</em> correlation within each group.</li> </ul> </section> <section id="summary" class="slide level1"> <h1>Summary</h1> <ul> <li><em>Variability</em> and <em>Improvement Potential</em> are good measurements in our cases</li> <li><em>Regularity</em> does not work well because of small singular right values <ul> <li>But optimizing for regularity <em>could</em> still lead to a better grid-setup (not shown, but likely)</li> <li>Effect can be dominated by other factors (i.e. better solutions just take longer)</li> </ul></li> </ul> </section> <section id="outlook-further-research" class="slide level1"> <h1>Outlook / Further research</h1> <ul> <li>Only focused on FFD, but will DM-FFD perform better? <ul> <li>for RBF the indirect manipulation also performed worse than the direct one</li> </ul></li> <li>Do grids with high regularity indeed perform better?</li> </ul> </section> <section id="thank-you" class="slide level1"> <h1>Thank you</h1> <p>Any questions?</p> </section> </div> </div> <script src="./template/revealjs/lib/js/head.min.js"></script> <script src="./template/revealjs/js/reveal.js"></script> <script> // More info https://github.com/hakimel/reveal.js#configuration Reveal.initialize({ // reveal settings controls: false, progress: false, slideNumber: true, history: true, center: false, transition: 'none', viewDistance: 2, // otherwise videos start early width: 1280, height: 1024, minScale: 0.2, maxScale: 5, // if this threshold is reached, the chalkboard drawing will be wrongly positioned. hence large threshold! // use local mathjax installation math: { mathjax: './template/mathjax/MathJax.js', config: 'TeX-AMS_HTML-full', extensions: ["content-mathml.js"] }, // setup chalkboard chalkboard: { src: "presentation.json", readOnly: false, theme: "chalkboard", color: [ 'rgba(255,0,0,1)', 'rgba(255,255,255,1)' ], background: [ 'rgba(0,0,0,0)' , './template/my-chalkboard/img/blackboard.png' ], pen: [ './template/my-chalkboard/img/boardmarker.png', './template/my-chalkboard/img/chalk.png' ], }, // setup reveal-menu menu: { side: 'right', numbers: false, titleSelector: 'h1', hideMissingTitles: false, markers: false, custom: false, themes: false, transitions: false, openButton: false, openSlideNumber: true, keyboard: true }, // keyboard shortcuts keyboard: { 40: function() { Reveal.next(); }, // up: next slide 38: function() { Reveal.prev(); }, // down: prev slide 67: function() { RevealChalkboard.toggleNotesCanvas() }, // c: draw on slides 84: function() { RevealChalkboard.toggleChalkboard() }, // t: draw on blackboard 69: function() { RevealChalkboard.toggleSponge() }, // e: toggle eraser 8: function() { RevealChalkboard.clear() }, // BACKSPACE: clear chalkboard 46: function() { RevealChalkboard.reset() }, // DELETE: reset chalkboard 68: function() { RevealChalkboard.download() }, // d: downlad chalkboard drawing }, // load plugins dependencies: [ { src: './template/revealjs/plugin/math/math.js' }, { src: './template/revealjs/plugin/notes/notes.js', async: true }, /*{ src: './template/revealjs/plugin/highlight/highlight.js', async: true, callback: function() { var code_blocks = document.querySelectorAll('code'); for( var i = 0, len = code_blocks.length; i < len; i++ ) hljs.highlightBlock(code_blocks[i]); }},*/ { src: './template/revealjs/plugin/menu/menu.js' }, { src: './template/my-chalkboard/chalkboard.js' }, // do not load this async ('ready' event is missing, print wont work) { src: './template/my-zoom/zoom.js', async: true }, ] }); </script> </body> </html>