I've been working on an optimization of a conceptual aircraft. I've tried many things already, but so far no luck. Up until now the optimization ended prematurely, or stopped at an infeasible point, often with half of the input variables left untouched. I want to start all over again, by first selecting a suitable function.
I've tried to use the fmincon function before. However it gets stuck at infeasible local minimums every time. I tried dozens of starting points, but no luck. I have been able to find a feasible solution myself, so I know it is possible. Fmincon seemed to only improve the objective value and sort of just hopes it becomes feasible as well.
Walter Roberson pitched the idea of using fgoalattain. This is a multi-objective optimization function. I'm still not sure if this is the right one, since I have only one real objective. In case I want to use the fgoalattain function, all constraints become objectives. Would this be the right function to use for my problem? Or should a use a completely different function?
Here's what I want to do:
I have 31 variables, describing the planform and the tail size of the aircraft. There are 24 constraints, a few examples are: runway length required to take-off, stall speeds, cabin size, stability margins etc.
Those variables depend on the input vector through a whole series of subfunctions, which are quite complicated in some cases.
The start vector is a first guess and is likely to be infeasible. Usually about 1-5 of the constraints are violated. It is not likely that the first guess is completely off, since the input vector is constructed based on quick estimations.
The objective is to make the aircraft feasible in the first place and secondly maximize the range. A single run to make and analyze an aircraft takes approximately 30 seconds and I want to keep the total optimization time under 24 hours. My program does not calculate analytical derivatives for the input variables.
Whenever a constraint is violated, I have an amount by which it is violated. For the runway length this may for example be something like 120m violation of the required runway length. For stability margins this may be something like 0.02 violation. I really need to achieve feasibility, that is the most important requirement. Maximizing the range comes in second.
Beside these physical constraints, there are also some linear constraints on the input variable, which make sure that the aircraft can be handles by the evaluation function. The wing is seperated in a number of stations. The linear constraints make sure that the second station is further outboard than the first one, the third one is further outboard than the second one and that the chords keeps decreasing or at least equal when moving further outboard. These constraints were handles well by fmincon.
I hope that by posting this, I'm able to select the correct optimization function and algorithm, before I continue with the random trial and error thing, like it now feels. I also like some help by setting up the function. So if I do need to use fgoalattain for example, how do I use the constraints etc.