Free cookie consent management tool by TermsFeed Policy Generator

Ticket #852: Particle Swarm Optimization 3.2.hl

File Particle Swarm Optimization 3.2.hl, 39.7 KB (added by mkofler, 17 years ago)

Simple PSO engine

Line 
1<?xml version="1.0"?>
2<Root>
3  <SequentialEngine Type="HeuristicLab.SequentialEngine.SequentialEngine, HeuristicLab.SequentialEngine-3.2" GUID="e59adde9-90c7-455f-8049-c623e1b919a5">
4    <OperatorGraph Type="HeuristicLab.Core.OperatorGraph, HeuristicLab.Core-3.2" GUID="804ac569-4501-4e7d-b19d-1e842be3817a">
5      <Operators>
6        <CombinedOperator Type="HeuristicLab.Operators.CombinedOperator, HeuristicLab.Operators-3.2" GUID="0d077b10-8227-474d-a4e8-b1abdd316321" Name="PSO">
7          <SubOperators>
8            <VariableInjector Type="HeuristicLab.Operators.VariableInjector, HeuristicLab.Operators-3.2" GUID="9c9a1f6e-a5f3-4b50-a9dc-b5025d1cace8" Name="SettingsInjector">
9              <SubOperators />
10              <VariableInfos>
11              </VariableInfos>
12              <Variables>
13                <Variable Type="HeuristicLab.Core.Variable, HeuristicLab.Core-3.2" GUID="a172a2b9-941c-4b8c-b390-473e18802fc4" Name="SwarmSize">
14                  <Value Type="HeuristicLab.Data.IntData, HeuristicLab.Data-3.2" GUID="9952f2d3-45c4-4b72-a882-d95242b516c0">10</Value>
15                </Variable>
16                <Variable Type="HeuristicLab.Core.Variable, HeuristicLab.Core-3.2" GUID="2268b0fd-b935-4da3-9d95-37391b24d751" Name="BestQuality">
17                  <Value Type="HeuristicLab.Data.DoubleData, HeuristicLab.Data-3.2" GUID="c9d75593-6720-41db-9d8e-664510b7192f">0</Value>
18                </Variable>
19                <Variable Type="HeuristicLab.Core.Variable, HeuristicLab.Core-3.2" GUID="78d15576-3674-46f0-9f11-fccbafa452ca" Name="StartVelocity">
20                  <Value Type="HeuristicLab.Data.DoubleData, HeuristicLab.Data-3.2" GUID="68350ee4-8ee9-4f87-a05c-edf487650cd8">0</Value>
21                </Variable>
22                <Variable Type="HeuristicLab.Core.Variable, HeuristicLab.Core-3.2" GUID="3ffb0b10-3e91-4525-9dda-e45aa78ffee0" Name="Iterations">
23                  <Value Type="HeuristicLab.Data.IntData, HeuristicLab.Data-3.2" GUID="1dea054b-1cac-44b6-9a5a-d990b63dedbb">0</Value>
24                </Variable>
25                <Variable Type="HeuristicLab.Core.Variable, HeuristicLab.Core-3.2" GUID="b3c0b64e-01d1-452f-8683-f651e533d95c" Name="MaxIterations">
26                  <Value Type="HeuristicLab.Data.IntData, HeuristicLab.Data-3.2" GUID="f8d0b9f6-7d8e-4850-a043-44e13d14577c">1000000</Value>
27                </Variable>
28              </Variables>
29            </VariableInjector>
30            <CombinedOperator Type="HeuristicLab.Operators.CombinedOperator, HeuristicLab.Operators-3.2" GUID="dd25b0e5-f265-4f9c-af90-5b0ed405f02b" Name="ProblemInitialization">
31              <SubOperators />
32              <VariableInfos />
33              <Variables />
34              <Description>A combined operator contains a whole operator graph. It is useful for modularization to assemble complex operators out of simpler ones.
35
36A combined operator automatically inject its sub-operators into the scope it is applied on. Thereby the names of the sub-operators are used as variable names. Those operators can be extracted again in the contained operator graph by using an OperatorExtractor. So it is possible to parameterize a combined operator with custom operators.</Description>
37              <OperatorGraph Type="HeuristicLab.Core.OperatorGraph, HeuristicLab.Core-3.2" GUID="e15b8e0d-2f33-472e-83a9-0f5af5e8cc81">
38                <Operators>
39                  <TestFunctionInjector Type="HeuristicLab.TestFunctions.TestFunctionInjector, HeuristicLab.TestFunctions-3.2" GUID="ac95d39f-8dc2-4a99-9058-444776931f63" Name="TestFunctionInjector">
40                    <SubOperators />
41                    <VariableInfos />
42                    <Variables>
43                      <Variable Type="HeuristicLab.Core.Variable, HeuristicLab.Core-3.2" GUID="5df20b82-9b23-4715-ab56-8f55fbc04106" Name="Maximization">
44                        <Value Type="HeuristicLab.Data.BoolData, HeuristicLab.Data-3.2" GUID="4db69652-bdd8-4b02-9dbe-866c88e92539">False</Value>
45                      </Variable>
46                      <Variable Type="HeuristicLab.Core.Variable, HeuristicLab.Core-3.2" GUID="3718f886-02f7-4f35-9cb6-ce2e216c7379" Name="LowerBound">
47                        <Value Type="HeuristicLab.Data.DoubleData, HeuristicLab.Data-3.2" GUID="b4663335-6aa2-4b61-9240-763bafc1eb48">-32.76</Value>
48                      </Variable>
49                      <Variable Type="HeuristicLab.Core.Variable, HeuristicLab.Core-3.2" GUID="c73fa6f9-a921-4485-b392-3dc9848db5dc" Name="UpperBound">
50                        <Value Type="HeuristicLab.Data.DoubleData, HeuristicLab.Data-3.2" GUID="149c8662-9766-45f4-867b-9d14bc96a517">32.76</Value>
51                      </Variable>
52                      <Variable Type="HeuristicLab.Core.Variable, HeuristicLab.Core-3.2" GUID="50c2eae2-e092-4d1c-8abb-f1bc2da6a889" Name="Dimension">
53                        <Value Type="HeuristicLab.Data.IntData, HeuristicLab.Data-3.2" GUID="2fa2c662-e5ff-4215-90aa-e5fad394881f">100</Value>
54                      </Variable>
55                    </Variables>
56                  </TestFunctionInjector>
57                </Operators>
58                <InitialOperator GUID="ac95d39f-8dc2-4a99-9058-444776931f63" />
59              </OperatorGraph>
60            </CombinedOperator>
61            <CombinedOperator Type="HeuristicLab.Operators.CombinedOperator, HeuristicLab.Operators-3.2" GUID="4906f50d-6828-4ee2-b7cd-b889ffed105a" Name="Evaluator">
62              <SubOperators />
63              <VariableInfos />
64              <Variables />
65              <Description>A combined operator contains a whole operator graph. It is useful for modularization to assemble complex operators out of simpler ones.
66
67A combined operator automatically inject its sub-operators into the scope it is applied on. Thereby the names of the sub-operators are used as variable names. Those operators can be extracted again in the contained operator graph by using an OperatorExtractor. So it is possible to parameterize a combined operator with custom operators.</Description>
68              <OperatorGraph Type="HeuristicLab.Core.OperatorGraph, HeuristicLab.Core-3.2" GUID="e2a9db27-d990-4630-bcd7-ed5d1819edd3">
69                <Operators>
70                  <AckleyEvaluator Type="HeuristicLab.TestFunctions.AckleyEvaluator, HeuristicLab.TestFunctions-3.2" GUID="dd0f4df4-e6e3-4075-b2dc-85d25743893a" Name="AckleyEvaluator">
71                    <SubOperators />
72                    <VariableInfos>
73                      <VariableInfo Type="HeuristicLab.Core.VariableInfo, HeuristicLab.Core-3.2" GUID="84f5d0da-3301-47f1-97e5-4e8f8d00350b" ActualName="Quality" FormalName="Quality" Description="Quality value" DataType="HeuristicLab.Data.DoubleData, HeuristicLab.Data-3.2" Kind="New" Local="False" />
74                      <VariableInfo Type="HeuristicLab.Core.VariableInfo, HeuristicLab.Core-3.2" GUID="e073d505-1816-44ff-9a49-1c389d531a60" ActualName="Agent" FormalName="Point" Description="n-dimensional point for which the test function should be evaluated" DataType="HeuristicLab.Data.DoubleArrayData, HeuristicLab.Data-3.2" Kind="In" Local="False" />
75                    </VariableInfos>
76                    <Variables />
77                  </AckleyEvaluator>
78                </Operators>
79                <InitialOperator GUID="dd0f4df4-e6e3-4075-b2dc-85d25743893a" />
80              </OperatorGraph>
81            </CombinedOperator>
82          </SubOperators>
83          <VariableInfos />
84          <Variables />
85          <Description>A combined operator contains a whole operator graph. It is useful for modularization to assemble complex operators out of simpler ones.
86
87A combined operator automatically inject its sub-operators into the scope it is applied on. Thereby the names of the sub-operators are used as variable names. Those operators can be extracted again in the contained operator graph by using an OperatorExtractor. So it is possible to parameterize a combined operator with custom operators.</Description>
88          <OperatorGraph Type="HeuristicLab.Core.OperatorGraph, HeuristicLab.Core-3.2" GUID="90dcb283-011c-4c5f-bc60-8dc09a9ef48a">
89            <Operators>
90              <SequentialProcessor Type="HeuristicLab.Operators.SequentialProcessor, HeuristicLab.Operators-3.2" GUID="01179c92-4c4b-475f-b935-4b45a2386772" Name="SequentialProcessor">
91                <SubOperators>
92                  <OperatorExtractor Type="HeuristicLab.Operators.OperatorExtractor, HeuristicLab.Operators-3.2" GUID="557b5088-5341-4711-ae6c-ca34b40b0031" Name="SettingsInjector (Extractor)">
93                    <SubOperators />
94                    <VariableInfos>
95                      <VariableInfo Type="HeuristicLab.Core.VariableInfo, HeuristicLab.Core-3.2" GUID="1ab738c1-6763-4b11-a397-86ba986db500" ActualName="SettingsInjector" FormalName="Operator" Description="Extracted operator" DataType="HeuristicLab.Core.IOperator, HeuristicLab.Core-3.2" Kind="In" Local="False" />
96                    </VariableInfos>
97                    <Variables />
98                  </OperatorExtractor>
99                  <OperatorExtractor Type="HeuristicLab.Operators.OperatorExtractor, HeuristicLab.Operators-3.2" GUID="04f81003-3bc6-4c9b-8a65-bf9aa7fc651f" Name="ProblemInitialization (Extractor)">
100                    <SubOperators />
101                    <VariableInfos>
102                      <VariableInfo Type="HeuristicLab.Core.VariableInfo, HeuristicLab.Core-3.2" GUID="0be4ba35-f34c-4b51-957f-4f144d96f371" ActualName="ProblemInitialization" FormalName="Operator" Description="Extracted operator" DataType="HeuristicLab.Core.IOperator, HeuristicLab.Core-3.2" Kind="In" Local="False" />
103                    </VariableInfos>
104                    <Variables />
105                  </OperatorExtractor>
106                  <RandomInjector Type="HeuristicLab.Random.RandomInjector, HeuristicLab.Random-3.2" GUID="f4605c46-3449-4055-bf6c-013de9ed5255" Name="RandomInjector">
107                    <SubOperators />
108                    <VariableInfos>
109                      <VariableInfo Type="HeuristicLab.Core.VariableInfo, HeuristicLab.Core-3.2" GUID="fb47611b-4206-40d6-82da-aa2244ecee8e" ActualName="SetSeedRandomly" FormalName="SetSeedRandomly" Description="Initialize random seed randomly" DataType="HeuristicLab.Data.BoolData, HeuristicLab.Data-3.2" Kind="In" Local="True" />
110                      <VariableInfo Type="HeuristicLab.Core.VariableInfo, HeuristicLab.Core-3.2" GUID="952a60b2-4b98-4302-9cc4-179e63318c7e" ActualName="Seed" FormalName="Seed" Description="Random seed" DataType="HeuristicLab.Data.IntData, HeuristicLab.Data-3.2" Kind="In" Local="True" />
111                      <VariableInfo Type="HeuristicLab.Core.VariableInfo, HeuristicLab.Core-3.2" GUID="55643d27-8102-4f02-9097-cdc25f632784" ActualName="Random" FormalName="Random" Description="Pseudo random number generator" DataType="HeuristicLab.Core.IRandom, HeuristicLab.Core-3.2" Kind="New" Local="False" />
112                    </VariableInfos>
113                    <Variables>
114                      <Variable Type="HeuristicLab.Core.Variable, HeuristicLab.Core-3.2" GUID="12a37ec0-8aed-41c9-adca-d4f32d58a09e" Name="SetSeedRandomly">
115                        <Value Type="HeuristicLab.Data.BoolData, HeuristicLab.Data-3.2" GUID="2f6e003f-6dc6-4f95-b9fd-06e2b14c25a9">True</Value>
116                      </Variable>
117                      <Variable Type="HeuristicLab.Core.Variable, HeuristicLab.Core-3.2" GUID="7ace29b2-5535-4167-a2df-c08b1f11ba8b" Name="Seed">
118                        <Value Type="HeuristicLab.Data.IntData, HeuristicLab.Data-3.2" GUID="5e9baf60-1003-4767-b075-9f06ed897c5f">475707084</Value>
119                      </Variable>
120                    </Variables>
121                  </RandomInjector>
122                  <SubScopesCreater Type="HeuristicLab.Operators.SubScopesCreater, HeuristicLab.Operators-3.2" GUID="0cfc4056-2424-4648-be41-74ef2c6fae8d" Name="SubScopesCreater">
123                    <SubOperators />
124                    <VariableInfos>
125                      <VariableInfo Type="HeuristicLab.Core.VariableInfo, HeuristicLab.Core-3.2" GUID="88889390-ee60-40aa-87cb-18c4ca54b73a" ActualName="SwarmSize" FormalName="SubScopes" Description="Number of sub-scopes" DataType="HeuristicLab.Data.IntData, HeuristicLab.Data-3.2" Kind="In" Local="False" />
126                    </VariableInfos>
127                    <Variables />
128                  </SubScopesCreater>
129                  <UniformSequentialSubScopesProcessor Type="HeuristicLab.Operators.UniformSequentialSubScopesProcessor, HeuristicLab.Operators-3.2" GUID="ccfdf2a3-a005-411f-86e2-987a1728186e" Name="UniformSequentialSubScopesProcessor">
130                    <SubOperators>
131                      <SequentialProcessor Type="HeuristicLab.Operators.SequentialProcessor, HeuristicLab.Operators-3.2" GUID="3870c261-1a39-4bc9-9dc5-e75e6127ee2e" Name="SequentialProcessor">
132                        <SubOperators>
133                          <UniformRandomRealVectorGenerator Type="HeuristicLab.RealVector.UniformRandomRealVectorGenerator, HeuristicLab.RealVector-3.2" GUID="79b31356-4cdb-4c55-8031-534c9be1e379" Name="UniformRandomRealVectorGenerator">
134                            <SubOperators />
135                            <VariableInfos>
136                              <VariableInfo Type="HeuristicLab.Core.VariableInfo, HeuristicLab.Core-3.2" GUID="dea6d02f-97c6-4a4e-b144-cd5ddf780502" ActualName="Random" FormalName="Random" Description="Pseudo random number generator" DataType="HeuristicLab.Core.IRandom, HeuristicLab.Core-3.2" Kind="In" Local="False" />
137                              <VariableInfo Type="HeuristicLab.Core.VariableInfo, HeuristicLab.Core-3.2" GUID="ab1b67ad-372d-44c9-a3fa-aeac098ff392" ActualName="Dimension" FormalName="Length" Description="Vector length" DataType="HeuristicLab.Data.IntData, HeuristicLab.Data-3.2" Kind="In" Local="False" />
138                              <VariableInfo Type="HeuristicLab.Core.VariableInfo, HeuristicLab.Core-3.2" GUID="fc3af55a-a41b-4a84-894f-cb8ff1acac4c" ActualName="StartVelocity" FormalName="Minimum" Description="Minimum of the sampling range for each vector element (included)" DataType="HeuristicLab.Data.DoubleData, HeuristicLab.Data-3.2" Kind="In" Local="False" />
139                              <VariableInfo Type="HeuristicLab.Core.VariableInfo, HeuristicLab.Core-3.2" GUID="275a5055-f789-4b07-8755-3d595d951de5" ActualName="StartVelocity" FormalName="Maximum" Description="Maximum of the sampling range for each vector element (excluded)" DataType="HeuristicLab.Data.DoubleData, HeuristicLab.Data-3.2" Kind="In" Local="False" />
140                              <VariableInfo Type="HeuristicLab.Core.VariableInfo, HeuristicLab.Core-3.2" GUID="3642b9f8-3cfd-478b-bfd3-8a8d3d0e7c53" ActualName="Velocity" FormalName="RealVector" Description="Created random real vector" DataType="HeuristicLab.Data.DoubleArrayData, HeuristicLab.Data-3.2" Kind="New" Local="False" />
141                            </VariableInfos>
142                            <Variables />
143                          </UniformRandomRealVectorGenerator>
144                          <UniformRandomRealVectorGenerator Type="HeuristicLab.RealVector.UniformRandomRealVectorGenerator, HeuristicLab.RealVector-3.2" GUID="169fc1a0-e428-421d-8056-ecaefc14195a" Name="UniformRandomRealVectorGenerator">
145                            <SubOperators />
146                            <VariableInfos>
147                              <VariableInfo Type="HeuristicLab.Core.VariableInfo, HeuristicLab.Core-3.2" GUID="b7dafa4b-372a-4585-aeac-cc4e60a43bbe" ActualName="Random" FormalName="Random" Description="Pseudo random number generator" DataType="HeuristicLab.Core.IRandom, HeuristicLab.Core-3.2" Kind="In" Local="False" />
148                              <VariableInfo Type="HeuristicLab.Core.VariableInfo, HeuristicLab.Core-3.2" GUID="03e7bf52-36d7-46ad-aa84-1a89fb894ab1" ActualName="Dimension" FormalName="Length" Description="Vector length" DataType="HeuristicLab.Data.IntData, HeuristicLab.Data-3.2" Kind="In" Local="False" />
149                              <VariableInfo Type="HeuristicLab.Core.VariableInfo, HeuristicLab.Core-3.2" GUID="e5d3f0c8-3211-4149-bfc3-8f5c20da74f4" ActualName="LowerBound" FormalName="Minimum" Description="Minimum of the sampling range for each vector element (included)" DataType="HeuristicLab.Data.DoubleData, HeuristicLab.Data-3.2" Kind="In" Local="False" />
150                              <VariableInfo Type="HeuristicLab.Core.VariableInfo, HeuristicLab.Core-3.2" GUID="f76c374c-3091-488f-8529-472f14ecb761" ActualName="UpperBound" FormalName="Maximum" Description="Maximum of the sampling range for each vector element (excluded)" DataType="HeuristicLab.Data.DoubleData, HeuristicLab.Data-3.2" Kind="In" Local="False" />
151                              <VariableInfo Type="HeuristicLab.Core.VariableInfo, HeuristicLab.Core-3.2" GUID="5f8eb505-ee84-47d6-803b-6df695039382" ActualName="Agent" FormalName="RealVector" Description="Created random real vector" DataType="HeuristicLab.Data.DoubleArrayData, HeuristicLab.Data-3.2" Kind="New" Local="False" />
152                            </VariableInfos>
153                            <Variables />
154                          </UniformRandomRealVectorGenerator>
155                          <OperatorExtractor Type="HeuristicLab.Operators.OperatorExtractor, HeuristicLab.Operators-3.2" GUID="2a603c98-7a90-469a-a5b6-25d77c2d0349" Name="Evaluator (Extractor)">
156                            <SubOperators />
157                            <VariableInfos>
158                              <VariableInfo Type="HeuristicLab.Core.VariableInfo, HeuristicLab.Core-3.2" GUID="f6ca6b96-baaf-4a48-9ffe-77c068689b91" ActualName="Evaluator" FormalName="Operator" Description="Extracted operator" DataType="HeuristicLab.Core.IOperator, HeuristicLab.Core-3.2" Kind="In" Local="False" />
159                            </VariableInfos>
160                            <Variables />
161                          </OperatorExtractor>
162                          <ProgrammableOperator Type="HeuristicLab.Operators.Programmable.ProgrammableOperator, HeuristicLab.Operators.Programmable-3.2" GUID="c0a2ac0e-cb6c-4153-a615-067fede29588" Name="LocalBestInitializer">
163                            <SubOperators />
164                            <VariableInfos>
165                              <VariableInfo Type="HeuristicLab.Core.VariableInfo, HeuristicLab.Core-3.2" GUID="35e401ca-9386-46cc-8166-c5edc22d52a2" ActualName="lBest" FormalName="lBest" Description="" DataType="HeuristicLab.Data.DoubleArrayData, HeuristicLab.Data-3.2" Kind="New" Local="False" />
166                              <VariableInfo Type="HeuristicLab.Core.VariableInfo, HeuristicLab.Core-3.2" GUID="1689a6a4-7bbf-4932-94c8-c000148820af" ActualName="Agent" FormalName="Agent" Description="" DataType="HeuristicLab.Data.DoubleArrayData, HeuristicLab.Data-3.2" Kind="In" Local="False" />
167                              <VariableInfo Type="HeuristicLab.Core.VariableInfo, HeuristicLab.Core-3.2" GUID="144ec7a3-1747-4db2-aaa4-09907efb74df" ActualName="Quality" FormalName="Quality" Description="" DataType="HeuristicLab.Data.DoubleData, HeuristicLab.Data-3.2" Kind="In" Local="False" />
168                              <VariableInfo Type="HeuristicLab.Core.VariableInfo, HeuristicLab.Core-3.2" GUID="aa71a443-ab04-494e-a441-1c94b7afbdc9" ActualName="lBestQuality" FormalName="BestQuality" Description="" DataType="HeuristicLab.Data.DoubleData, HeuristicLab.Data-3.2" Kind="New" Local="False" />
169                            </VariableInfos>
170                            <Variables />
171                            <Description>An operator that can be programmed for arbitrary needs.</Description>
172                            <Code>BestQuality.Data = Quality.Data;
173lBest.Data = Agent.Data; </Code>
174                          </ProgrammableOperator>
175                        </SubOperators>
176                        <VariableInfos />
177                        <Variables />
178                      </SequentialProcessor>
179                    </SubOperators>
180                    <VariableInfos />
181                    <Variables />
182                  </UniformSequentialSubScopesProcessor>
183                  <Sorter Type="HeuristicLab.Operators.Sorter, HeuristicLab.Operators-3.2" GUID="7bdf69f7-d92b-477e-9e72-0cdf49092099" Name="Sorter">
184                    <SubOperators />
185                    <VariableInfos>
186                      <VariableInfo Type="HeuristicLab.Core.VariableInfo, HeuristicLab.Core-3.2" GUID="78882c2c-3319-4d42-8d77-f7a945ac5f76" ActualName="Descending" FormalName="Descending" Description="Sort in descending order" DataType="HeuristicLab.Data.BoolData, HeuristicLab.Data-3.2" Kind="In" Local="True" />
187                      <VariableInfo Type="HeuristicLab.Core.VariableInfo, HeuristicLab.Core-3.2" GUID="e229fdcb-929c-4e0d-a652-dd496134cb46" ActualName="Quality" FormalName="Value" Description="Sorting value" DataType="HeuristicLab.Data.DoubleData, HeuristicLab.Data-3.2" Kind="In" Local="False" />
188                    </VariableInfos>
189                    <Variables>
190                      <Variable Type="HeuristicLab.Core.Variable, HeuristicLab.Core-3.2" GUID="91d5c8c6-e124-4f2a-8a47-4f92cacbc71c" Name="Descending">
191                        <Value Type="HeuristicLab.Data.BoolData, HeuristicLab.Data-3.2" GUID="9abcc52b-d57d-4324-97c5-fcfb6dc24176">False</Value>
192                      </Variable>
193                    </Variables>
194                  </Sorter>
195                  <ProgrammableOperator Type="HeuristicLab.Operators.Programmable.ProgrammableOperator, HeuristicLab.Operators.Programmable-3.2" GUID="bd3031f0-b56d-4c1e-91af-626a897303c3" Name="GlobalBestUpdater">
196                    <SubOperators />
197                    <VariableInfos>
198                      <VariableInfo Type="HeuristicLab.Core.VariableInfo, HeuristicLab.Core-3.2" GUID="65e2fd21-58ee-410c-a491-279c2925ab31" ActualName="BestQuality" FormalName="BestQuality" Description="" DataType="HeuristicLab.Data.DoubleData, HeuristicLab.Data-3.2" Kind="New" Local="False" />
199                      <VariableInfo Type="HeuristicLab.Core.VariableInfo, HeuristicLab.Core-3.2" GUID="4097e6a9-0835-4ee8-9d6f-065fefd705da" ActualName="gBest" FormalName="gBest" Description="" DataType="HeuristicLab.Data.DoubleArrayData, HeuristicLab.Data-3.2" Kind="New" Local="False" />
200                      <VariableInfo Type="HeuristicLab.Core.VariableInfo, HeuristicLab.Core-3.2" GUID="708e53a3-4fd7-4a09-b8c9-065252d3d9ac" ActualName="Maximization" FormalName="Maximization" Description="" DataType="HeuristicLab.Data.BoolData, HeuristicLab.Data-3.2" Kind="In" Local="False" />
201                    </VariableInfos>
202                    <Variables />
203                    <Description>An operator that can be programmed for arbitrary needs.</Description>
204                    <Code>DoubleArrayData localBestAgent = scope.SubScopes[0].GetVariableValue&lt;DoubleArrayData&gt;(scope.TranslateName("Agent"),false);
205DoubleData localBestQuality = scope.SubScopes[0].GetVariableValue&lt;DoubleData&gt;(scope.TranslateName("Quality"),false);
206
207if (gBest.Data.Length == 0 || Maximization.Data &amp;&amp; localBestQuality.Data &gt; BestQuality.Data
208      || !Maximization.Data &amp;&amp; localBestQuality.Data &lt; BestQuality.Data) {
209  double[] result = (double[])localBestAgent.Data.Clone();
210  gBest.Data = result;
211  BestQuality.Data = localBestQuality.Data;
212}</Code>
213                  </ProgrammableOperator>
214                  <Counter Type="HeuristicLab.Operators.Counter, HeuristicLab.Operators-3.2" GUID="57b51f31-fe03-4d78-a301-c9c6506cfe51" Name="Counter">
215                    <SubOperators />
216                    <VariableInfos>
217                      <VariableInfo Type="HeuristicLab.Core.VariableInfo, HeuristicLab.Core-3.2" GUID="e59d90fe-3ad7-4099-82b9-6d0117353d26" ActualName="Iterations" FormalName="Value" Description="Counter value" DataType="HeuristicLab.Data.IntData, HeuristicLab.Data-3.2" Kind="Out, In" Local="False" />
218                    </VariableInfos>
219                    <Variables />
220                  </Counter>
221                  <LessOrEqualThanComparator Type="HeuristicLab.Operators.LessOrEqualThanComparator, HeuristicLab.Operators-3.2" GUID="cbaf39d9-efe2-4135-9c31-73bfe45a80a0" Name="LessOrEqualThanComparator">
222                    <SubOperators />
223                    <VariableInfos>
224                      <VariableInfo Type="HeuristicLab.Core.VariableInfo, HeuristicLab.Core-3.2" GUID="c0fc06e5-80e7-41c7-b042-af1802993123" ActualName="Iterations" FormalName="LeftSide" Description="Variable on the left side of the comparison" DataType="HeuristicLab.Core.IItem, HeuristicLab.Core-3.2" Kind="In" Local="False" />
225                      <VariableInfo Type="HeuristicLab.Core.VariableInfo, HeuristicLab.Core-3.2" GUID="e52243c3-11d4-422e-a0d8-f6eaa72b06df" ActualName="MaxIterations" FormalName="RightSide" Description="Variable on the right side of the comparison" DataType="HeuristicLab.Core.IItem, HeuristicLab.Core-3.2" Kind="In" Local="False" />
226                      <VariableInfo Type="HeuristicLab.Core.VariableInfo, HeuristicLab.Core-3.2" GUID="9aa2fd0d-af11-444f-9d53-ebff05b9d9e4" ActualName="Continue" FormalName="Result" Description="Result of the comparison" DataType="HeuristicLab.Data.BoolData, HeuristicLab.Data-3.2" Kind="New, Out" Local="False" />
227                    </VariableInfos>
228                    <Variables />
229                  </LessOrEqualThanComparator>
230                  <ConditionalBranch Type="HeuristicLab.Operators.ConditionalBranch, HeuristicLab.Operators-3.2" GUID="641bf9d8-9c9b-47bf-af23-c5d9f403b6d0" Name="ConditionalBranch">
231                    <SubOperators>
232                      <SequentialProcessor Type="HeuristicLab.Operators.SequentialProcessor, HeuristicLab.Operators-3.2" GUID="cd0501ea-a2df-49fa-bad5-7cc4a3bda02d" Name="SequentialProcessor">
233                        <SubOperators>
234                          <UniformSequentialSubScopesProcessor Type="HeuristicLab.Operators.UniformSequentialSubScopesProcessor, HeuristicLab.Operators-3.2" GUID="9b293bf5-39b8-4855-bd57-7448a5f678e4" Name="UniformSequentialSubScopesProcessor">
235                            <SubOperators>
236                              <SequentialProcessor Type="HeuristicLab.Operators.SequentialProcessor, HeuristicLab.Operators-3.2" GUID="b15eb5ad-a958-4304-a0d6-00d3444331da" Name="SequentialProcessor">
237                                <SubOperators>
238                                  <ProgrammableOperator Type="HeuristicLab.Operators.Programmable.ProgrammableOperator, HeuristicLab.Operators.Programmable-3.2" GUID="24f6188a-7d12-4ea4-aed0-6b9f3932abd8" Name="UpdateVelocities">
239                                    <SubOperators />
240                                    <VariableInfos>
241                                      <VariableInfo Type="HeuristicLab.Core.VariableInfo, HeuristicLab.Core-3.2" GUID="ec2f0333-39fa-4ecf-a041-5577fcce237f" ActualName="Agent" FormalName="Agent" Description="" DataType="HeuristicLab.Data.DoubleArrayData, HeuristicLab.Data-3.2" Kind="Out, In" Local="False" />
242                                      <VariableInfo Type="HeuristicLab.Core.VariableInfo, HeuristicLab.Core-3.2" GUID="6e360581-464f-4544-a4ad-c339c95a26d1" ActualName="lBest" FormalName="lBest" Description="" DataType="HeuristicLab.Data.DoubleArrayData, HeuristicLab.Data-3.2" Kind="In" Local="False" />
243                                      <VariableInfo Type="HeuristicLab.Core.VariableInfo, HeuristicLab.Core-3.2" GUID="dd7e9cff-5ce7-4114-a0d4-18b1bc7afc5d" ActualName="gBest" FormalName="gBest" Description="" DataType="HeuristicLab.Data.DoubleArrayData, HeuristicLab.Data-3.2" Kind="In" Local="False" />
244                                      <VariableInfo Type="HeuristicLab.Core.VariableInfo, HeuristicLab.Core-3.2" GUID="68b01af3-3269-43c1-aec1-f83cbec2fd75" ActualName="Dimension" FormalName="Dimension" Description="" DataType="HeuristicLab.Data.IntData, HeuristicLab.Data-3.2" Kind="In" Local="False" />
245                                      <VariableInfo Type="HeuristicLab.Core.VariableInfo, HeuristicLab.Core-3.2" GUID="69e7b707-c3ef-4752-b6b3-2645730044c8" ActualName="Quality" FormalName="Quality" Description="" DataType="HeuristicLab.Data.DoubleData, HeuristicLab.Data-3.2" Kind="In" Local="False" />
246                                      <VariableInfo Type="HeuristicLab.Core.VariableInfo, HeuristicLab.Core-3.2" GUID="d69fe5ed-7971-470b-846f-5eebdbbb5b0b" ActualName="Velocity" FormalName="Velocity" Description="" DataType="HeuristicLab.Data.DoubleArrayData, HeuristicLab.Data-3.2" Kind="Out, In" Local="False" />
247                                      <VariableInfo Type="HeuristicLab.Core.VariableInfo, HeuristicLab.Core-3.2" GUID="786e8c6f-28c4-4c03-a305-9077b8eab6f1" ActualName="Random" FormalName="Random" Description="" DataType="HeuristicLab.Random.MersenneTwister, HeuristicLab.Random-3.2" Kind="In" Local="False" />
248                                    </VariableInfos>
249                                    <Variables />
250                                    <Description>An operator that can be programmed for arbitrary needs.</Description>
251                                    <Code>System.Random random = new System.Random();
252double alpha = Random.NextDouble();
253double beta = Random.NextDouble();
254for (int i = 0; i &lt; Dimension.Data; i++) {
255  Velocity.Data[i] = Velocity.Data[i] + alpha * (lBest.Data[i] - Agent.Data[i]) + beta *(gBest.Data[i] - Agent.Data[i]);
256}</Code>
257                                  </ProgrammableOperator>
258                                  <ProgrammableOperator Type="HeuristicLab.Operators.Programmable.ProgrammableOperator, HeuristicLab.Operators.Programmable-3.2" GUID="32c3bf36-5750-4ae2-b595-e4ab503102d2" Name="ApplyMove">
259                                    <SubOperators />
260                                    <VariableInfos>
261                                      <VariableInfo Type="HeuristicLab.Core.VariableInfo, HeuristicLab.Core-3.2" GUID="93d72cba-b23d-40ce-8177-3f3e6e89b92e" ActualName="LowerBound" FormalName="LowerBound" Description="" DataType="HeuristicLab.Data.DoubleData, HeuristicLab.Data-3.2" Kind="In" Local="False" />
262                                      <VariableInfo Type="HeuristicLab.Core.VariableInfo, HeuristicLab.Core-3.2" GUID="db098c83-ecaa-4170-9688-96c7a5f0c2c6" ActualName="Velocity" FormalName="Velocity" Description="" DataType="HeuristicLab.Data.DoubleArrayData, HeuristicLab.Data-3.2" Kind="In" Local="False" />
263                                      <VariableInfo Type="HeuristicLab.Core.VariableInfo, HeuristicLab.Core-3.2" GUID="1786402d-fdc6-4cac-a0cb-a5de77bbee86" ActualName="Agent" FormalName="Agent" Description="" DataType="HeuristicLab.Data.DoubleArrayData, HeuristicLab.Data-3.2" Kind="Out, In" Local="False" />
264                                      <VariableInfo Type="HeuristicLab.Core.VariableInfo, HeuristicLab.Core-3.2" GUID="8f23ccfc-16f6-4e7a-8414-0157a0c91b8e" ActualName="UpperBound" FormalName="UpperBound" Description="" DataType="HeuristicLab.Data.DoubleData, HeuristicLab.Data-3.2" Kind="In" Local="False" />
265                                      <VariableInfo Type="HeuristicLab.Core.VariableInfo, HeuristicLab.Core-3.2" GUID="5720b95f-606b-428a-9fa2-c8b9ada05034" ActualName="Dimension" FormalName="Dimension" Description="" DataType="HeuristicLab.Data.IntData, HeuristicLab.Data-3.2" Kind="In" Local="False" />
266                                    </VariableInfos>
267                                    <Variables />
268                                    <Description>An operator that can be programmed for arbitrary needs.</Description>
269                                    <Code>double[] result = (double[])Agent.Data.Clone();
270for (int i = 0; i &lt; Agent.Data.Length; i++) {
271  result[i] += Velocity.Data[i];
272  if (result[i] &gt; UpperBound.Data) {
273    result[i] = UpperBound.Data;
274  }
275  if (result[i] &lt; LowerBound.Data) {
276    result[i] = LowerBound.Data;
277  }
278}
279Agent.Data = result;</Code>
280                                  </ProgrammableOperator>
281                                  <OperatorExtractor GUID="2a603c98-7a90-469a-a5b6-25d77c2d0349" />
282                                  <ProgrammableOperator Type="HeuristicLab.Operators.Programmable.ProgrammableOperator, HeuristicLab.Operators.Programmable-3.2" GUID="9f118892-84e9-47a3-88e3-319bdae68167" Name="LocalBestUpdater">
283                                    <SubOperators />
284                                    <VariableInfos>
285                                      <VariableInfo Type="HeuristicLab.Core.VariableInfo, HeuristicLab.Core-3.2" GUID="5f2a8328-abd6-4c57-90ff-bbbc82cdb7f9" ActualName="lBest" FormalName="lBest" Description="" DataType="HeuristicLab.Data.DoubleArrayData, HeuristicLab.Data-3.2" Kind="Out, In" Local="False" />
286                                      <VariableInfo Type="HeuristicLab.Core.VariableInfo, HeuristicLab.Core-3.2" GUID="a8d71b34-e53b-4ac2-884a-c965908bd6c7" ActualName="lBestQuality" FormalName="lBestQuality" Description="" DataType="HeuristicLab.Data.DoubleData, HeuristicLab.Data-3.2" Kind="Out, In" Local="False" />
287                                      <VariableInfo Type="HeuristicLab.Core.VariableInfo, HeuristicLab.Core-3.2" GUID="24e2c7ac-6eb7-4eda-98db-75fb68385ff8" ActualName="Quality" FormalName="Quality" Description="" DataType="HeuristicLab.Data.DoubleData, HeuristicLab.Data-3.2" Kind="In" Local="False" />
288                                      <VariableInfo Type="HeuristicLab.Core.VariableInfo, HeuristicLab.Core-3.2" GUID="04aadf34-dba6-4b66-a24b-6bbe4ee7d649" ActualName="Agent" FormalName="Agent" Description="" DataType="HeuristicLab.Data.DoubleArrayData, HeuristicLab.Data-3.2" Kind="In" Local="False" />
289                                      <VariableInfo Type="HeuristicLab.Core.VariableInfo, HeuristicLab.Core-3.2" GUID="76519403-69bf-42fb-98ad-ec89295a42cd" ActualName="Maximization" FormalName="Maximization" Description="" DataType="HeuristicLab.Data.BoolData, HeuristicLab.Data-3.2" Kind="In" Local="False" />
290                                    </VariableInfos>
291                                    <Variables />
292                                    <Description>An operator that can be programmed for arbitrary needs.</Description>
293                                    <Code>if (Maximization.Data &amp;&amp; Quality.Data &gt; lBestQuality.Data || !Maximization.Data &amp;&amp; Quality.Data &lt; lBestQuality.Data) {
294  lBestQuality.Data = Quality.Data;
295  lBest.Data = Agent.Data;
296}</Code>
297                                  </ProgrammableOperator>
298                                </SubOperators>
299                                <VariableInfos />
300                                <Variables />
301                              </SequentialProcessor>
302                            </SubOperators>
303                            <VariableInfos />
304                            <Variables />
305                          </UniformSequentialSubScopesProcessor>
306                          <Sorter GUID="7bdf69f7-d92b-477e-9e72-0cdf49092099" />
307                          <ProgrammableOperator GUID="bd3031f0-b56d-4c1e-91af-626a897303c3" />
308                          <Counter GUID="57b51f31-fe03-4d78-a301-c9c6506cfe51" />
309                          <LessOrEqualThanComparator GUID="cbaf39d9-efe2-4135-9c31-73bfe45a80a0" />
310                          <ConditionalBranch GUID="641bf9d8-9c9b-47bf-af23-c5d9f403b6d0" />
311                        </SubOperators>
312                        <VariableInfos />
313                        <Variables />
314                      </SequentialProcessor>
315                      <EmptyOperator Type="HeuristicLab.Operators.EmptyOperator, HeuristicLab.Operators-3.2" GUID="a7c23277-2394-4a23-9a7e-68cf400cd6c7" Name="EmptyOperator">
316                        <SubOperators />
317                        <VariableInfos />
318                        <Variables />
319                      </EmptyOperator>
320                    </SubOperators>
321                    <VariableInfos>
322                      <VariableInfo Type="HeuristicLab.Core.VariableInfo, HeuristicLab.Core-3.2" GUID="7f838437-3e75-42af-8597-438e8ee6b569" ActualName="Continue" FormalName="Condition" Description="A boolean variable that decides the branch" DataType="HeuristicLab.Data.BoolData, HeuristicLab.Data-3.2" Kind="In" Local="False" />
323                    </VariableInfos>
324                    <Variables />
325                  </ConditionalBranch>
326                </SubOperators>
327                <VariableInfos />
328                <Variables />
329              </SequentialProcessor>
330              <OperatorExtractor GUID="04f81003-3bc6-4c9b-8a65-bf9aa7fc651f" />
331              <OperatorExtractor GUID="557b5088-5341-4711-ae6c-ca34b40b0031" />
332              <OperatorExtractor GUID="2a603c98-7a90-469a-a5b6-25d77c2d0349" />
333              <VariableInjector Type="HeuristicLab.Operators.VariableInjector, HeuristicLab.Operators-3.2" GUID="351fa0a4-d402-4497-90d5-490a6acb800f" Name="VariableInjector">
334                <SubOperators />
335                <VariableInfos>
336                </VariableInfos>
337                <Variables>
338                  <Variable Type="HeuristicLab.Core.Variable, HeuristicLab.Core-3.2" GUID="59d93cbd-3307-449b-8762-62570ce40535" Name="DoubleMatrixData (1)">
339                    <Value Type="HeuristicLab.Data.DoubleMatrixData, HeuristicLab.Data-3.2" GUID="9511edfd-dec5-4990-b803-8910ced404fe" Dimension1="1" Dimension2="1">0</Value>
340                  </Variable>
341                </Variables>
342              </VariableInjector>
343              <UniformRandomRealVectorGenerator GUID="169fc1a0-e428-421d-8056-ecaefc14195a" />
344              <SubScopesCreater GUID="0cfc4056-2424-4648-be41-74ef2c6fae8d" />
345              <UniformSequentialSubScopesProcessor GUID="ccfdf2a3-a005-411f-86e2-987a1728186e" />
346              <RandomInjector GUID="f4605c46-3449-4055-bf6c-013de9ed5255" />
347              <SequentialProcessor GUID="3870c261-1a39-4bc9-9dc5-e75e6127ee2e" />
348              <Sorter GUID="7bdf69f7-d92b-477e-9e72-0cdf49092099" />
349              <ProgrammableOperator GUID="bd3031f0-b56d-4c1e-91af-626a897303c3" />
350              <ProgrammableOperator GUID="c0a2ac0e-cb6c-4153-a615-067fede29588" />
351              <UniformSequentialSubScopesProcessor GUID="9b293bf5-39b8-4855-bd57-7448a5f678e4" />
352              <ProgrammableOperator GUID="24f6188a-7d12-4ea4-aed0-6b9f3932abd8" />
353              <UniformRandomRealVectorGenerator GUID="79b31356-4cdb-4c55-8031-534c9be1e379" />
354              <ProgrammableOperator GUID="32c3bf36-5750-4ae2-b595-e4ab503102d2" />
355              <ProgrammableOperator GUID="9f118892-84e9-47a3-88e3-319bdae68167" />
356              <SequentialProcessor GUID="b15eb5ad-a958-4304-a0d6-00d3444331da" />
357              <SequentialProcessor GUID="cd0501ea-a2df-49fa-bad5-7cc4a3bda02d" />
358              <ConditionalBranch GUID="641bf9d8-9c9b-47bf-af23-c5d9f403b6d0" />
359              <LessOrEqualThanComparator GUID="cbaf39d9-efe2-4135-9c31-73bfe45a80a0" />
360              <EmptyOperator GUID="a7c23277-2394-4a23-9a7e-68cf400cd6c7" />
361              <Counter GUID="57b51f31-fe03-4d78-a301-c9c6506cfe51" />
362            </Operators>
363            <InitialOperator GUID="01179c92-4c4b-475f-b935-4b45a2386772" />
364          </OperatorGraph>
365        </CombinedOperator>
366        <CombinedOperator GUID="dd25b0e5-f265-4f9c-af90-5b0ed405f02b" />
367        <CombinedOperator GUID="4906f50d-6828-4ee2-b7cd-b889ffed105a" />
368        <VariableInjector GUID="9c9a1f6e-a5f3-4b50-a9dc-b5025d1cace8" />
369      </Operators>
370      <InitialOperator GUID="0d077b10-8227-474d-a4e8-b1abdd316321" />
371    </OperatorGraph>
372    <GlobalScope Type="HeuristicLab.Core.Scope, HeuristicLab.Core-3.2" GUID="86f9d11f-d0d1-44e1-957c-da8a38d60033" Name="Global">
373      <Variables />
374      <Aliases />
375      <SubScopes />
376    </GlobalScope>
377    <ExecutionStack>
378      <AtomicOperation Type="HeuristicLab.Core.AtomicOperation, HeuristicLab.Core-3.2" GUID="ac5b663c-fd2b-4071-a541-834924f9bbd6">
379        <Operator GUID="0d077b10-8227-474d-a4e8-b1abdd316321" />
380        <Scope GUID="86f9d11f-d0d1-44e1-957c-da8a38d60033" />
381      </AtomicOperation>
382    </ExecutionStack>
383    <ExecutionTime>00:00:00</ExecutionTime>
384    <Priority>Normal</Priority>
385  </SequentialEngine>
386</Root>