← All Use Cases
Full Factorial Design

RC Plane Trim Settings

Full factorial of elevator trim, aileron differential, throttle curve, and CG position to maximize flight time and handling score

Summary

This experiment investigates rc plane trim settings. Full factorial of elevator trim, aileron differential, throttle curve, and CG position to maximize flight time and handling score.

The design varies 4 factors: elevator pct (%), ranging from -5 to 5, aileron diff pct (%), ranging from 0 to 40, throttle curve (%), ranging from 50 to 100, and cg pct mac (%MAC), ranging from 25 to 35. The goal is to optimize 2 responses: flight time min (min) (maximize) and handling score (pts) (maximize). Fixed conditions held constant across all runs include model = trainer, wingspan = 1200mm.

A full factorial design was used to explore all 16 possible combinations of the 4 factors at two levels. This guarantees that every main effect and interaction can be estimated independently, at the cost of a larger experiment (16 runs).

Quadratic response surface models were fitted to capture potential curvature and factor interactions. The RSM contour plots below visualize how pairs of factors jointly affect each response.

Key Findings

For flight time min, the most influential factors were aileron diff pct (45.7%), cg pct mac (32.4%), elevator pct (21.1%). The best observed value was 14.5 (at elevator pct = -5, aileron diff pct = 0, throttle curve = 100).

For handling score, the most influential factors were elevator pct (58.0%), throttle curve (22.0%), aileron diff pct (18.0%). The best observed value was 6.9 (at elevator pct = 5, aileron diff pct = 0, throttle curve = 100).

Recommended Next Steps

Experimental Setup

Factors

FactorLowHighUnit
elevator_pct-55%
aileron_diff_pct040%
throttle_curve50100%
cg_pct_mac2535%MAC

Fixed: model = trainer, wingspan = 1200mm

Responses

ResponseDirectionUnit
flight_time_min↑ maximizemin
handling_score↑ maximizepts

Configuration

use_cases/263_rc_plane_trim/config.json
{ "metadata": { "name": "RC Plane Trim Settings", "description": "Full factorial of elevator trim, aileron differential, throttle curve, and CG position to maximize flight time and handling score" }, "factors": [ { "name": "elevator_pct", "levels": [ "-5", "5" ], "type": "continuous", "unit": "%" }, { "name": "aileron_diff_pct", "levels": [ "0", "40" ], "type": "continuous", "unit": "%" }, { "name": "throttle_curve", "levels": [ "50", "100" ], "type": "continuous", "unit": "%" }, { "name": "cg_pct_mac", "levels": [ "25", "35" ], "type": "continuous", "unit": "%MAC" } ], "fixed_factors": { "model": "trainer", "wingspan": "1200mm" }, "responses": [ { "name": "flight_time_min", "optimize": "maximize", "unit": "min" }, { "name": "handling_score", "optimize": "maximize", "unit": "pts" } ], "settings": { "operation": "full_factorial", "test_script": "use_cases/263_rc_plane_trim/sim.sh" } }

Experimental Matrix

The Full Factorial Design produces 16 runs. Each row is one experiment with specific factor settings.

Runelevator_pctaileron_diff_pctthrottle_curvecg_pct_mac
1-54010035
2505035
3-5405035
4-54010025
554010025
65010025
75405025
8505025
9-505035
10-5010025
115405035
1254010035
13-5405025
145010035
15-505025
16-5010035

Step-by-Step Workflow

1

Preview the design

Terminal
$ doe info --config use_cases/263_rc_plane_trim/config.json
2

Generate the runner script

Terminal
$ doe generate --config use_cases/263_rc_plane_trim/config.json \ --output use_cases/263_rc_plane_trim/results/run.sh --seed 42
3

Execute the experiments

Terminal
$ bash use_cases/263_rc_plane_trim/results/run.sh
4

Analyze results

Terminal
$ doe analyze --config use_cases/263_rc_plane_trim/config.json
5

Get optimization recommendations

Terminal
$ doe optimize --config use_cases/263_rc_plane_trim/config.json
6

Multi-objective optimization

With 2 competing responses, use --multi to find the best compromise via Derringer–Suich desirability.

Terminal
$ doe optimize --config use_cases/263_rc_plane_trim/config.json --multi
7

Generate the HTML report

Terminal
$ doe report --config use_cases/263_rc_plane_trim/config.json \ --output use_cases/263_rc_plane_trim/results/report.html

