diff --git a/aerodynamicsOptimization/README.md b/aerodynamicsOptimization/README.md index 35c51ca1c583df34e9585f7490911173409a47e4..644dab356dd1540a46f4d832b204976bbf2054b5 100644 --- a/aerodynamicsOptimization/README.md +++ b/aerodynamicsOptimization/README.md @@ -3,15 +3,20 @@ This is a program developed in MATLAB which implements an aerodynamic optimizati The rocket is optimized to reach the highest possible apogee with the chosen set of fixed parameters using a genetic algorithm. It may take some time to run, please be patient. <br/> ## Usage -The optimization variables are the fin chords and height, the fin shape, the ogive length and shape and the boat tail length. <br/> -The variable's range and other features can be set in the configOptimization script and quantities are integers to run faster without a big optimization loss. <br/> -The script requires the rocket data which is taken from the `simulationsData.m` script: +The following table shows the available optimisation parameters -``` matlab -settings.mission = 'mission_name'; -run(strcat('../data/', settings.mission, '/simulationsData')); -``` -and variables to describe the mission-specific parameters, defined in the `configOptimization.m`: +| Parameter | Number | Notes | +|:----------------:|:------:|:------------------------------------------------:| +| Fins chord | 1, 2 | - | +| Fins height | 3 | - | +| Fins sweep | 4 | Measured as distance between start of chords | +| Ogive length | 5 | - | +| Ogive shape | 6, 7 | Valid for modified Haack: edits coefficinets p, C | +| Boat-tail length | 8 | - | +| Nosecone type | 9 | - | + +The variable's range and other features can be set in the optimisationConfig script and quantities are integers to run faster. <br/> +The function requires the rocket data, taken from the `rocketConfig.m` script and variables to describe the mission-specific parameters, defined in `optimisationConfig.m`: ``` matlab % mission information @@ -21,18 +26,18 @@ vars.Beta = linspace(-20, 20, 20); vars.Alt = linspace(0, 4000, 5); vars.xcg = settings.xcg; ``` -You have to replace `mission_name` with the specific name of the mission required. <br/> -Moreover, the variables that cannot be known a priori, like the flight conditions, the wind magnitude or the minimum required stability margin at the launchpad exit, are taken from the `configOptimization.m` script. The variable `expectedApogee` actually allows you to set the tolerance of the genetic algorithm, so the higher is the expected apogee, the lower is the tolerance and the more precise is the optimization. <br/> -It is also important to set the matrix of inequalities in `configOptimization.m` that acts as constraint on the optimization variables as required from the GA. <br/> -The optimization is started by running the `mainOptimization.m` script. + +The variables that cannot be known a priori, like the flight conditions, the wind magnitude or the minimum required stability margin at the launchpad exit, are taken from the `optimisationConfig.m` script. The variable `expectedApogee` actually allows you to set the tolerance of the genetic algorithm, defined as $tol = \frac{1}{\texttt{Apogee}_{exp}}$ so the higher is the expected apogee, the lower is the tolerance and the more precise is the optimization. <br/> +It is also important to set the matrix of inequalities in `optimisationConfig.m` that acts as constraint on the optimization variables as required from the GA. <br/> +The optimization is started by running the `mainOptimization.m` function. ## Options You can optimize the rocket and the boat tail or just the rocket, keeping the boat tail fixed:<br/> -* In the first case, you have to set `settings.boatOptimization = false;` in `configOptimization.m`. In this scenario, you have to also set the parameters describing the boat tail in `simulationsData`. +* In the first case, you have to set `settings.boatOptimization = false;` in `optimisationConfig.m`. In this scenario, you have to also set the parameters describing the boat tail in `simulationsData`. -* In the second case, you have to set `settings.boatOptimization = true;` in `configOptimization.m`. In this scenario, you have also to set the parameters describing the boundaries of the optimization, which are `settings.optimBoatD`, `settings.maxBoatL` and `settings.maxBeta` and check that the matrix of inequalities is suitable with the geometry of the rocket you are trying to optimize. Please note that the process will take more time. +* In the second case, you have to set `settings.boatOptimization = true;` in `optimisationConfig.m`. In this scenario, you have also to set the parameters describing the boundaries of the optimization, which are `settings.optimBoatD`, `settings.maxBoatL` and `settings.maxBeta` and check that the matrix of inequalities is suitable with the geometry of the rocket you are trying to optimize. Please note that the process will take more time.