Answer the question
In order to leave comments, you need to log in
Which optimization algorithm to choose?
Hello.
It is necessary to choose an algorithm for finding the minimum of a function in 4 coordinates (the maximum and minimum coordinates are known). It is advisable to use the minimum value of the points for the search. each point takes about 2 hours to calculate the value of the function. Presumably the function has one minimum.
Thanks
Answer the question
In order to leave comments, you need to log in
I don't understand.
Are you studying an optimization course and you need to do such a task? Then you should have been told about the advantages and disadvantages of each method. Apply this knowledge, what is stopping you?
Or did you decide to solve this problem without having the slightest idea about the topic at all? And they came here, so that without knowing your data, or your function, or your task, or the resources of your computer, someone, by insight, poked into some method. And will you believe him? In fact, in this case, you just try to shift the responsibility for the decision to someone else?
Well, you must understand that it is impossible to objectively choose the "correct method" by such completely uninformative signs.
And if suddenly your function is so complicated that each value is calculated for about 2 hours (I can hardly imagine it. Do you think on a calculator, or what?) Then try to select a method by greatly simplifying your function, and try it on this simplified model test several optimization techniques. This is an elementary and natural solution for any more or less qualified engineer.
I like the genetic algorithm (in Matlab you can still run it for integer values of coordinates, i.e. you can introduce grid discretization).
But 2 hours of calculating one point is either the wrong algorithm, or the interpreter instead of the compiler. Perhaps the model needs to be simplified first.
In the general case, google is a multidimensional optimization (you have only 4 indicators, and even values on known boundaries - lafa, it’s easier to visualize)
If the collected readings are noisy, then you can deal with them only by increasing the number of readings (calculations)
The process is creative.
Unfortunately, there is no universal algorithm, above the author gave a screen (a cut by 3 indicators, he could visualize the fourth with color) a very unsuccessful function, a large plateau to look for a minimum on it is sad, and all methods revolve around finding additional information about the function.
Alternatively, you can try to look for a way to simplify (accelerate calculations), but it depends on them, for example, if the final value of the function is the sum of a large number of internal inconsistent steps that can be skipped or reordered, then you can use an approximate solution using a smaller number of these steps, chosen at random, or rather in such a way that the average difference of this simplified estimate does not differ from the real one.
You can also study the change in these intermediate steps, from which the final value is calculated, how their value changes from changing the criteria separately.
One of the simple methods of multidimensional optimization is to build a Jacobian matrix, calculate the derivative by changing each criterion by the minimum step, and so the same matrix can be built using these internal steps, they will show which criterion in which case is more important and therefore its change will make more sense than trying to completely recalculate for the function for each criterion
ps , you can add a complication to the function that behaves more pronouncedly at the points under study, roughly speaking, 1/(f(x)-a) will change more strongly for the values of the original function near the point a (careful with division by 0, at this point this approach will give an undefined result and may need to be recalculated), i.e. where the function itself seems to plateau, raising to a negative power maximizes minor movements and can help to find the
upd difference. look at weka, the framework is written in java, there is a gui, both for choosing algorithms and for visualization (weak), as a starting point for searching for algorithms to and and see what is there and try what is not clear, drive the name of the algorithm into Google and look for details
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question