Originally Posted by
sigma relief
I was doing some thinking last night as how to implement such a brute force method and how long it would take to calculate. I figured the easiest way to run the calculations would be to generate an array of all reasonable mixture percentages of an arbitrary 5 component mixture. For starters, bounding this to 50,000 to 100,000 elements would be possible assuming a ~2-3% graduation of sizes and a limitations of 5-35% of any one component in the mixture.
From there, a similar array could be set up with all reasonable choices of ingredients. Either a rule can be added so that each smaller aggregate is within a certain percentage of the larger, or fields can be added to the material properties array to include the minimum and maximum number of smaller sizes to skip when choosing the next smaller component. This allows us to include all of the specialty ingredients at the bottom of the size range while preventing evaluation of mixtures using 3 “large” aggregates. The selection criteria for this array are not as straight forward for the creation of this array because each solution should have a broad size distribution, but a semi-intelligent parameter creation loop combined with a few go/no go tests at the end should create a list of between 5,000 and 10,000 mixture choices.
This array of mixture selections could probably be fed into the simulation program the way I understand how it works, but I am unaware of the processing time of that simulator. As it stands, there are a few hundred million to a few billion possible outcomes of such a simulation. For one machine to get this done in a month, it would need to generate 100 results a second. I am still trying to decide how best to implement the equations in Cameron’s paper, but because we are only solving for equations with known variables, an efficient bit of code that scans in a set of percentages as well as a set of mixture variables and crunches the numbers should be able to attain a decent throughput. While a month is still a long time for one PC to crunch numbers, the list of mixture choices can be broken into manageable size with a few hundred combinations and split among machines. I saw a mention that the current optimization code breaks up each element into multiple sub elements to account for the range of particle sizes in each bin. This will greatly increase processing, but I think it is the only way to go.
As for what to do with all the results, there is no one option. A local post processing to pull out all “bad” mixtures would help reduce the amount of data one machine has to process once it is merged, but defining bad is fuzzy. I think a reasonable minimum packing density and S value can be agreed upon, but it is a case where we have no idea what percentage of results will fall out. To keep the merged results manageable, we should probably be somewhat ruthless with the choice of minimum packing density because we are looking for all of the peaks in the solution area, we don’t much care for the middle ground. The unfortunate side effect of this is we loose sensitivity data. This data exists in the resulting array of all mixture ratios for a given set of components, but would require some detailed, but straightforward lookups for all mixtures within a set of ingredients. It may be useful to have a process which identifies the 5-10 “best” results from each batch of ingredients and looks up all mixtures within ~2% of them to look for minimum packing ratios. I would be willing to bet that most results will be closely related, but that would add credit to a coarse 2-3% mesh. If only 10 results are reported along with sensitivity data of some form, we would have <100,000 data points, of which quite a few could be removed because they are merely the best of a bad option. This would leave enough results that a garden variety spreadsheet can be used to view the results and do calculations such as cost, density, and such. While we would never be able to optimize for these parameters because much of the data is lost, I’m sure a reasonable minimum could be found in the data.
Unfortunately this whole thought experiment leads us to a pile of unchangeable data, users can’t simply tell the program what they have and get a result which is the ultimate goal. With that said, at least a few modules of such a piece of code would be helpful. I think a sensitivity analysis of our current data would be in order just as a sanity check to make sure we didn’t stumble into a more expensive and possibly more difficult to mix recipe for a negligible gain in density. If we had the full mixture results form even a few of the proposed ingredient lists that have been mentioned, we could see the interactions of cost and density just to get a feel for how far from optimal we can move.
Cameron, I would be interested to know the details of the process you use to break each nominal size aggregate down into more representative components. If you already stated this, I must not have fully appreciated its impact at the time.
Please forgive my use of the word “we”, I do not consider myself a member of this excellent thread, but I have been reading since mid November when I stumbled across the Zone.