MCPcopy Create free account
hub / github.com/avaneev/biteopt / optimize

Method optimize

spheropt.h:136–223  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

134 */
135
136 int optimize( CBiteRnd& rnd )
137 {
138 double* const Params = getCurParams();
139 int i;
140
141 if( DoInitEvals )
142 {
143 DoInitEvals = false;
144
145 for( i = 0; i < ParamCount; i++ )
146 {
147 Params[ i ] = CentParams[ i ];
148 NewValues[ i ] = getRealValue( CentParams, i );
149 }
150 }
151 else
152 {
153 double s2 = 1e-300;
154
155 for( i = 0; i < ParamCount; i++ )
156 {
157 Params[ i ] = rnd.get() - 0.5;
158 s2 += Params[ i ] * Params[ i ];
159 }
160
161 const double d = Radius / sqrt( s2 );
162
163 if( ParamCount > 4 )
164 {
165 for( i = 0; i < ParamCount; i++ )
166 {
167 Params[ i ] = wrapParam( rnd,
168 CentParams[ i ] + Params[ i ] * d );
169
170 NewValues[ i ] = getRealValue( Params, i );
171 }
172 }
173 else
174 {
175 for( i = 0; i < ParamCount; i++ )
176 {
177 const double m = JitOffs + rnd.get() * JitMult;
178
179 Params[ i ] = wrapParam( rnd,
180 CentParams[ i ] + Params[ i ] * d * m );
181
182 NewValues[ i ] = getRealValue( Params, i );
183 }
184 }
185 }
186
187 const double NewCost = fixCostNaN( optcost( NewValues ));
188 NewCosts[ 0 ] = NewCost;
189
190 updatePop( NewCost, Params );
191 updateBestCost( NewCost, NewValues );
192
193 AvgCost += NewCost;

Callers

nothing calls this directly

Calls 1

getMethod · 0.80

Tested by

no test coverage detected