Hi Mathew, Here are some things to think about: First, is there a way to decompose 'f' so that it computes only one or a subset of K values, but in 1/N ( K/N) time? If so, you can decompose your problem into N single optimizations. Presumably not, but I think it's worth asking. Second, what method would you use if you were only trying to solve the problem for one column? I'm thinking about a heuristic solution involving caching, which is close to what an earlier poster suggested. The idea is to cache complete (length N) results for each call you make. Whenever you need to compute f(x,y), consult the cache to see if there's a result for any point within D of x,y (look up "nearest neighbor search"). Here D is a configurable parameter which will trade off the accuracy of your optimization against time. If there is, use the cached value instead of calling f. Now you just do the "rinse-repeat" algorithm, but it should get progressively faster (per column) as you get more and more cache hits. Possible augmentations: 1) Within the run for a given column, adjust D downward as the optimization progresses so you don't reach a "fixed-point" to early. Trades time for optimization accuracy. 2) When finished, the cache should have "good" values for each column which were found on the pass for that column, but there's no reason not to scan the entire cache one last time to see if a later pass stumbled on a better value for an earlier column. 3) Iterate the entire procedure, using each iteration to seed the starting locations for the next - might be useful if your function has many local minima in some of the N output dimensions.
Mathew Yeates wrote: > > Sebastian Walter wrote: >> N optimization problems. This is very unusual! Typically the problem >> at hand can be formulated as *one* optimization problem. >> >> > yes, this is really not so much an optimization problem as it is a > vectorization problem. > I am trying to avoid > 1) Evaluate f over and over and find the maximum in the first column. > Store solution 1. > 2) Evaluate f over and over and find the max in the second column. Store > solution 2. > Rinse, Repeat > _______________________________________________ > Numpy-discussion mailing list > Numpy-discussion@scipy.org > http://mail.scipy.org/mailman/listinfo/numpy-discussion > > -- View this message in context: http://www.nabble.com/hairy-optimization-problem-tp23413559p23428578.html Sent from the Numpy-discussion mailing list archive at Nabble.com. _______________________________________________ Numpy-discussion mailing list Numpy-discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion