chapter 3 'complete'.
This commit is contained in:
parent
294cb4c501
commit
0a2e779181
BIN
arbeit/img/enoughCP.png
Normal file
BIN
arbeit/img/enoughCP.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 55 KiB |
676
arbeit/img/enoughCP.svg
Normal file
676
arbeit/img/enoughCP.svg
Normal file
@ -0,0 +1,676 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
width="94.223373mm"
|
||||||
|
height="91.639961mm"
|
||||||
|
viewBox="0 0 333.86235 324.70852"
|
||||||
|
id="svg2"
|
||||||
|
version="1.1"
|
||||||
|
inkscape:version="0.91 r13725"
|
||||||
|
sodipodi:docname="enoughCP.svg">
|
||||||
|
<defs
|
||||||
|
id="defs4" />
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="base"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:zoom="1.979899"
|
||||||
|
inkscape:cx="128.58458"
|
||||||
|
inkscape:cy="179.18795"
|
||||||
|
inkscape:document-units="px"
|
||||||
|
inkscape:current-layer="layer1"
|
||||||
|
showgrid="false"
|
||||||
|
inkscape:snap-object-midpoints="true"
|
||||||
|
inkscape:snap-smooth-nodes="false"
|
||||||
|
inkscape:object-paths="true"
|
||||||
|
fit-margin-top="0"
|
||||||
|
fit-margin-left="0"
|
||||||
|
fit-margin-right="0"
|
||||||
|
fit-margin-bottom="0"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1141"
|
||||||
|
inkscape:window-x="1680"
|
||||||
|
inkscape:window-y="0"
|
||||||
|
inkscape:window-maximized="1" />
|
||||||
|
<metadata
|
||||||
|
id="metadata7">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
<dc:title></dc:title>
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<g
|
||||||
|
inkscape:label="Layer 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1"
|
||||||
|
transform="translate(-218.18947,-467.98862)">
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:none;fill-opacity:1;stroke:#000080;stroke-width:0.98587084"
|
||||||
|
id="path4543"
|
||||||
|
cx="385.37317"
|
||||||
|
cy="632.13879"
|
||||||
|
r="158.09593" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138"
|
||||||
|
cx="223.68947"
|
||||||
|
cy="473.48862"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-3"
|
||||||
|
cx="259.56308"
|
||||||
|
cy="473.48862"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-6"
|
||||||
|
cx="295.43668"
|
||||||
|
cy="473.48862"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-7"
|
||||||
|
cx="331.31027"
|
||||||
|
cy="473.48862"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-5"
|
||||||
|
cx="367.18387"
|
||||||
|
cy="473.48862"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-35"
|
||||||
|
cx="403.05746"
|
||||||
|
cy="473.48862"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-62"
|
||||||
|
cx="438.93106"
|
||||||
|
cy="473.48862"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-9"
|
||||||
|
cx="474.80466"
|
||||||
|
cy="473.48862"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-1"
|
||||||
|
cx="510.67825"
|
||||||
|
cy="473.48862"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-2"
|
||||||
|
cx="546.55182"
|
||||||
|
cy="473.48862"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-0"
|
||||||
|
cx="223.68947"
|
||||||
|
cy="508.34512"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-3-9"
|
||||||
|
cx="259.56308"
|
||||||
|
cy="508.34512"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-6-3"
|
||||||
|
cx="295.43668"
|
||||||
|
cy="508.34512"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-7-6"
|
||||||
|
cx="331.31027"
|
||||||
|
cy="508.34512"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-5-0"
|
||||||
|
cx="367.18387"
|
||||||
|
cy="508.34512"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-35-6"
|
||||||
|
cx="403.05746"
|
||||||
|
cy="508.34512"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-62-2"
|
||||||
|
cx="438.93106"
|
||||||
|
cy="508.34512"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-9-6"
|
||||||
|
cx="474.80466"
|
||||||
|
cy="508.34512"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-1-1"
|
||||||
|
cx="510.67825"
|
||||||
|
cy="508.34512"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-2-8"
|
||||||
|
cx="546.55182"
|
||||||
|
cy="508.34512"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-20"
|
||||||
|
cx="223.68947"
|
||||||
|
cy="578.05811"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-3-2"
|
||||||
|
cx="259.56308"
|
||||||
|
cy="578.05811"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-6-37"
|
||||||
|
cx="295.43668"
|
||||||
|
cy="578.05811"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-7-5"
|
||||||
|
cx="331.31027"
|
||||||
|
cy="578.05811"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-5-9"
|
||||||
|
cx="367.18387"
|
||||||
|
cy="578.05811"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-35-2"
|
||||||
|
cx="403.05746"
|
||||||
|
cy="578.05811"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-62-28"
|
||||||
|
cx="438.93106"
|
||||||
|
cy="578.05811"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-9-9"
|
||||||
|
cx="474.80466"
|
||||||
|
cy="578.05811"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-1-7"
|
||||||
|
cx="510.67825"
|
||||||
|
cy="578.05811"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-2-3"
|
||||||
|
cx="546.55182"
|
||||||
|
cy="578.05811"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-12"
|
||||||
|
cx="223.68947"
|
||||||
|
cy="612.91461"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-3-93"
|
||||||
|
cx="259.56308"
|
||||||
|
cy="612.91461"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-6-1"
|
||||||
|
cx="295.43668"
|
||||||
|
cy="612.91461"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-7-9"
|
||||||
|
cx="331.31027"
|
||||||
|
cy="612.91461"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-5-4"
|
||||||
|
cx="367.18387"
|
||||||
|
cy="612.91461"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-35-7"
|
||||||
|
cx="403.05746"
|
||||||
|
cy="612.91461"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-62-8"
|
||||||
|
cx="438.93106"
|
||||||
|
cy="612.91461"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-9-4"
|
||||||
|
cx="474.80466"
|
||||||
|
cy="612.91461"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-1-5"
|
||||||
|
cx="510.67825"
|
||||||
|
cy="612.91461"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-2-0"
|
||||||
|
cx="546.55182"
|
||||||
|
cy="612.91461"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-61"
|
||||||
|
cx="223.68947"
|
||||||
|
cy="647.77112"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-3-0"
|
||||||
|
cx="259.56308"
|
||||||
|
cy="647.77112"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-6-6"
|
||||||
|
cx="295.43668"
|
||||||
|
cy="647.77112"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-7-3"
|
||||||
|
cx="331.31027"
|
||||||
|
cy="647.77112"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-5-2"
|
||||||
|
cx="367.18387"
|
||||||
|
cy="647.77112"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-35-0"
|
||||||
|
cx="403.05746"
|
||||||
|
cy="647.77112"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-62-6"
|
||||||
|
cx="438.93106"
|
||||||
|
cy="647.77112"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-9-1"
|
||||||
|
cx="474.80466"
|
||||||
|
cy="647.77112"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-1-55"
|
||||||
|
cx="510.67825"
|
||||||
|
cy="647.77112"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-2-4"
|
||||||
|
cx="546.55182"
|
||||||
|
cy="647.77112"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-56"
|
||||||
|
cx="223.68947"
|
||||||
|
cy="682.62762"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-3-937"
|
||||||
|
cx="259.56308"
|
||||||
|
cy="682.62762"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-6-4"
|
||||||
|
cx="295.43668"
|
||||||
|
cy="682.62762"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-7-52"
|
||||||
|
cx="331.31027"
|
||||||
|
cy="682.62762"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-5-5"
|
||||||
|
cx="367.18387"
|
||||||
|
cy="682.62762"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-35-4"
|
||||||
|
cx="403.05746"
|
||||||
|
cy="682.62762"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#aad400;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-62-7"
|
||||||
|
cx="438.93106"
|
||||||
|
cy="682.62762"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#aad400;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-9-44"
|
||||||
|
cx="474.80466"
|
||||||
|
cy="682.62762"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#aad400;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-1-3"
|
||||||
|
cx="510.67825"
|
||||||
|
cy="682.62762"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#aad400;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-2-07"
|
||||||
|
cx="546.55182"
|
||||||
|
cy="682.62762"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-68"
|
||||||
|
cx="223.68947"
|
||||||
|
cy="717.48413"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-3-8"
|
||||||
|
cx="259.56308"
|
||||||
|
cy="717.48413"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-6-43"
|
||||||
|
cx="295.43668"
|
||||||
|
cy="717.48413"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-7-1"
|
||||||
|
cx="331.31027"
|
||||||
|
cy="717.48413"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-5-49"
|
||||||
|
cx="367.18387"
|
||||||
|
cy="717.48413"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-35-20"
|
||||||
|
cx="403.05746"
|
||||||
|
cy="717.48413"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#aad400;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-62-68"
|
||||||
|
cx="438.93106"
|
||||||
|
cy="717.48413"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#aad400;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-9-92"
|
||||||
|
cx="474.80466"
|
||||||
|
cy="717.48413"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#aad400;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-1-6"
|
||||||
|
cx="510.67825"
|
||||||
|
cy="717.48413"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#aad400;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-2-6"
|
||||||
|
cx="546.55182"
|
||||||
|
cy="717.48413"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-95"
|
||||||
|
cx="223.68947"
|
||||||
|
cy="752.34064"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-3-04"
|
||||||
|
cx="259.56308"
|
||||||
|
cy="752.34064"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-6-8"
|
||||||
|
cx="295.43668"
|
||||||
|
cy="752.34064"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-7-7"
|
||||||
|
cx="331.31027"
|
||||||
|
cy="752.34064"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-5-1"
|
||||||
|
cx="367.18387"
|
||||||
|
cy="752.34064"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-35-72"
|
||||||
|
cx="403.05746"
|
||||||
|
cy="752.34064"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#aad400;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-62-72"
|
||||||
|
cx="438.93106"
|
||||||
|
cy="752.34064"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#aad400;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-9-2"
|
||||||
|
cx="474.80466"
|
||||||
|
cy="752.34064"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#aad400;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-1-61"
|
||||||
|
cx="510.67825"
|
||||||
|
cy="752.34064"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#aad400;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-2-06"
|
||||||
|
cx="546.55182"
|
||||||
|
cy="752.34064"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-59"
|
||||||
|
cx="223.68947"
|
||||||
|
cy="787.19714"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-3-4"
|
||||||
|
cx="259.56308"
|
||||||
|
cy="787.19714"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-6-9"
|
||||||
|
cx="295.43668"
|
||||||
|
cy="787.19714"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-7-0"
|
||||||
|
cx="331.31027"
|
||||||
|
cy="787.19714"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-5-91"
|
||||||
|
cx="367.18387"
|
||||||
|
cy="787.19714"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-35-77"
|
||||||
|
cx="403.05746"
|
||||||
|
cy="787.19714"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#aad400;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-62-1"
|
||||||
|
cx="438.93106"
|
||||||
|
cy="787.19714"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#aad400;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-9-15"
|
||||||
|
cx="474.80466"
|
||||||
|
cy="787.19714"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#aad400;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-1-9"
|
||||||
|
cx="510.67825"
|
||||||
|
cy="787.19714"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#aad400;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-2-7"
|
||||||
|
cx="546.55182"
|
||||||
|
cy="787.19714"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-36"
|
||||||
|
cx="223.68947"
|
||||||
|
cy="543.2016"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-3-5"
|
||||||
|
cx="259.56308"
|
||||||
|
cy="543.2016"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-6-63"
|
||||||
|
cx="295.43668"
|
||||||
|
cy="543.2016"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-7-94"
|
||||||
|
cx="331.31027"
|
||||||
|
cy="543.2016"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-5-8"
|
||||||
|
cx="367.18387"
|
||||||
|
cy="543.2016"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-35-1"
|
||||||
|
cx="403.05746"
|
||||||
|
cy="543.2016"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-62-29"
|
||||||
|
cx="438.93106"
|
||||||
|
cy="543.2016"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-9-3"
|
||||||
|
cx="474.80466"
|
||||||
|
cy="543.2016"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-1-90"
|
||||||
|
cx="510.67825"
|
||||||
|
cy="543.2016"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-2-88"
|
||||||
|
cx="546.55182"
|
||||||
|
cy="543.2016"
|
||||||
|
r="5" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#0000ff;fill-opacity:1;stroke:#000000"
|
||||||
|
id="path4138-35-7-5"
|
||||||
|
cx="504.78043"
|
||||||
|
cy="735.75458"
|
||||||
|
r="5" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 18 KiB |
90
arbeit/ma.md
90
arbeit/ma.md
@ -35,7 +35,7 @@ informatics (i.e. layouting of circuit boards or stacking of 3D--objects).
|
|||||||
Moreover these are typically not static environments but requirements shift over
|
Moreover these are typically not static environments but requirements shift over
|
||||||
time or from case to case.
|
time or from case to case.
|
||||||
|
|
||||||
Evolutional algorithms cope especially well with these problem domains while
|
Evolutionary algorithms cope especially well with these problem domains while
|
||||||
addressing all the issues at hand\cite{minai2006complex}. One of the main
|
addressing all the issues at hand\cite{minai2006complex}. One of the main
|
||||||
concerns in these algorithms is the formulation of the problems in terms of a
|
concerns in these algorithms is the formulation of the problems in terms of a
|
||||||
genome and a fitness function. While one can typically use an arbitrary
|
genome and a fitness function. While one can typically use an arbitrary
|
||||||
@ -72,7 +72,7 @@ First we introduce different topics in isolation in Chapter \ref{sec:back}. We
|
|||||||
take an abstract look at the definition of \ac{FFD} for a one--dimensional line
|
take an abstract look at the definition of \ac{FFD} for a one--dimensional line
|
||||||
(in \ref{sec:back:ffd}) and discuss why this is a sensible deformation function
|
(in \ref{sec:back:ffd}) and discuss why this is a sensible deformation function
|
||||||
(in \ref{sec:back:ffdgood}).
|
(in \ref{sec:back:ffdgood}).
|
||||||
Then we establish some background--knowledge of evolutional algorithms (in
|
Then we establish some background--knowledge of evolutionary algorithms (in
|
||||||
\ref{sec:back:evo}) and why this is useful in our domain (in
|
\ref{sec:back:evo}) and why this is useful in our domain (in
|
||||||
\ref{sec:back:evogood}).
|
\ref{sec:back:evogood}).
|
||||||
In a third step we take a look at the definition of the different evolvability
|
In a third step we take a look at the definition of the different evolvability
|
||||||
@ -173,15 +173,15 @@ on the deformation itself.
|
|||||||
All in all \ac{FFD} and \ac{DM--FFD} are still good ways to deform a high--polygon
|
All in all \ac{FFD} and \ac{DM--FFD} are still good ways to deform a high--polygon
|
||||||
mesh albeit the downsides.
|
mesh albeit the downsides.
|
||||||
|
|
||||||
## What is evolutional optimization?
|
## What is evolutionary optimization?
|
||||||
\label{sec:back:evo}
|
\label{sec:back:evo}
|
||||||
|
|
||||||
In this thesis we are using an evolutional optimization strategy to solve the
|
In this thesis we are using an evolutionary optimization strategy to solve the
|
||||||
problem of finding the best parameters for our deformation. This approach,
|
problem of finding the best parameters for our deformation. This approach,
|
||||||
however, is very generic and we introduce it here in a broader sense.
|
however, is very generic and we introduce it here in a broader sense.
|
||||||
|
|
||||||
\begin{algorithm}
|
\begin{algorithm}
|
||||||
\caption{An outline of evolutional algorithms}
|
\caption{An outline of evolutionary algorithms}
|
||||||
\label{alg:evo}
|
\label{alg:evo}
|
||||||
\begin{algorithmic}
|
\begin{algorithmic}
|
||||||
\STATE t := 0;
|
\STATE t := 0;
|
||||||
@ -197,7 +197,7 @@ however, is very generic and we introduce it here in a broader sense.
|
|||||||
\end{algorithmic}
|
\end{algorithmic}
|
||||||
\end{algorithm}
|
\end{algorithm}
|
||||||
|
|
||||||
The general shape of an evolutional algorithm (adapted from
|
The general shape of an evolutionary algorithm (adapted from
|
||||||
\cite{back1993overview}) is outlined in Algorithm \ref{alg:evo}. Here, $P(t)$
|
\cite{back1993overview}) is outlined in Algorithm \ref{alg:evo}. Here, $P(t)$
|
||||||
denotes the population of parameters in step $t$ of the algorithm. The
|
denotes the population of parameters in step $t$ of the algorithm. The
|
||||||
population contains $\mu$ individuals $a_i$ that fit the shape of the parameters
|
population contains $\mu$ individuals $a_i$ that fit the shape of the parameters
|
||||||
@ -227,16 +227,16 @@ can be changed over time. One can for example start off with a high
|
|||||||
mutation--rate that cools off over time (i.e. by lowering the variance of a
|
mutation--rate that cools off over time (i.e. by lowering the variance of a
|
||||||
gaussian noise).
|
gaussian noise).
|
||||||
|
|
||||||
## Advantages of evolutional algorithms
|
## Advantages of evolutionary algorithms
|
||||||
\label{sec:back:evogood}
|
\label{sec:back:evogood}
|
||||||
|
|
||||||
The main advantage of evolutional algorithms is the ability to find optima of
|
The main advantage of evolutionary algorithms is the ability to find optima of
|
||||||
general functions just with the help of a given fitness--function. With this
|
general functions just with the help of a given fitness--function. With this
|
||||||
most problems of simple gradient--based procedures, which often target the same
|
most problems of simple gradient--based procedures, which often target the same
|
||||||
error--function which measures the fitness, as an evolutional algorithm, but can
|
error--function which measures the fitness, as an evolutionary algorithm, but can
|
||||||
easily get stuck in local optima.
|
easily get stuck in local optima.
|
||||||
|
|
||||||
Components and techniques for evolutional algorithms are specifically known to
|
Components and techniques for evolutionary algorithms are specifically known to
|
||||||
help with different problems arising in the domain of
|
help with different problems arising in the domain of
|
||||||
optimization\cite{weise2012evolutionary}. An overview of the typical problems
|
optimization\cite{weise2012evolutionary}. An overview of the typical problems
|
||||||
are shown in figure \ref{fig:probhard}.
|
are shown in figure \ref{fig:probhard}.
|
||||||
@ -249,20 +249,20 @@ are shown in figure \ref{fig:probhard}.
|
|||||||
|
|
||||||
Most of the advantages stem from the fact that a gradient--based procedure has
|
Most of the advantages stem from the fact that a gradient--based procedure has
|
||||||
only one point of observation from where it evaluates the next steps, whereas an
|
only one point of observation from where it evaluates the next steps, whereas an
|
||||||
evolutional strategy starts with a population of guessed solutions. Because an
|
evolutionary strategy starts with a population of guessed solutions. Because an
|
||||||
evolutional strategy modifies the solution randomly, keeps the best solutions
|
evolutionary strategy modifies the solution randomly, keeps the best solutions
|
||||||
and purges the worst, it can also target multiple different hypothesis at the
|
and purges the worst, it can also target multiple different hypothesis at the
|
||||||
same time where the local optima die out in the face of other, better
|
same time where the local optima die out in the face of other, better
|
||||||
candidates.
|
candidates.
|
||||||
|
|
||||||
If an analytic best solution exists and is easily computable (i.e. because the
|
If an analytic best solution exists and is easily computable (i.e. because the
|
||||||
error--function is convex) an evolutional algorithm is not the right choice.
|
error--function is convex) an evolutionary algorithm is not the right choice.
|
||||||
Although both converge to the same solution, the analytic one is usually faster.
|
Although both converge to the same solution, the analytic one is usually faster.
|
||||||
|
|
||||||
But in reality many problems have no analytic solution, because the problem is
|
But in reality many problems have no analytic solution, because the problem is
|
||||||
either not convex or there are so many parameters that an analytic solution
|
either not convex or there are so many parameters that an analytic solution
|
||||||
(mostly meaning the equivalence to an exhaustive search) is computationally not
|
(mostly meaning the equivalence to an exhaustive search) is computationally not
|
||||||
feasible. Here evolutional optimization has one more advantage as you can at
|
feasible. Here evolutionary optimization has one more advantage as you can at
|
||||||
least get a suboptimal solutions fast, which then refine over time.
|
least get a suboptimal solutions fast, which then refine over time.
|
||||||
|
|
||||||
## Criteria for the evolvability of linear deformations
|
## Criteria for the evolvability of linear deformations
|
||||||
@ -300,9 +300,9 @@ is only performed to map the criterion--range to $[0..1]$, whereas $1$ is the
|
|||||||
optimal value and $0$ is the worst value.
|
optimal value and $0$ is the worst value.
|
||||||
|
|
||||||
This criterion should be characteristic for numeric stability on the on
|
This criterion should be characteristic for numeric stability on the on
|
||||||
hand\cite[chapter 2.7]{golub2012matrix} and for convergence speed of evolutional
|
hand\cite[chapter 2.7]{golub2012matrix} and for convergence speed of
|
||||||
algorithms on the other hand\cite{anrichterEvol} as it is tied to the notion of
|
evolutionary algorithms on the other hand\cite{anrichterEvol} as it is tied to
|
||||||
locality\cite{weise2012evolutionary,thorhauer2014locality}.
|
the notion of locality\cite{weise2012evolutionary,thorhauer2014locality}.
|
||||||
|
|
||||||
### Improvement Potential
|
### Improvement Potential
|
||||||
|
|
||||||
@ -439,17 +439,55 @@ and use Cramers rule for inverting the small Jacobian and solving this system of
|
|||||||
linear equations.
|
linear equations.
|
||||||
|
|
||||||
|
|
||||||
## Parametrisierung sinnvoll?
|
## Deformation Grid
|
||||||
|
|
||||||
- Nachteile von Parametrisierung
|
As mentioned in chapter \ref{sec:back:evo}, the way of choosing the
|
||||||
- wie in kap. \ref{sec:back:evo} zu sehen, ist Parametrisierung
|
representation to map the general problem (mesh--fitting/optimization in our
|
||||||
wichtig\cite{Rothlauf2006}.
|
case) into a parameter-space it very important for the quality and runtime of
|
||||||
- Parametrisierung zwar lokal, aber nicht 1:1
|
evolutionary algorithms\cite{Rothlauf2006}.
|
||||||
- Deformation ist um einen Kontrollpunkt viel direkter zu steuern.
|
|
||||||
- => DM--FFD kann abhelfen, further study.
|
|
||||||
- Schlechte Parametrisierung sorgt dafür, dass CP u.U. nicht zur
|
|
||||||
Parametrisierung verwendet werden.
|
|
||||||
|
|
||||||
|
Because our control--points are arranged in a grid, we can accurately represent
|
||||||
|
each vertex--point inside the grids volume with proper B--Spline--coefficients
|
||||||
|
between $[0,1[$ and --- as a consequence --- we have to embed our object into it
|
||||||
|
(or create constant "dummy"-points outside).
|
||||||
|
|
||||||
|
The great advantage of B--Splines is the locality, direct impact of each
|
||||||
|
control point without having a $1:1$--correlation, and a smooth deformation.
|
||||||
|
While the advantages are great, the issues arise from the problem to decide
|
||||||
|
where to place the control--points and how many.
|
||||||
|
|
||||||
|
One would normally think, that the more control--points you add, the better the
|
||||||
|
result will be, but this is not the case for our B--Splines. Given any point $p$
|
||||||
|
only the $2 \cdot (d-1)$ control--points contribute to the parametrization of
|
||||||
|
that point^[Normally these are $d-1$ to each side, but at the boundaries the
|
||||||
|
number gets increased to the inside to meet the required smoothness].
|
||||||
|
This means, that a high resolution can have many control-points that are not
|
||||||
|
contributing to any point on the surface and are thus completely irrelevant to
|
||||||
|
the solution.
|
||||||
|
|
||||||
|
\begin{figure}[!ht]
|
||||||
|
\begin{center}
|
||||||
|
\includegraphics{img/enoughCP.png}
|
||||||
|
\end{center}
|
||||||
|
\caption{A high resolution ($10 \times 10$) of control--points over a circle.
|
||||||
|
yellow/green points contribute to the parametrization, red points don't.\newline
|
||||||
|
An Example--point (blue) is solely determined by the position of the green
|
||||||
|
control--points.}
|
||||||
|
\label{fig:enoughCP}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
|
||||||
|
We illustrate this phenomenon in figure \ref{fig:enoughCP}, where the four red
|
||||||
|
central points are not relevant for the parametrization of the circle.
|
||||||
|
|
||||||
|
\unsure[inline]{erwähnen, dass man aus $\vec{D}$ einfach die Null--Spalten
|
||||||
|
entfernen kann?}
|
||||||
|
|
||||||
|
For our tests we chose different uniformly sized grids and added gaussian noise
|
||||||
|
onto each control-point^[For the special case of the outer layer we only applied
|
||||||
|
noise away from the object] to simulate different starting-conditions.
|
||||||
|
|
||||||
|
\unsure[inline]{verweis auf DM--FFD?}
|
||||||
|
|
||||||
# Scenarios for testing evolvability criteria using \acf{FFD}
|
# Scenarios for testing evolvability criteria using \acf{FFD}
|
||||||
\label{sec:eval}
|
\label{sec:eval}
|
||||||
|
BIN
arbeit/ma.pdf
BIN
arbeit/ma.pdf
Binary file not shown.
@ -179,7 +179,7 @@ simulation --- or known hard algorithmic problems in informatics
|
|||||||
these are typically not static environments but requirements shift over
|
these are typically not static environments but requirements shift over
|
||||||
time or from case to case.
|
time or from case to case.
|
||||||
|
|
||||||
Evolutional algorithms cope especially well with these problem domains
|
Evolutionary algorithms cope especially well with these problem domains
|
||||||
while addressing all the issues at hand\cite{minai2006complex}. One of
|
while addressing all the issues at hand\cite{minai2006complex}. One of
|
||||||
the main concerns in these algorithms is the formulation of the problems
|
the main concerns in these algorithms is the formulation of the problems
|
||||||
in terms of a genome and a fitness function. While one can typically use
|
in terms of a genome and a fitness function. While one can typically use
|
||||||
@ -220,7 +220,7 @@ First we introduce different topics in isolation in Chapter
|
|||||||
\ref{sec:back}. We take an abstract look at the definition of \ac{FFD}
|
\ref{sec:back}. We take an abstract look at the definition of \ac{FFD}
|
||||||
for a one--dimensional line (in \ref{sec:back:ffd}) and discuss why this
|
for a one--dimensional line (in \ref{sec:back:ffd}) and discuss why this
|
||||||
is a sensible deformation function (in \ref{sec:back:ffdgood}). Then we
|
is a sensible deformation function (in \ref{sec:back:ffdgood}). Then we
|
||||||
establish some background--knowledge of evolutional algorithms (in
|
establish some background--knowledge of evolutionary algorithms (in
|
||||||
\ref{sec:back:evo}) and why this is useful in our domain (in
|
\ref{sec:back:evo}) and why this is useful in our domain (in
|
||||||
\ref{sec:back:evogood}). In a third step we take a look at the
|
\ref{sec:back:evogood}). In a third step we take a look at the
|
||||||
definition of the different evolvability criteria established in
|
definition of the different evolvability criteria established in
|
||||||
@ -328,18 +328,18 @@ major impact on the deformation itself.
|
|||||||
All in all \ac{FFD} and \ac{DM--FFD} are still good ways to deform a
|
All in all \ac{FFD} and \ac{DM--FFD} are still good ways to deform a
|
||||||
high--polygon mesh albeit the downsides.
|
high--polygon mesh albeit the downsides.
|
||||||
|
|
||||||
\section{What is evolutional
|
\section{What is evolutionary
|
||||||
optimization?}\label{what-is-evolutional-optimization}
|
optimization?}\label{what-is-evolutionary-optimization}
|
||||||
|
|
||||||
\label{sec:back:evo}
|
\label{sec:back:evo}
|
||||||
|
|
||||||
In this thesis we are using an evolutional optimization strategy to
|
In this thesis we are using an evolutionary optimization strategy to
|
||||||
solve the problem of finding the best parameters for our deformation.
|
solve the problem of finding the best parameters for our deformation.
|
||||||
This approach, however, is very generic and we introduce it here in a
|
This approach, however, is very generic and we introduce it here in a
|
||||||
broader sense.
|
broader sense.
|
||||||
|
|
||||||
\begin{algorithm}
|
\begin{algorithm}
|
||||||
\caption{An outline of evolutional algorithms}
|
\caption{An outline of evolutionary algorithms}
|
||||||
\label{alg:evo}
|
\label{alg:evo}
|
||||||
\begin{algorithmic}
|
\begin{algorithmic}
|
||||||
\STATE t := 0;
|
\STATE t := 0;
|
||||||
@ -355,7 +355,7 @@ broader sense.
|
|||||||
\end{algorithmic}
|
\end{algorithmic}
|
||||||
\end{algorithm}
|
\end{algorithm}
|
||||||
|
|
||||||
The general shape of an evolutional algorithm (adapted from
|
The general shape of an evolutionary algorithm (adapted from
|
||||||
\cite{back1993overview}) is outlined in Algorithm \ref{alg:evo}. Here,
|
\cite{back1993overview}) is outlined in Algorithm \ref{alg:evo}. Here,
|
||||||
\(P(t)\) denotes the population of parameters in step \(t\) of the
|
\(P(t)\) denotes the population of parameters in step \(t\) of the
|
||||||
algorithm. The population contains \(\mu\) individuals \(a_i\) that fit
|
algorithm. The population contains \(\mu\) individuals \(a_i\) that fit
|
||||||
@ -395,19 +395,19 @@ that can be changed over time. One can for example start off with a high
|
|||||||
mutation--rate that cools off over time (i.e.~by lowering the variance
|
mutation--rate that cools off over time (i.e.~by lowering the variance
|
||||||
of a gaussian noise).
|
of a gaussian noise).
|
||||||
|
|
||||||
\section{Advantages of evolutional
|
\section{Advantages of evolutionary
|
||||||
algorithms}\label{advantages-of-evolutional-algorithms}
|
algorithms}\label{advantages-of-evolutionary-algorithms}
|
||||||
|
|
||||||
\label{sec:back:evogood}
|
\label{sec:back:evogood}
|
||||||
|
|
||||||
The main advantage of evolutional algorithms is the ability to find
|
The main advantage of evolutionary algorithms is the ability to find
|
||||||
optima of general functions just with the help of a given
|
optima of general functions just with the help of a given
|
||||||
fitness--function. With this most problems of simple gradient--based
|
fitness--function. With this most problems of simple gradient--based
|
||||||
procedures, which often target the same error--function which measures
|
procedures, which often target the same error--function which measures
|
||||||
the fitness, as an evolutional algorithm, but can easily get stuck in
|
the fitness, as an evolutionary algorithm, but can easily get stuck in
|
||||||
local optima.
|
local optima.
|
||||||
|
|
||||||
Components and techniques for evolutional algorithms are specifically
|
Components and techniques for evolutionary algorithms are specifically
|
||||||
known to help with different problems arising in the domain of
|
known to help with different problems arising in the domain of
|
||||||
optimization\cite{weise2012evolutionary}. An overview of the typical
|
optimization\cite{weise2012evolutionary}. An overview of the typical
|
||||||
problems are shown in figure \ref{fig:probhard}.
|
problems are shown in figure \ref{fig:probhard}.
|
||||||
@ -420,21 +420,21 @@ problems are shown in figure \ref{fig:probhard}.
|
|||||||
|
|
||||||
Most of the advantages stem from the fact that a gradient--based
|
Most of the advantages stem from the fact that a gradient--based
|
||||||
procedure has only one point of observation from where it evaluates the
|
procedure has only one point of observation from where it evaluates the
|
||||||
next steps, whereas an evolutional strategy starts with a population of
|
next steps, whereas an evolutionary strategy starts with a population of
|
||||||
guessed solutions. Because an evolutional strategy modifies the solution
|
guessed solutions. Because an evolutionary strategy modifies the
|
||||||
randomly, keeps the best solutions and purges the worst, it can also
|
solution randomly, keeps the best solutions and purges the worst, it can
|
||||||
target multiple different hypothesis at the same time where the local
|
also target multiple different hypothesis at the same time where the
|
||||||
optima die out in the face of other, better candidates.
|
local optima die out in the face of other, better candidates.
|
||||||
|
|
||||||
If an analytic best solution exists and is easily computable
|
If an analytic best solution exists and is easily computable
|
||||||
(i.e.~because the error--function is convex) an evolutional algorithm is
|
(i.e.~because the error--function is convex) an evolutionary algorithm
|
||||||
not the right choice. Although both converge to the same solution, the
|
is not the right choice. Although both converge to the same solution,
|
||||||
analytic one is usually faster.
|
the analytic one is usually faster.
|
||||||
|
|
||||||
But in reality many problems have no analytic solution, because the
|
But in reality many problems have no analytic solution, because the
|
||||||
problem is either not convex or there are so many parameters that an
|
problem is either not convex or there are so many parameters that an
|
||||||
analytic solution (mostly meaning the equivalence to an exhaustive
|
analytic solution (mostly meaning the equivalence to an exhaustive
|
||||||
search) is computationally not feasible. Here evolutional optimization
|
search) is computationally not feasible. Here evolutionary optimization
|
||||||
has one more advantage as you can at least get a suboptimal solutions
|
has one more advantage as you can at least get a suboptimal solutions
|
||||||
fast, which then refine over time.
|
fast, which then refine over time.
|
||||||
|
|
||||||
@ -478,7 +478,7 @@ criterion--range to \([0..1]\), whereas \(1\) is the optimal value and
|
|||||||
|
|
||||||
This criterion should be characteristic for numeric stability on the on
|
This criterion should be characteristic for numeric stability on the on
|
||||||
hand\cite[chapter 2.7]{golub2012matrix} and for convergence speed of
|
hand\cite[chapter 2.7]{golub2012matrix} and for convergence speed of
|
||||||
evolutional algorithms on the other hand\cite{anrichterEvol} as it is
|
evolutionary algorithms on the other hand\cite{anrichterEvol} as it is
|
||||||
tied to the notion of
|
tied to the notion of
|
||||||
locality\cite{weise2012evolutionary,thorhauer2014locality}.
|
locality\cite{weise2012evolutionary,thorhauer2014locality}.
|
||||||
|
|
||||||
@ -617,7 +617,55 @@ With the Gauss--Newton algorithm we iterate via the formula
|
|||||||
and use Cramers rule for inverting the small Jacobian and solving this
|
and use Cramers rule for inverting the small Jacobian and solving this
|
||||||
system of linear equations.
|
system of linear equations.
|
||||||
|
|
||||||
\section{Parametrisierung sinnvoll?}\label{parametrisierung-sinnvoll}
|
\section{Deformation Grid}\label{deformation-grid}
|
||||||
|
|
||||||
|
As mentioned in chapter \ref{sec:back:evo}, the way of choosing the
|
||||||
|
representation to map the general problem (mesh--fitting/optimization in
|
||||||
|
our case) into a parameter-space it very important for the quality and
|
||||||
|
runtime of evolutionary algorithms\cite{Rothlauf2006}.
|
||||||
|
|
||||||
|
Because our control--points are arranged in a grid, we can accurately
|
||||||
|
represent each vertex--point inside the grids volume with proper
|
||||||
|
B--Spline--coefficients between \([0,1[\) and --- as a consequence ---
|
||||||
|
we have to embed our object into it (or create constant ``dummy''-points
|
||||||
|
outside).
|
||||||
|
|
||||||
|
The great advantage of B--Splines is the locality, direct impact of each
|
||||||
|
control point without having a \(1:1\)--correlation, and a smooth
|
||||||
|
deformation. While the advantages are great, the issues arise from the
|
||||||
|
problem to decide where to place the control--points and how many.
|
||||||
|
|
||||||
|
One would normally think, that the more control--points you add, the
|
||||||
|
better the result will be, but this is not the case for our B--Splines.
|
||||||
|
Given any point \(p\) only the \(2 \cdot (d-1)\) control--points
|
||||||
|
contribute to the parametrization of that point\footnote{Normally these
|
||||||
|
are \(d-1\) to each side, but at the boundaries the number gets
|
||||||
|
increased to the inside to meet the required smoothness}. This means,
|
||||||
|
that a high resolution can have many control-points that are not
|
||||||
|
contributing to any point on the surface and are thus completely
|
||||||
|
irrelevant to the solution.
|
||||||
|
|
||||||
|
\begin{figure}[!ht]
|
||||||
|
\begin{center}
|
||||||
|
\includegraphics{img/enoughCP.png}
|
||||||
|
\end{center}
|
||||||
|
\caption{A high resolution ($10 \times 10$) of control--points over a circle.
|
||||||
|
yellow/green points contribute to the parametrization, red points don't.\newline
|
||||||
|
An Example--point (blue) is solely determined by the position of the green
|
||||||
|
control--points.}
|
||||||
|
\label{fig:enoughCP}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
We illustrate this phenomenon in figure \ref{fig:enoughCP}, where the
|
||||||
|
central points are not relevant for the parametrization of the circle.
|
||||||
|
|
||||||
|
\unsure[inline]{erwähnen, dass man aus $\vec{D}$ einfach die Null--Spalten
|
||||||
|
entfernen kann?}
|
||||||
|
|
||||||
|
For our tests we chose different uniformly sized grids and added
|
||||||
|
gaussian noise onto each control-point\footnote{For the special case of
|
||||||
|
the outer layer we only applied noise away from the object} to
|
||||||
|
simulate different starting-conditions.
|
||||||
|
|
||||||
\begin{itemize}
|
\begin{itemize}
|
||||||
\tightlist
|
\tightlist
|
||||||
|
Loading…
Reference in New Issue
Block a user