Files changed (1) hide show
  1. README.md +67 -29
README.md CHANGED
@@ -1,29 +1,67 @@
1
- ---
2
- library_name: pytorch
3
- tags:
4
- - tabular
5
- - pytorch
6
- - classification
7
- - aviation
8
- - wing-design
9
- datasets:
10
- - ecopus/transport-wings-500
11
- license: mit
12
- ---
13
-
14
- # Wing Selector MLP
15
-
16
- This repository contains a PyTorch MLP that scores aircraft-style wings **within the same airfoil** for a chosen objective:
17
- - **min_cd** (minimize drag),
18
- - **max_cl** (maximize lift),
19
- - **max_ld** (maximize lift-to-drag).
20
-
21
- It was trained on the dataset **[ecopus/transport-wings-500](https://huggingface.co/datasets/ecopus/transport-wings-500)**.
22
-
23
- ## Files
24
- - `best.pt` – best checkpoint by validation top-1@group
25
- - `last.pt` – final checkpoint after training
26
- - `config.json` – input dim, #airfoils, feature scaler stats
27
- - `feature_names.json` – expected feature order
28
- - `airfoil_vocab.json` – airfoil name → id mapping used during training
29
- - `inference.py` – minimal loader & scoring helper
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ library_name: pytorch
3
+ tags:
4
+ - tabular
5
+ - pytorch
6
+ - classification
7
+ - aviation
8
+ - wing-design
9
+ datasets:
10
+ - ecopus/transport-wings-500
11
+ license: mit
12
+ ---
13
+
14
+ # Wing Selector MLP
15
+
16
+ This repository contains a PyTorch MLP that scores aircraft-style wings **within the same airfoil** for a chosen objective:
17
+ - **min_cd** (minimize drag),
18
+ - **max_cl** (maximize lift),
19
+ - **max_ld** (maximize lift-to-drag).
20
+
21
+ It was trained on the dataset **[ecopus/transport-wings-500](https://huggingface.co/datasets/ecopus/transport-wings-500)**.
22
+
23
+ ## Files
24
+ - `best.pt` – best checkpoint by validation top-1@group  
25
+ - `last.pt` – final checkpoint after training  
26
+ - `config.json` – input dim, #airfoils, feature scaler stats  
27
+ - `feature_names.json` – expected feature order  
28
+ - `airfoil_vocab.json` – airfoil name → id mapping used during training  
29
+ - `inference.py` – minimal loader & scoring helper
30
+
31
+ ---
32
+
33
+ ### Model Architecture
34
+
35
+ The model is a feedforward neural network designed for a binary classification task. It predicts the "best" wing geometry for a given airfoil and aerodynamic objective.
36
+
37
+ * **Inputs**: The model takes three inputs:
38
+ 1. **Wing Features**: A vector of 22 continuous features describing the wing's geometry and aerodynamic properties. These features are standardized (mean-centered and scaled by standard deviation) before being fed into the model.
39
+ 2. **Objective ID**: A one-hot encoded vector representing one of the three possible design objectives.
40
+ 3. **Airfoil ID**: An embedding vector that learns a representation for each unique airfoil in the training data.
41
+ * **Embedding Layer**: An `nn.Embedding` layer converts the discrete airfoil ID into a dense 8-dimensional vector.
42
+ * **Hidden Layers**: The core of the network consists of two fully connected hidden layers, each with **128 neurons** and using the **ReLU** activation function.
43
+ * **Output Layer**: A final linear layer outputs a single logit, which represents the model's prediction score.
44
+
45
+ ---
46
+
47
+ ### Training Hyperparameters
48
+
49
+ | Hyperparameter | Value |
50
+ | :--- | :--- |
51
+ | **Epochs** | 50 |
52
+ | **Batch Size** | 64 |
53
+ | **Learning Rate** | `2e-3` |
54
+ | **Optimizer** | AdamW |
55
+ | **LR Scheduler** | CosineAnnealingLR |
56
+ | **Loss Function** | BCEWithLogitsLoss |
57
+ | **Seed** | 42 |
58
+
59
+ ---
60
+
61
+ ### Final Training Metrics
62
+
63
+ | Metric | Value |
64
+ | :--- | :--- |
65
+ | **Validation AUC** | 0.9790 |
66
+ | **Validation Avg. Precision**| 0.638 |
67
+ | **Validation Top-1 Accuracy**| 50.0% |