Thanks for the feedback and kind words, everyone. Here's a few answers to questions:
If you publish anything (formally or informally) please consider sharing it here.
Of course. I was thinking of perhaps doing it in ROCKETS, though since you guys all helped out you'd get a sneak preview :cyclops:
I can't wait to see the size, shape and position you come up with & how it will compare to whats pushing the envelope now. What I'm really curious about is the placement of fins from rear of tube to enhance laminar flow, and size of fillets [or none at all] for optimum performance on a given diameter airframe. And exactly how close you can actually get away with the CP/CG positions.
For sure. Right now the optimizer is a bit crude, but down the line I hope to add in more data to get a better idea of what's going on. I'll definitely report everything I find. The problem with the most optimal designs so far is that they'd be quite difficult to construct; the fins are very swept back with small root chords (think 737 wings), so I'm hoping that people's "sexy" instincts go somewhat hand-in-hand with their "I can make that rocket stay together" instincts. (Yea, I could tie some structural sims in, but aeroelasticity is a b*tch and there's only so much time in the day!) This also ties in to...
Very cool! I was actually doing some testing of my own today with some CFD on fin location like Jim mentioned.
No no, that's not a hijack, haha! At the moment the script calls Missile DATCOM to generate Cd(M) and Cp(M) information, but anyone who's played with it knows how much of a pain it can be. The wrapper input/output files generated by the optimizer are somewhat limited in scope. If you've got CFD capability, it'd be awesome to generate some response surfaces for stuff DATCOM has trouble with (like, uh, turbulence and fillets) and add that knowledge to the routine. I'll bug you offline...
Boy, you are really getting into your work!
(I know, I know, you meant generic)
Haha nope, it actually is a *genetic* algorithm. It first encodes the design space -- at the moment fin shape, fin placement, and nose type -- into a set of binary variables. The code then generates a random population of designs that fills the space relatively well. Each design is run through DATCOM, looking primarily at Cd and Cp data (though all aero data is read in for future use). It then "competes" random designs from the pool against each other, looking for the lowest transonic Cd.
If the vehicle is statically unstable at the minimum Cp location, a penalty is applied to the Cd that is proportional to the magnitude of the instability. The winning designs from the competition are then "bred" using uniform crossover to create two children (for each bit, generate a random number P, if P < 0.5 the first child gets the first parent's bit/second child gets the second parent's, if P > 0.5 it's the other way around). These children are then evaluated, compete again, and the cycle continues. Roughly 0.2% of the time, a "mutation" (random bit flip) occurs which adds diversity to the design space; if the mutation is helpful, it competes well, if not it dies out in the competition.
The algorithm iterates until the bit string affinity (basically the "sameness" of the designs) reaches 90%, or until it produces four best designs in a row with identical fitness function values.
GA isn't really an "optimization" technique, per se, since optimality can't be proven at the resulting best design. But it works pretty well for examining global behavior of non-smooth functions with discrete variables (e.g. nose design -- it's impossible to take the gradient of "ogive to von karman"), and can be used to potentially zero in on a corner of the global design space where a more traditional optimization method can be used.
Is your software designed to address subsonic designs only (low-power?), or to include transonic and supersonic rockets (high-power)?
Right now, I'm looking primarily at the transonic region, but it's easy enough to expand the design space to include more information. As I said, it's a very crude algorithm right now, so there's lots of work to be done. (No dynamic stability information is evaluated at the moment, for instance. It's my side project, not my day job, le sigh...)
Are the fins assumed to be airfoiled? Sharp or round leading edge? (Or square?) Tapered trailing edge? (Or square?) Tapered fin thickness from root to tip?
Fins are constant-thickness hexagonal airfoils 25% of the root chord length at the leading and trailing edges with 0.01" radii on the top/bottom. When I did a few runs including airfoil parameters in the
Are you going to use any trade-offs on fin aspect ratio? (span-to-area ratio)
The algorithm takes care of that... it examines designs from all over the space. My goal with this poll is to generate a series of ratios as you describe here to "guide" the optimizer to make a more viable design.
Again, thanks to all for your support and help. The more, the better!