What's the difference between Maximum Iteration and Maximum function evaluation for comparing performance of algorithms? Which one is better or more reasonably?
Assume you have a population of x individuals/solutions, each of which gets evaluated once in a single iterations. This means that in every iteration of your algorithm, the evaluation function is called x number of times (once for each individual/solution). Hence, you have the relationship:
Number of function evaluations = Number of iterations * x
Usually, researchers set the maximum number of function evaluations as the stoppage criterion so as to make sure that the algorithms being compared have sampled the search space equal number of times.
Recent studies for PSO showed that the number of individuals x plays an important role as well:
Andries P. Engelbrecht:
Fitness function evaluations: A fair stopping condition? SIS 2014: 181-188
An iteration of the algorithm translates a population to new structure of individuals (decisions). However thus it is possible that the maximum value of fitness function doesn't change. Therefore, for different algorithms the speed of change of the maximum value of fitness function will be various. On the other hand, various algorithms can have various dimension of the population of individuals (decisions). Therefore, transition time for the population from one generation to the following for different algorithms will be various. As a result it can appear that the algorithm in which for search of the optimum decision the smaller number of iterations was processed can appear faster algorithm.
Here I present an example for you. Assume that your population size is fixed to 100 and you perform 10 iterations. Thereby, the maximum number of Iterations will be 10. However the maximum number of function evaluations will be 1000 which is equal to 100x10. It is very simple.
بعضی از الگوریتم ها (مانند الگوریتم پرنده فاخته) ذات شان به گونه ای است که برای توقف الگوریتم از تعداد ارزیابی تابع هدف استفاده می کند. چون تعداد جمعیت در هر نسل یکسان نبوده و در طی اجرا از نسلی به نسل دیگر تغییر می کند. بنابراین شرط تعداد ارزیابی تابع هدف برای توقف برنامه، بهترین گزینه در این مورد می باشد.
در الگوریتم های دیگری (مانند الگوریتم ژنتیک) تعداد تکرار می تونه گزینه مناسبی باشه چون اندازه جمعیت در طول فرآیند اجرا ثابت بوده و از نسلی به نسل دیگر تغییر نمی کند. بنابراین شرط پایان برنامه تعداد تکرار می تونه باشه. در نتیجه اندازه جمعیت ضربدر تعداد تکرار می شه تعداد ارزیابی تابع هدف.
البته شما می تونید کیفیتی از جواب را هم برای توقف برنامه تون در نظر بگیرید. مثلا اگر برنامه به فلان جواب رسید متوقف بشه که این گزینه در مورد تمام الگوریتم ها می تونه به عنوان شرط خاتمه در نظر گرفته بشه.
اگه بازم نیازی دیدید در حد توان می تونم راهنمایی کنم.
The concept of iteration also applies to local search method which are not based in populations. For comparison purposes, you have to give the algorithms the same amount of "resources".
Usually, the number of fitness function calls is taken as "resource"
What's the difference between Maximum Iteration and Maximum function evaluation?
Suppose you run Genetic Algorithm with 10 iteration and 50 population number. Your Maximum Iteration in this sample is 10, but your Maximum function evaluation is 10*50=500. Because you have to call your function for evaluating for each individual in each iteration. Therefore, you call 50 time your function in each iteration and the overall function evaluation in 10 iteration will be 500.
Dear Prof Mohammed El-Abd , kindly please let me know the source (journal article) that describe as your earlier statement related to the relation between the number of funct. evaluat. and the number of iteration for population x as follows:
Number of function evaluations = Number of iterations * x