Features Exercised

FeatureValue
Design typefull_factorial
Factor typescontinuous (all 4)
Arg styledouble-dash
Responses2 (flight_time_min ↑, handling_score ↑)
Total runs16

Analysis Results

Generated from actual experiment runs using the DOE Helper Tool.

Response: flight_time_min

Top factors: aileron_diff_pct (45.7%), cg_pct_mac (32.4%), elevator_pct (21.1%).

ANOVA

SourceDFSSMSFp-value
SourceDFSSMSFp-value
elevator_pct13.90063.90060.7860.4160
aileron_diff_pct118.275618.27563.6820.1131
throttle_curve10.00560.00560.0010.9744
cg_pct_mac19.15069.15061.8440.2326
elevator_pct*aileron_diff_pct10.68060.68060.1370.7263
elevator_pct*throttle_curve12.32562.32560.4690.5241
elevator_pct*cg_pct_mac10.01560.01560.0030.9574
aileron_diff_pct*throttle_curve10.00560.00560.0010.9744
aileron_diff_pct*cg_pct_mac14.95064.95060.9970.3638
throttle_curve*cg_pct_mac113.140613.14062.6470.1646
Error524.81814.9636
Total1577.26945.1513

Pareto Chart

Pareto chart for flight_time_min

Main Effects Plot

Main effects plot for flight_time_min

Normal Probability Plot of Effects

Normal probability plot for flight_time_min

Half-Normal Plot of Effects

Half-normal plot for flight_time_min

Model Diagnostics

Model diagnostics for flight_time_min

Response: handling_score

Top factors: elevator_pct (58.0%), throttle_curve (22.0%), aileron_diff_pct (18.0%).

ANOVA

SourceDFSSMSFp-value
SourceDFSSMSFp-value
elevator_pct10.52560.52560.5450.4934
aileron_diff_pct10.05060.05060.0530.8278
throttle_curve10.07560.07560.0780.7906
cg_pct_mac10.00060.00060.0010.9807
elevator_pct*aileron_diff_pct13.70563.70563.8460.1072
elevator_pct*throttle_curve13.33063.33063.4560.1221
elevator_pct*cg_pct_mac12.32562.32562.4130.1810
aileron_diff_pct*throttle_curve10.22560.22560.2340.6489
aileron_diff_pct*cg_pct_mac10.33060.33060.3430.5835
throttle_curve*cg_pct_mac13.33063.33063.4560.1221
Error54.81810.9636
Total1518.71941.2480

Pareto Chart

Pareto chart for handling_score

Main Effects Plot

Main effects plot for handling_score

Normal Probability Plot of Effects

Normal probability plot for handling_score

Half-Normal Plot of Effects

Half-normal plot for handling_score

Model Diagnostics

Model diagnostics for handling_score

Response Surface Plots

3D surfaces fitted with quadratic RSM. Red dots are observed data points.

flight time min aileron diff pct vs cg pct mac

RSM surface: flight time min aileron diff pct vs cg pct mac

flight time min aileron diff pct vs throttle curve

RSM surface: flight time min aileron diff pct vs throttle curve

flight time min elevator pct vs aileron diff pct

RSM surface: flight time min elevator pct vs aileron diff pct

flight time min elevator pct vs cg pct mac

RSM surface: flight time min elevator pct vs cg pct mac

flight time min elevator pct vs throttle curve

RSM surface: flight time min elevator pct vs throttle curve

flight time min throttle curve vs cg pct mac

RSM surface: flight time min throttle curve vs cg pct mac

handling score aileron diff pct vs cg pct mac

RSM surface: handling score aileron diff pct vs cg pct mac

handling score aileron diff pct vs throttle curve

RSM surface: handling score aileron diff pct vs throttle curve

handling score elevator pct vs aileron diff pct

RSM surface: handling score elevator pct vs aileron diff pct

handling score elevator pct vs cg pct mac

RSM surface: handling score elevator pct vs cg pct mac

handling score elevator pct vs throttle curve

RSM surface: handling score elevator pct vs throttle curve

handling score throttle curve vs cg pct mac

RSM surface: handling score throttle curve vs cg pct mac

Multi-Objective Optimization

When responses compete, Derringer–Suich desirability finds the best compromise. Each response is scaled to a 0–1 desirability, then combined via a weighted geometric mean.

