MATLAB Answers

optimization/permutation problem: select those rows in a matrix whose mean produces the maximal value of a certain function

8 views (last 30 days)
Felix on 7 Feb 2013
Lets say I have a matrix nxm and a certain function y=f(1:m) that uses a row (or the mean of several rows) of my matrix as input. Now I just want to find the right combination of the n rows that produce the highest y value. The difficulty is that for a high n (will be around 100) there are too many permutations possible (the solution can be a single row, or the mean of two, three, or all rows...).
How could I use the matlab optimization toolbox for my problem? Something like the function createOptimProblem, but instead of fitting parameters of a function to a curve, to use indices for the matrix rows as parameter...

3 Comments

ChristianW on 7 Feb 2013
I dont think its possible in that generalized way. The optimization function has 100 dimentions and there are only 2 states in every dimention.
Are you able to find an/the optima manually? If yes, you can maybe get information out of your matrix or your function-f. Like a f-output, that says: "i need a row with high values" or something.
Felix on 8 Feb 2013
I don't quite understand why it shouldn't be possible. If I had a fast enough computer I could just brute force calculate the function value for all combinations and there has to be an optimum. I can of course first calculate the function value for each row individually and set a certain threshold to reduce the dimensions (since its unlikely that a row that by itself has a very low function value, will contribute in a positive way).
ChristianW on 9 Feb 2013
Repeating myself. Its not possible in general. It might be possible in your case, depending on matrix M and function f. Do you want to show them?

Sign in to comment.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!