Yes it does look like a partitioning problem but for reals not just integers. The best solution is indeed supposed to be something similar to a neural network, but so far the example solutions I found which build a tree and walk it (my earlier idea was to have N tree-walkers where N is also the number of workers when parallel processing of the jobs begin) seem to have errors in the method. My latest idea taken from various replies and munged/improved, is to start by putting the biggest five each in their own child process (that first step is obviously right though difficult to prove) and have each worker, on finishing a job, solve the remaining tree for what to take next. The dynamic solution of only 25 processes takes no time compared with the heavy jobs being performed.