create changelog entry
[debian/openrocket] / core / doc / design / optimization-classes.uxf
1 <?xml version="1.0" encoding="UTF-8" standalone="no"?><umlet_diagram><help_text>// Uncomment the following line to change the fontsize:
2 // fontsize=14
3
4
5 //////////////////////////////////////////////////////////////////////////////////////////////
6 // Welcome to UMLet!
7 //
8 // Double-click on UML elements to add them to the diagram, or to copy them
9 // Edit elements by modifying the text in this panel
10 // Hold Ctrl to select multiple elements
11 // Use Ctrl+mouse to select via lasso
12 //
13 // Use Â± or Ctrl+mouse wheel to zoom
14 // Drag a whole relation at its central square icon
15 //
16 // Press Ctrl+C to copy the whole diagram to the system clipboard (then just paste it to, eg, Word)
17 // Edit the files in the "palettes" directory to create your own element palettes
18 //
19 // Select "Custom Elements &gt; New..." to create new element types
20 //////////////////////////////////////////////////////////////////////////////////////////////
21
22
23 // This text will be stored with each diagram;  use it for notes.</help_text><zoom_level>10</zoom_level><element><type>com.umlet.element.base.Class</type><coordinates><x>680</x><y>280</y><w>240</w><h>40</h></coordinates><panel_attributes>MultidirectionalSearchOptimizer
24 --
25 --</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Class</type><coordinates><x>660</x><y>60</y><w>290</w><h>80</h></coordinates><panel_attributes>&lt;&lt;interface&gt;&gt;
26 FunctionOptimizer
27 /Minimizes a function/
28 --
29 --
30 optimize(Point, OptimizationController)</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>780</x><y>110</y><w>50</w><h>190</h></coordinates><panel_attributes>lt=&lt;&lt;.</panel_attributes><additional_attributes>30;30;30;170</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>1030</x><y>20</y><w>170</w><h>80</h></coordinates><panel_attributes>&lt;&lt;interface&gt;&gt;
31 FunctionCache
32 --
33 --
34 getValue(Point)
35 get/setFunction()</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Class</type><coordinates><x>1030</x><y>140</y><w>170</w><h>100</h></coordinates><panel_attributes>&lt;&lt;interface&gt;&gt;
36 ParallelFunctionCache
37 --
38 --
39 compute(Point)
40 waitFor(Point)
41 abort(Point)</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>1090</x><y>70</y><w>50</w><h>90</h></coordinates><panel_attributes>lt=&lt;&lt;-</panel_attributes><additional_attributes>30;30;30;70</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>1030</x><y>280</y><w>170</w><h>40</h></coordinates><panel_attributes>ParallelExecutorCache
42 --
43 --</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>1090</x><y>210</y><w>50</w><h>90</h></coordinates><panel_attributes>lt=&lt;&lt;.</panel_attributes><additional_attributes>30;30;30;70</additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>890</x><y>150</y><w>160</w><h>170</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;-
44 m2=1</panel_attributes><additional_attributes>30;150;140;30</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>1290</x><y>150</y><w>150</w><h>70</h></coordinates><panel_attributes>&lt;&lt;interface&gt;&gt;
45 Function
46 --
47 --
48 evaluate(Point)</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>1170</x><y>150</y><w>140</w><h>170</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;-</panel_attributes><additional_attributes>30;150;120;30</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>1260</x><y>370</y><w>230</w><h>40</h></coordinates><panel_attributes>RocketOptimizationFunction
49 --
50 --</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>1340</x><y>190</y><w>50</w><h>200</h></coordinates><panel_attributes>lt=&lt;&lt;.</panel_attributes><additional_attributes>30;30;30;180</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>1040</x><y>390</y><w>100</w><h>30</h></coordinates><panel_attributes>Simulation
51 --
52 --
53 </panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>1110</x><y>360</y><w>170</w><h>60</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;-</panel_attributes><additional_attributes>150;30;30;40</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>940</x><y>550</y><w>200</w><h>80</h></coordinates><panel_attributes>&lt;&lt;interface&gt;&gt;
54 OptimizableParameter
55 --
56 --
57 getName()
58 computeValue(Simulation)</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>1010</x><y>380</y><w>320</w><h>190</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;-</panel_attributes><additional_attributes>300;30;30;170</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>1160</x><y>550</y><w>260</w><h>70</h></coordinates><panel_attributes>&lt;&lt;interface&gt;&gt;
59 OptimizationGoal
60 --
61 --
62 getMinimizationParameter(double)</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>1260</x><y>380</y><w>120</w><h>190</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;-</panel_attributes><additional_attributes>100;30;30;170</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>1430</x><y>550</y><w>260</w><h>70</h></coordinates><panel_attributes>&lt;&lt;interface&gt;&gt;
63 SimulationDomain
64 --
65 --
66 getDistanceToDomain(Simulation)</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>1410</x><y>380</y><w>170</w><h>190</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;-</panel_attributes><additional_attributes>30;30;150;170</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>1620</x><y>340</y><w>210</w><h>120</h></coordinates><panel_attributes>&lt;&lt;interface&gt;&gt;
67 SimulationModifier
68 --
69 --
70 getName()
71 getRelatedObject()
72 modify(Simulation, double)
73 get/set...</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>1460</x><y>360</y><w>180</w><h>50</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;-
74 m2=*</panel_attributes><additional_attributes>30;30;160;30</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>920</x><y>710</y><w>220</w><h>40</h></coordinates><panel_attributes>MaximumAltitudeParameter
75 --
76 --</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>1000</x><y>600</y><w>50</w><h>130</h></coordinates><panel_attributes>lt=&lt;&lt;.</panel_attributes><additional_attributes>30;30;30;110</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>1310</x><y>710</y><w>140</w><h>40</h></coordinates><panel_attributes>MaximizationGoal
77 --
78 --</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Class</type><coordinates><x>1150</x><y>710</y><w>140</w><h>40</h></coordinates><panel_attributes>MinimizationGoal
79 --
80 --
81 </panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Class</type><coordinates><x>1240</x><y>770</y><w>120</w><h>40</h></coordinates><panel_attributes>ValueSeekGoal
82 --
83 --
84 </panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>1190</x><y>590</y><w>70</w><h>140</h></coordinates><panel_attributes>lt=&lt;&lt;.</panel_attributes><additional_attributes>50;30;30;120</additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>1320</x><y>590</y><w>70</w><h>140</h></coordinates><panel_attributes>lt=&lt;&lt;.</panel_attributes><additional_attributes>30;30;50;120</additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>1270</x><y>590</y><w>50</w><h>200</h></coordinates><panel_attributes>lt=&lt;&lt;.</panel_attributes><additional_attributes>30;30;30;180</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>1910</x><y>340</y><w>210</w><h>40</h></coordinates><panel_attributes>/AbstractSimulationModifier/
85 --
86 --</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>1800</x><y>330</y><w>130</w><h>50</h></coordinates><panel_attributes>lt=&lt;&lt;.</panel_attributes><additional_attributes>30;30;110;30</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>1910</x><y>420</y><w>210</w><h>40</h></coordinates><panel_attributes>/GenericModifier/
87 --
88 --</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>1990</x><y>350</y><w>50</w><h>90</h></coordinates><panel_attributes>lt=&lt;&lt;-</panel_attributes><additional_attributes>30;30;30;70</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>1910</x><y>500</y><w>210</w><h>40</h></coordinates><panel_attributes>GenericComponentModifier
89 --
90 --</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>1990</x><y>430</y><w>50</w><h>90</h></coordinates><panel_attributes>lt=&lt;&lt;-</panel_attributes><additional_attributes>30;30;30;70</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>620</x><y>430</y><w>330</w><h>70</h></coordinates><panel_attributes>&lt;&lt;interface&gt;&gt;
91 OptimizationController
92 --
93 --
94 stepTaken(Point,double,Point,double,double)</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>760</x><y>290</y><w>50</w><h>160</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;-</panel_attributes><additional_attributes>30;30;30;140</additional_attributes></element><element><type>com.umlet.element.base.Note</type><coordinates><x>50</x><y>60</y><w>530</w><h>490</h></coordinates><panel_attributes>FunctionOptimizer is the central interface that defines optimization
95 algorithms.  This is a general bounded function minimization 
96 algorithm.  It obtains the function values from a FunctionCache.
97 The FunctionCache caches function evaluations that  it obtains 
98 from a Function object.
99  
100 Some implementations require the usage of a ParallelFunctionCache,
101 which allows queueing function evaluations to take place in the
102 background.
103  
104 The main Function implementation is RocketOptimizationFunction,
105 which computes various properties of a given Simulation.  The
106 parameter that is computed is defined by an OptimizableParameter
107 (e.g. apogee altitude, stability, max. velocity).  The goal of the 
108 optimization is defined by an OptimizationGoal (e.g. maximize/minimize
109 the parameter, or seek a specific value).  The optimization may be 
110 additionally limited using a SimulationDomain (e.g. require a specific 
111 minimum amount of stability).
112  
113 The modifications to the simulation are done by SimulationModifier
114 objects.  The number of modifier objects is the dimensionality of the
115 optimization - each optimization dimensions corresponds to a specific
116 value that can be changed in the simulation.  The generic modifier
117 classes use reflection to modify values dynamically.
118  
119 The optimization progress and ending can be controlled by an
120 OptimizationController.  The stepTaken method is called after each
121 step to determine whether to continue or stop the optimization.
122
123 bg=#ffff88</panel_attributes><additional_attributes/></element></umlet_diagram>