bbopt / nomad

NOMAD - A blackbox optimization software
https://nomad-4-user-guide.readthedocs.io/
GNU Lesser General Public License v3.0
116 stars 24 forks source link

Some examples run unsucessfully in NOMAD4, but successuly in NOMAD3.9.1 #71

Closed windless1015 closed 2 years ago

windless1015 commented 2 years ago

Hi, I am new using the NOMAD to do a evaluation of a problem. When I download the NOMAD 4 and modify the single_obj file to a simple objective function like y=sin(x) x x, every parameter seems set good. NOMAD4 will run into a dead loop while NOMAD3.9.1 will run with best feasible solution immediately. They are the same project in different libraries. 3 4 I am not sure this is normal for using NOMAD. Thank you

ctribes commented 2 years ago

I ran the test on my machine with gcc and openMP and I cannot replicate what you observe

~/Development/NOMAD_4_Dev/bin/nomad param.txt
BBE ( SOL ) OBJ
1   (   0        )    0       
2   (  -1        )   -0.841471
3   (  -4        )   12.1088  
4   (  -2        )   -3.63719 
5   (  -3        )   -1.27008 
6   (  -5        )   23.9731  
7   (   3        )    1.27008 
8   (  -2.04     )   -3.71185 
9   (  -2.16     )   -3.8789  
10  (  -1.16     )   -1.23365 
11  (  -2.52     )   -3.69803 
12  (  -2.1      )   -3.80675 
13  (  -2.22     )   -3.92579 
14  (  -2.28     )   -3.94497 
15  (  -2.4      )   -3.89067 
16  (  -2.34     )   -3.93403 
17  (  -2.31     )   -3.94341 
18  (  -2.25     )   -3.939   
19  (  -2.3      )   -3.94478 
20  (  -2.26     )   -3.9418  
21  (  -2.29     )   -3.9453  
22  (  -2.32     )   -3.94116 
23  (  -2.27     )   -3.9438  
24  (  -1.79     )   -3.12743 
25  (  -2.09     )   -3.79245 
26  (  -2.19     )   -3.90566 
27  (  -2.2884   )   -3.9453  
28  (  -2.2916   )   -3.94527 
29  (  -2.2892   )   -3.9453  
30  (  -2.24     )   -3.93538 
31  (  -2.2905   )   -3.94529 
32  (  -2.2887   )   -3.9453  
33  (  -2.2889   )   -3.9453  
34  (  -2.288874 )   -3.9453  
35  (  -2.285    )   -3.94524 
36  (  -2.29005  )   -3.9453  
37  (  -2.289192 )   -3.9453  
38  (  -2.288    )   -3.9453  
39  (  -2.29002  )   -3.9453  
40  (  -2.289029 )   -3.9453  

BBE ( SOL ) OBJ
41  (  -2.289    )   -3.9453  
42  (  -2.29001  )   -3.9453  
43  (  -2.2895   )   -3.9453  
44  (  -2.2898   )   -3.9453  
45  (  -2.2902   )   -3.94529 
46  (  -2.2908   )   -3.94529 
47  (  -2.2896   )   -3.9453  
48  (  -2.2899   )   -3.9453  
49  (  -2.2901   )   -3.9453  
50  (  -2.28995  )   -3.9453  
51  (  -2.289975 )   -3.9453  
52  (  -2.290025 )   -3.9453  
53  (  -2.28998  )   -3.9453  
54  (  -2.28999  )   -3.9453  
55  (  -2.289995 )   -3.9453  
56  (  -2.290005 )   -3.9453  
57  (  -2.289998 )   -3.9453  
58  (  -2.290002 )   -3.9453  
59  (  -2.289998 )   -3.9453  
60  (  -2.289999 )   -3.9453  
61  (  -2.290001 )   -3.9453  
62  (  -2.289999 )   -3.9453  
63  (  -2.290001 )   -3.9453  
64  (  -2.29     )   -3.9453  
65  (  -2.29     )   -3.9453  
66  (  -2.29     )   -3.9453  
67  (  -2.29     )   -3.9453  
68  (  -2.29     )   -3.9453  
69  (  -2.29     )   -3.9453  
70  (  -2.29     )   -3.9453  
71  (  -2.29     )   -3.9453  
72  (  -2.29     )   -3.9453  
73  (  -2.29     )   -3.9453  
74  (  -2.29     )   -3.9453  
75  (  -2.29     )   -3.9453  
76  (  -2.29     )   -3.9453  
77  (  -2.29     )   -3.9453  
78  (  -2.29     )   -3.9453  
79  (  -2.29     )   -3.9453  
80  (  -2.29     )   -3.9453  

BBE ( SOL ) OBJ
81  (  -2.29     )   -3.9453  
82  (  -2.29     )   -3.9453  
83  (  -2.29     )   -3.9453  
84  (  -2.29     )   -3.9453  
85  (  -2.29     )   -3.9453  
86  (  -2.29     )   -3.9453  
87  (  -2.29     )   -3.9453  
88  (  -2.29     )   -3.9453  
89  (  -2.29     )   -3.9453  
90  (  -2.29     )   -3.9453  
91  (  -2.29     )   -3.9453  
92  (  -2.29     )   -3.9453  
93  (  -2.29     )   -3.9453  
94  (  -2.29     )   -3.9453  
95  (  -2.29     )   -3.9453  
96  (  -2.29     )   -3.9453  
97  (  -2.29     )   -3.9453  
98  (  -2.29     )   -3.9453  
99  (  -2.29     )   -3.9453  
100 (  -2.29     )   -3.9453  
101 (  -2.29     )   -3.9453  
102 (  -2.29     )   -3.9453  
103 (  -2.29     )   -3.9453  
104 (  -2.29     )   -3.9453  
105 (  -2.29     )   -3.9453  
106 (  -2.29     )   -3.9453  
107 (  -2.29     )   -3.9453  
A termination criterion is reached: No termination (all). Mesh minimum precision reached (Algo)

Best feasible solution:     #2544 ( -2.29 ) Evaluation OK    f =  -3.9453000000000000291     h =   0                     

Best infeasible solution:   Undefined.

Blackbox evaluations:        107
Total model evaluations:     7296
Cache hits:                  150
Total number of evaluations: 257 

The sin(x)*x*x function has an infinite number of local minima, but I doubt that Nomad can jump from one local optimum to another one for ever and display nothing. To better understand what is going on, I suggest to add "DISPLAY_ALL_EVAL yes" into the parameter file. Other tests :

windless1015 commented 2 years ago

Thank for your help. I have tested again and modify the display parameters and it shows all the information. As you said, it is searching and display nothing previously. But there are two problems to be addressed. 1. NOMAD3.9.1 runs faster than NOMAD4 and get the local optinum. 2. Lower bound is -PI, Upper bound is 2PI, it has come to the local optinum. The gloabl optinum is x=5.087 临时 临时2

ctribes commented 2 years ago

Nomad 4 is slower than Nomad 3 for the same number of evaluations. I will investigate ways to improve Nomad 4 in the future. That being said, Nomad is designed for costly (time) blackbox optimization problems. For these problems, the time for blackbox evaluation should be much bigger than the time for algorithm computations.

To search more globally in the design space, you can activate the VNS search (VNS_MADS_SEARCH yes in the parameter file) and remove the MAX_BB_EVAL. The VNS search is not enabled by default because it requires more evaluations.

windless1015 commented 2 years ago

Thank you very much. I will focus on your project. I appreciate your great work.