Parallel many dimensional optimization

后端 未结 7 1947
萌比男神i
萌比男神i 2021-02-07 20:48

I am building a script that generates input data [parameters] for another program to calculate. I would like to optimize the resulting data. Previously I have been using the num

7条回答
  •  执念已碎
    2021-02-07 21:27

    If I haven't gotten wrong what you are asking, you are trying to minimize your function one parameter at the time.

    you can obtain it by creating a set of function of a single argument, where for each function you freeze all the arguments except one.

    Then you go on a loop optimizing each variable and updating the partial solution.

    This method can speed up by a great deal function of many parameters where the energy landscape is not too complex (the dependency between the parameters is not too strong).

    given a function

    energy(*args) -> value
    

    you create the guess and the function:

    guess = [1,1,1,1]
    funcs = [ lambda x,i=i: energy( guess[:i]+[x]+guess[i+1:] ) for i in range(len(guess)) ]
    

    than you put them in a while cycle for the optimization

    while convergence_condition:
        for func in funcs:
            optimize fot func
            update the guess
        check for convergence
    

    This is a very simple yet effective method of simplify your minimization task. I can't really recall how this method is called, but A close look to the wikipedia entry on minimization should do the trick.

提交回复
热议问题