@@ -333,22 +333,27 @@ mod tests {
333
333
let _ = std:: fs:: remove_file ( format ! ( "{outdir}/{DOE_INITIAL_FILE}" ) ) ;
334
334
let _ = std:: fs:: remove_file ( format ! ( "{outdir}/{DOE_FILE}" ) ) ;
335
335
let xlimits = array ! [ [ 0.0 , 25.0 ] ] ;
336
- let doe = Lhs :: new ( & xlimits ) . sample ( 10 ) ;
337
- let res = EgorBuilder :: optimize ( xsinx)
338
- . configure ( |config| config. max_iters ( 15 ) . doe ( & doe) . outdir ( outdir) . seed ( 42 ) )
336
+ let doe = array ! [ [ 0. ] , [ 7. ] , [ 23. ] ] ;
337
+ let _ = EgorBuilder :: optimize ( xsinx)
338
+ . configure ( |config| config. max_iters ( 2 ) . doe ( & doe) . outdir ( outdir) . seed ( 42 ) )
339
339
. min_within ( & xlimits)
340
340
. run ( )
341
341
. expect ( "Minimize failure" ) ;
342
- let expected = array ! [ 18.9 ] ;
343
- assert_abs_diff_eq ! ( expected, res. x_opt, epsilon = 1e-1 ) ;
342
+
343
+ let filepath = std:: path:: Path :: new ( & outdir) . join ( DOE_FILE ) ;
344
+ assert ! ( filepath. exists( ) ) ;
345
+ let doe: Array2 < f64 > = read_npy ( & filepath) . expect ( "file read" ) ;
344
346
345
347
let res = EgorBuilder :: optimize ( xsinx)
346
- . configure ( |config| config. max_iters ( 5 ) . outdir ( outdir) . hot_start ( true ) . seed ( 42 ) )
348
+ . configure ( |config| config. max_iters ( 3 ) . outdir ( outdir) . hot_start ( true ) . seed ( 42 ) )
347
349
. min_within ( & xlimits)
348
350
. run ( )
349
351
. expect ( "Egor should minimize xsinx" ) ;
350
- let _ = std:: fs:: remove_file ( format ! ( "target/test_egor_builder/{DOE_INITIAL_FILE}" ) ) ;
351
- let _ = std:: fs:: remove_file ( format ! ( "target/test_egor_builder/{DOE_FILE}" ) ) ;
352
+ let doe2: Array2 < f64 > = read_npy ( & filepath) . expect ( "file read" ) ;
353
+ assert_eq ! ( doe2. nrows( ) , doe. nrows( ) + 3 ) ;
354
+
355
+ let _ = std:: fs:: remove_file ( format ! ( "{outdir}/{DOE_INITIAL_FILE}" ) ) ;
356
+ let _ = std:: fs:: remove_file ( format ! ( "{outdir}/{DOE_FILE}" ) ) ;
352
357
let expected = array ! [ 18.9 ] ;
353
358
assert_abs_diff_eq ! ( expected, res. x_opt, epsilon = 1e-1 ) ;
354
359
}
@@ -390,17 +395,33 @@ mod tests {
390
395
391
396
#[ test]
392
397
#[ serial]
393
- fn test_rosenbrock_2d_trego_egor_builder ( ) {
398
+ fn test_rosenbrock_2d_no_trego_egor_builder ( ) {
399
+ let outdir = "target/test_trego" ;
400
+ let _ = std:: fs:: remove_file ( format ! ( "{outdir}/{DOE_INITIAL_FILE}" ) ) ;
401
+ let _ = std:: fs:: remove_file ( format ! ( "{outdir}/{DOE_FILE}" ) ) ;
394
402
let now = Instant :: now ( ) ;
395
403
let xlimits = array ! [ [ -2. , 2. ] , [ -2. , 2. ] ] ;
396
- let doe = Lhs :: new ( & xlimits)
404
+ let init_doe = Lhs :: new ( & xlimits)
397
405
. with_rng ( Xoshiro256Plus :: seed_from_u64 ( 42 ) )
398
406
. sample ( 10 ) ;
407
+ let max_iters = 20 ;
399
408
let res = EgorBuilder :: optimize ( rosenb)
400
- . configure ( |config| config. doe ( & doe) . max_iters ( 20 ) . seed ( 42 ) . trego ( true ) )
409
+ . configure ( |config| {
410
+ config
411
+ . doe ( & init_doe)
412
+ . max_iters ( max_iters)
413
+ . outdir ( outdir)
414
+ . seed ( 42 )
415
+ . trego ( false )
416
+ } )
401
417
. min_within ( & xlimits)
402
418
. run ( )
403
419
. expect ( "Minimize failure" ) ;
420
+ let filepath = std:: path:: Path :: new ( & outdir) . join ( DOE_FILE ) ;
421
+ assert ! ( filepath. exists( ) ) ;
422
+ let doe: Array2 < f64 > = read_npy ( & filepath) . expect ( "file read" ) ;
423
+ assert_eq ! ( doe. nrows( ) , init_doe. nrows( ) + max_iters) ; // we get one point per iter
424
+
404
425
println ! ( "Rosenbrock optim result = {res:?}" ) ;
405
426
println ! ( "Elapsed = {:?}" , now. elapsed( ) ) ;
406
427
let expected = array ! [ 1. , 1. ] ;
0 commit comments