Overall Desirability
D = 0.8312

Per-Response Desirability

ResponseWeightDesirabilityPredictedDir
flight_time_min 1.0
0.9545
14.50 0.9545 14.50 min
handling_score 1.5
0.7580
6.10 0.7580 6.10 pts

Recommended Settings

FactorValue
elevator_pct-5 %
aileron_diff_pct0 %
throttle_curve100 %
cg_pct_mac35 %MAC

Source: from observed run #13

Trade-off Summary

Sacrifice = how much worse than single-objective best.

ResponsePredictedBest ObservedSacrifice
handling_score6.106.90+0.80

Top 3 Runs by Desirability

RunDFactor Settings
#70.8159elevator_pct=5, aileron_diff_pct=40, throttle_curve=100, cg_pct_mac=25
#150.6481elevator_pct=-5, aileron_diff_pct=40, throttle_curve=100, cg_pct_mac=25

Model Quality

ResponseType
handling_score0.2192linear

Full Multi-Objective Output

doe optimize --multi
============================================================ MULTI-OBJECTIVE OPTIMIZATION Method: Derringer-Suich Desirability Function ============================================================ Overall desirability: D = 0.8312 Response Weight Desirability Predicted Direction --------------------------------------------------------------------- flight_time_min 1.0 0.9545 14.50 min ↑ handling_score 1.5 0.7580 6.10 pts ↑ Recommended settings: elevator_pct = -5 % aileron_diff_pct = 0 % throttle_curve = 100 % cg_pct_mac = 35 %MAC (from observed run #13) Trade-off summary: flight_time_min: 14.50 (best observed: 14.50, sacrifice: +0.00) handling_score: 6.10 (best observed: 6.90, sacrifice: +0.80) Model quality: flight_time_min: R² = 0.5152 (linear) handling_score: R² = 0.2192 (linear) Top 3 observed runs by overall desirability: 1. Run #13 (D=0.8312): elevator_pct=-5, aileron_diff_pct=0, throttle_curve=100, cg_pct_mac=35 2. Run #7 (D=0.8159): elevator_pct=5, aileron_diff_pct=40, throttle_curve=100, cg_pct_mac=25 3. Run #15 (D=0.6481): elevator_pct=-5, aileron_diff_pct=40, throttle_curve=100, cg_pct_mac=25

Full Analysis Output

doe analyze
=== Main Effects: flight_time_min === Factor Effect Std Error % Contribution -------------------------------------------------------------- aileron_diff_pct -2.1375 0.5674 45.7% cg_pct_mac -1.5125 0.5674 32.4% elevator_pct 0.9875 0.5674 21.1% throttle_curve 0.0375 0.5674 0.8% === ANOVA Table: flight_time_min === Source DF SS MS F p-value ----------------------------------------------------------------------------- elevator_pct 1 3.9006 3.9006 0.786 0.4160 aileron_diff_pct 1 18.2756 18.2756 3.682 0.1131 throttle_curve 1 0.0056 0.0056 0.001 0.9744 cg_pct_mac 1 9.1506 9.1506 1.844 0.2326 elevator_pct*aileron_diff_pct 1 0.6806 0.6806 0.137 0.7263 elevator_pct*throttle_curve 1 2.3256 2.3256 0.469 0.5241 elevator_pct*cg_pct_mac 1 0.0156 0.0156 0.003 0.9574 aileron_diff_pct*throttle_curve 1 0.0056 0.0056 0.001 0.9744 aileron_diff_pct*cg_pct_mac 1 4.9506 4.9506 0.997 0.3638 throttle_curve*cg_pct_mac 1 13.1406 13.1406 2.647 0.1646 Error 5 24.8181 4.9636 Total 15 77.2694 5.1513 === Interaction Effects: flight_time_min === Factor A Factor B Interaction % Contribution ------------------------------------------------------------------------ throttle_curve cg_pct_mac -1.8125 43.2% aileron_diff_pct cg_pct_mac 1.1125 26.5% elevator_pct throttle_curve -0.7625 18.2% elevator_pct aileron_diff_pct 0.4125 9.8% elevator_pct cg_pct_mac -0.0625 1.5% aileron_diff_pct throttle_curve -0.0375 0.9% === Summary Statistics: flight_time_min === elevator_pct: Level N Mean Std Min Max ------------------------------------------------------------ -5 8 11.2000 1.9712 9.0000 14.5000 5 8 12.1875 2.5682 8.9000 14.5000 aileron_diff_pct: Level N Mean Std Min Max ------------------------------------------------------------ 0 8 12.7625 2.0839 9.5000 14.5000 40 8 10.6250 2.0211 8.9000 14.3000 throttle_curve: Level N Mean Std Min Max ------------------------------------------------------------ 100 8 11.6750 2.1433 8.9000 14.2000 50 8 11.7125 2.5385 9.0000 14.5000 cg_pct_mac: Level N Mean Std Min Max ------------------------------------------------------------ 25 8 12.4500 2.3749 8.9000 14.5000 35 8 10.9375 2.0227 9.0000 14.0000 === Main Effects: handling_score === Factor Effect Std Error % Contribution -------------------------------------------------------------- elevator_pct -0.3625 0.2793 58.0% throttle_curve 0.1375 0.2793 22.0% aileron_diff_pct -0.1125 0.2793 18.0% cg_pct_mac -0.0125 0.2793 2.0% === ANOVA Table: handling_score === Source DF SS MS F p-value ----------------------------------------------------------------------------- elevator_pct 1 0.5256 0.5256 0.545 0.4934 aileron_diff_pct 1 0.0506 0.0506 0.053 0.8278 throttle_curve 1 0.0756 0.0756 0.078 0.7906 cg_pct_mac 1 0.0006 0.0006 0.001 0.9807 elevator_pct*aileron_diff_pct 1 3.7056 3.7056 3.846 0.1072 elevator_pct*throttle_curve 1 3.3306 3.3306 3.456 0.1221 elevator_pct*cg_pct_mac 1 2.3256 2.3256 2.413 0.1810 aileron_diff_pct*throttle_curve 1 0.2256 0.2256 0.234 0.6489 aileron_diff_pct*cg_pct_mac 1 0.3306 0.3306 0.343 0.5835 throttle_curve*cg_pct_mac 1 3.3306 3.3306 3.456 0.1221 Error 5 4.8181 0.9636 Total 15 18.7194 1.2480 === Interaction Effects: handling_score === Factor A Factor B Interaction % Contribution ------------------------------------------------------------------------ elevator_pct aileron_diff_pct 0.9625 23.6% elevator_pct throttle_curve 0.9125 22.4% throttle_curve cg_pct_mac 0.9125 22.4% elevator_pct cg_pct_mac 0.7625 18.7% aileron_diff_pct cg_pct_mac -0.2875 7.1% aileron_diff_pct throttle_curve -0.2375 5.8% === Summary Statistics: handling_score === elevator_pct: Level N Mean Std Min Max ------------------------------------------------------------ -5 8 5.3375 1.1288 3.5000 6.7000 5 8 4.9750 1.1511 3.2000 6.9000 aileron_diff_pct: Level N Mean Std Min Max ------------------------------------------------------------ 0 8 5.2125 1.0494 3.2000 6.6000 40 8 5.1000 1.2513 3.5000 6.9000 throttle_curve: Level N Mean Std Min Max ------------------------------------------------------------ 100 8 5.0875 1.2484 3.2000 6.7000 50 8 5.2250 1.0512 3.5000 6.9000 cg_pct_mac: Level N Mean Std Min Max ------------------------------------------------------------ 25 8 5.1625 1.3522 3.2000 6.7000 35 8 5.1500 0.9196 3.9000 6.9000

Optimization Recommendations

doe optimize
=== Optimization: flight_time_min === Direction: maximize Best observed run: #3 elevator_pct = -5 aileron_diff_pct = 0 throttle_curve = 100 cg_pct_mac = 25 Value: 14.5 RSM Model (linear, R² = 0.0649, Adj R² = -0.2751): Coefficients: intercept +11.6938 elevator_pct -0.4187 aileron_diff_pct +0.0062 throttle_curve -0.1062 cg_pct_mac +0.3562 RSM Model (quadratic, R² = 0.8601, Adj R² = -1.0981): Coefficients: intercept +2.3388 elevator_pct -0.4188 aileron_diff_pct +0.0062 throttle_curve -0.1062 cg_pct_mac +0.3562 elevator_pct*aileron_diff_pct +0.5437 elevator_pct*throttle_curve -0.3938 elevator_pct*cg_pct_mac +1.2438 aileron_diff_pct*throttle_curve +0.8312 aileron_diff_pct*cg_pct_mac +0.8188 throttle_curve*cg_pct_mac -0.6938 elevator_pct^2 +2.3388 aileron_diff_pct^2 +2.3388 throttle_curve^2 +2.3388 cg_pct_mac^2 +2.3388 Curvature analysis: elevator_pct coef=+2.3388 convex (has a minimum) aileron_diff_pct coef=+2.3388 convex (has a minimum) throttle_curve coef=+2.3388 convex (has a minimum) cg_pct_mac coef=+2.3388 convex (has a minimum) Notable interactions: elevator_pct*cg_pct_mac coef=+1.2438 (synergistic) aileron_diff_pct*throttle_curve coef=+0.8312 (synergistic) aileron_diff_pct*cg_pct_mac coef=+0.8188 (synergistic) throttle_curve*cg_pct_mac coef=-0.6938 (antagonistic) elevator_pct*aileron_diff_pct coef=+0.5437 (synergistic) elevator_pct*throttle_curve coef=-0.3938 (antagonistic) Predicted optimum (from linear model, at observed points): elevator_pct = -5 aileron_diff_pct = 40 throttle_curve = 50 cg_pct_mac = 35 Predicted value: 12.5813 Surface optimum (via L-BFGS-B, linear model): elevator_pct = -5 aileron_diff_pct = 40 throttle_curve = 50 cg_pct_mac = 35 Predicted value: 12.5813 Model quality: Weak fit — consider adding center points or using a different design. Factor importance: 1. elevator_pct (effect: -0.8, contribution: 47.2%) 2. cg_pct_mac (effect: 0.7, contribution: 40.1%) 3. throttle_curve (effect: 0.2, contribution: 12.0%) 4. aileron_diff_pct (effect: 0.0, contribution: 0.7%) === Optimization: handling_score === Direction: maximize Best observed run: #5 elevator_pct = 5 aileron_diff_pct = 0 throttle_curve = 100 cg_pct_mac = 35 Value: 6.9 RSM Model (linear, R² = 0.0642, Adj R² = -0.2760): Coefficients: intercept +5.1563 elevator_pct -0.1437 aileron_diff_pct -0.1813 throttle_curve +0.1438 cg_pct_mac +0.0312 RSM Model (quadratic, R² = 0.7621, Adj R² = -2.5683): Coefficients: intercept +1.0312 elevator_pct -0.1438 aileron_diff_pct -0.1813 throttle_curve +0.1438 cg_pct_mac +0.0313 elevator_pct*aileron_diff_pct -0.0563 elevator_pct*throttle_curve +0.2938 elevator_pct*cg_pct_mac +0.0063 aileron_diff_pct*throttle_curve +0.1562 aileron_diff_pct*cg_pct_mac -0.4313 throttle_curve*cg_pct_mac +0.7187 elevator_pct^2 +1.0313 aileron_diff_pct^2 +1.0312 throttle_curve^2 +1.0312 cg_pct_mac^2 +1.0312 Curvature analysis: elevator_pct coef=+1.0313 convex (has a minimum) aileron_diff_pct coef=+1.0312 convex (has a minimum) throttle_curve coef=+1.0312 convex (has a minimum) cg_pct_mac coef=+1.0312 convex (has a minimum) Notable interactions: throttle_curve*cg_pct_mac coef=+0.7187 (synergistic) aileron_diff_pct*cg_pct_mac coef=-0.4313 (antagonistic) Predicted optimum (from linear model, at observed points): elevator_pct = -5 aileron_diff_pct = 0 throttle_curve = 100 cg_pct_mac = 35 Predicted value: 5.6563 Surface optimum (via L-BFGS-B, linear model): elevator_pct = -5 aileron_diff_pct = 0 throttle_curve = 100 cg_pct_mac = 35 Predicted value: 5.6563 Model quality: Weak fit — consider adding center points or using a different design. Factor importance: 1. aileron_diff_pct (effect: -0.4, contribution: 36.3%) 2. elevator_pct (effect: -0.3, contribution: 28.7%) 3. throttle_curve (effect: -0.3, contribution: 28.7%) 4. cg_pct_mac (effect: 0.1, contribution: 6.2%)
← Previous: Paper Airplane Distance All Use Cases →