| 363 | #endif // OPT_STATS |
| 364 | |
| 365 | void performOpt() |
| 366 | { |
| 367 | init( rnd ); |
| 368 | |
| 369 | #if OPT_STATS |
| 370 | int k; |
| 371 | |
| 372 | if( SelAlloc < MaxIters ) |
| 373 | { |
| 374 | SelAlloc = MaxIters; |
| 375 | |
| 376 | for( k = 0; k < getSelCount(); k++ ) |
| 377 | { |
| 378 | delete[] Sels[ k ]; |
| 379 | Sels[ k ] = new int[ MaxIters ]; |
| 380 | } |
| 381 | } |
| 382 | |
| 383 | memset( SumSels, 0, sizeof( SumSels )); |
| 384 | memset( SumSelIncrs, 0, sizeof( SumSelIncrs )); |
| 385 | memset( SumSelDecrs, 0, sizeof( SumSelDecrs )); |
| 386 | #endif // OPT_STATS |
| 387 | |
| 388 | int i = 0; |
| 389 | int ImprIters = 0; |
| 390 | |
| 391 | #if OPT_THREADS && OPT_TIME |
| 392 | double optt = 0.0; |
| 393 | funct = 0.0; |
| 394 | #endif // OPT_THREADS && OPT_TIME |
| 395 | |
| 396 | while( true ) |
| 397 | { |
| 398 | #if OPT_THREADS && OPT_TIME |
| 399 | TClock t1( CSystem :: getClock() ); |
| 400 | #endif // OPT_THREADS && OPT_TIME |
| 401 | |
| 402 | const int sc = optimize( rnd ); |
| 403 | |
| 404 | #if OPT_THREADS && OPT_TIME |
| 405 | optt += CSystem :: getClockDiffSec( t1 ); |
| 406 | #endif // OPT_THREADS && OPT_TIME |
| 407 | |
| 408 | #if OPT_STATS |
| 409 | CBiteSelBase** const s = getSels(); |
| 410 | |
| 411 | for( k = 0; k < getSelCount(); k++ ) |
| 412 | { |
| 413 | const int v = s[ k ] -> getSel(); |
| 414 | Sels[ k ][ i ] = v; |
| 415 | SumSels[ k ] += v; |
| 416 | |
| 417 | if( s[ k ] -> getIsSelected() ) |
| 418 | { |
| 419 | if( sc == 0 ) |
| 420 | { |
| 421 | SumSelIncrs[ k ][ v ]++; |
| 422 | } |
no test coverage detected