| 1166 | */ |
| 1167 | |
| 1168 | void generateSol6( CBiteRnd& rnd ) |
| 1169 | { |
| 1170 | ptype* const Params = TmpParams; |
| 1171 | |
| 1172 | const double r = rnd.getPow( 4.0 ); |
| 1173 | const int si = (int) ( r * CurPopSize ); |
| 1174 | |
| 1175 | double v[ 2 ]; |
| 1176 | v[ 0 ] = getRealValue( getParamsOrdered( si ), |
| 1177 | rnd.getInt( ParamCount )); |
| 1178 | |
| 1179 | if( rnd.getBit() ) |
| 1180 | { |
| 1181 | v[ 1 ] = getRealValue( getParamsOrdered( si ), |
| 1182 | rnd.getInt( ParamCount )); |
| 1183 | } |
| 1184 | else |
| 1185 | { |
| 1186 | v[ 1 ] = v[ 0 ]; |
| 1187 | } |
| 1188 | |
| 1189 | const double m = 1.0 - r * r; |
| 1190 | v[ 0 ] *= m; // Move towards real 0, useful for some functions. |
| 1191 | v[ 1 ] *= m; |
| 1192 | |
| 1193 | int i; |
| 1194 | |
| 1195 | for( i = 0; i < ParamCount; i++ ) |
| 1196 | { |
| 1197 | Params[ i ] = (ptype) (( v[ rnd.getBit() ] - MinValues[ i ]) * |
| 1198 | DiffValuesI[ i ]); |
| 1199 | } |
| 1200 | } |
| 1201 | |
| 1202 | /** |
| 1203 | * A solution generator that randomly combines solutions from the main |