The short version of my question is: I designed this algorithm for finding a solution for an inverse problem. Based on my research it is a new algorithm, does anyone know a similar algorithm?
My algorithm: Suppose we are looking for a solution (or a model) for an inverse problem. The solution has M parameters.
1) I start with N random solutions (again each of them has M parameters).
2) Each solution with interact with another solution. For example solution A interacts with solution B. When these two solutions interact solution A borrows a parameter (for example the third parameter) from solution B. With the new parameter solution A measures its RMS error (based on the objective/error function that is defined for this problem) and compare it to its original RMS error (before borrowing the parameter from solution B).
3) If the RMS error after borrowing is improved the solution A give +1 score to solution B, otherwise it will give -1 score to solution B.
4) The same interaction happens between solution B and A (now B borrows a parameter and gives score to A).
5) The same interaction happens between all other N solutions (therefore total interactions = N^2).
6) The interaction is just borrowing and scoring. After scoring, each solution will go back to its original parameters.
7) After all solutions interacted with each other, solution with the lowest score will be removed and replaced by another random solution.
8) Also, solution with the highest score randomly gives one of its parameters to each solution.
9) Steps 1-8 will repeat again.
10) The process continues for P times or until the error of one of the solutions reaches below a threshold value.
I tested this algorithm for a problem and it converges quickly (please look at the link at the end). I just want to see if there is any similar or same algorithm. Do you know any similar algorithm for the solution of inverse problems?