MATLAB Answers

what is the function that the same as perms however can used n more than 10?

when i build a coding i used n less than 10, i used perms function.. then when get the correct coding the i test the coding in various size of n, which is n more than 10, however the length for perm is less than 10. what is the same function as perm, but can used for n more than 10?

  0 Comments

Sign in to comment.

2 Answers

Answer by OCDER
on 3 Jul 2018
 Accepted Answer

I think you need to make your own function of perms, but one that only returns 1 of many permutations at a time. When you past n = 10, you'll run out of memory fast.
3.5 GB n = 11
46.0 GB n = 12
647.6 GB n = 13
9764.0 GB n = 14
One suggestion is to make a classdef object that track the ith permutation and will continuously return the the next permutation. But read this link as your attempt to compute permutations for n >> 11 gets fairly impossible...

  12 Comments

Hi Sharifah, no one is mad here - we're just confused as to why you need to do this massive calculation. So, looks like you are indeed solving a very tough NP-hard problem.
The issue will be making the permutations without using 100% RAM - see the file exchange links that @Stephen posted in his answer. This solves the memory issue, but not the CPU issue. It'll be slow, unless you can figure out a way to break this up into blocks of independent jobs and use Parallel Computing Toolbox to cut times roughly by the number of cores you have. You should also consider making MEX/C++ files to speed up simple and highly repetitive calculations. GPU processing could also help. This is quite an advanced problem so there isn't really a simple solution we can provide.
https://www.mathworks.com/matlabcentral/fileexchange/53110-quadratic-assignment-problem--qap--using-ga--pso-and-fa
https://github.com/cshen/quadratic-assignment-problem
i know this is an NP hard problem i have been doing this amlost 4 years now..i used randperm but it didnt satisfied my need....i also will also consider making MEX/C++ files after this...this stage is about finding optimal solution using branch n bound..i know need a lot of time for that...later i will use GA.. thank you everyone for answering my question..thank you so much

Sign in to comment.


Answer by Stephen Cobeldick on 3 Jul 2018

One option would be to use a permutation generator, which does not store all permutations in memory:
etc.
I leave it up to the reader to decide if running through all permutations is tractable or not.