initial commit FESurrogateModelTutorial

This commit is contained in:
김경종
2026-05-21 17:03:51 +09:00
parent 93665d9ee6
commit 43b86669fa
122 changed files with 7929 additions and 0 deletions
@@ -0,0 +1,30 @@
{
"project": "FEMSurrogateTutorial",
"phase": "2-dataset-and-surrogates",
"steps": [
{
"step": 0,
"name": "sampling-and-dataset",
"status": "completed",
"summary": "Added reproducible LHS sampling, BeamParameters/AnalysisResult schema, and Beam2D dataset builder using the in-repository solver."
},
{
"step": 1,
"name": "surrogate-common",
"status": "completed",
"summary": "Added reproducible dataset split helper, evaluation result dataclasses, regression metrics, fit/predict timing, and prediction table generation."
},
{
"step": 2,
"name": "surrogate-models",
"status": "completed",
"summary": "Added scikit-learn builders and registry for RSM, GPR, Random Forest, Gradient Boosting, and MLP models."
},
{
"step": 3,
"name": "plotting-and-results",
"status": "completed",
"summary": "Added parity and residual diagnostic plots, metrics table creation, and metric comparison plot helpers returning matplotlib figures."
}
]
}
@@ -0,0 +1,28 @@
# Step 0: sampling-and-dataset
## 읽어야 할 파일
- `/AGENTS.md`
- `/docs/ARCHITECTURE.md`
- `/docs/theory/01_doe_sampling_validation.md`
- `/src/femsurrogate/fea/`
## 작업
TDD로 LHS sampling과 Beam2D dataset builder를 구현한다.
- 테스트: `/tests/test_sampling.py`, `/tests/test_dataset_builder.py`.
- 구현: `/src/femsurrogate/data/bounds.py`, `schema.py`, `sampling.py`, `dataset.py`.
- 기본 seed는 `20260521`.
- dataset schema는 문서의 SI 단위 컬럼을 따른다.
## Acceptance Criteria
```powershell
uv run pytest tests/test_sampling.py tests/test_dataset_builder.py -q
uv run ruff check .
```
## 금지사항
- surrogate 학습을 이 step에 넣지 마라.
@@ -0,0 +1,26 @@
# Step 1: surrogate-common
## 읽어야 할 파일
- `/AGENTS.md`
- `/docs/ARCHITECTURE.md`
- `/src/femsurrogate/data/`
## 작업
TDD로 surrogate 공통 split/evaluate/result helper를 구현한다.
- 테스트: `/tests/test_surrogate_common.py`.
- 구현: `/src/femsurrogate/surrogates/common.py`.
- metrics는 `rmse`, `mae`, `r2`, `fit_time_s`, `predict_time_s`를 포함한다.
## Acceptance Criteria
```powershell
uv run pytest tests/test_surrogate_common.py -q
uv run ruff check .
```
## 금지사항
- 개별 모델 builder를 이 step에 섞지 마라.
@@ -0,0 +1,30 @@
# Step 2: surrogate-models
## 읽어야 할 파일
- `/AGENTS.md`
- `/docs/theory/02_response_surface_methodology.md`
- `/docs/theory/03_gaussian_process_kriging.md`
- `/docs/theory/04_random_forest.md`
- `/docs/theory/05_gradient_boosting.md`
- `/docs/theory/06_mlp_neural_network.md`
- `/src/femsurrogate/surrogates/common.py`
## 작업
TDD로 모델별 scikit-learn pipeline builder와 registry를 구현한다.
- 테스트: `/tests/test_surrogate_models.py`.
- 구현: `rsm.py`, `gpr.py`, `random_forest.py`, `boosting.py`, `mlp.py`, `registry.py`.
- 모델명: `rsm`, `gpr`, `random_forest`, `gradient_boosting`, `mlp`.
## Acceptance Criteria
```powershell
uv run pytest tests/test_surrogate_models.py -q
uv run ruff check .
```
## 금지사항
- PyTorch/TensorFlow, AutoML, MLflow를 추가하지 마라.
@@ -0,0 +1,26 @@
# Step 3: plotting-and-results
## 읽어야 할 파일
- `/AGENTS.md`
- `/docs/ARCHITECTURE.md`
- `/src/femsurrogate/surrogates/`
## 작업
TDD로 diagnostics plotting과 result comparison helper를 구현한다.
- 테스트: `/tests/test_plotting_and_results.py`.
- 구현: `/src/femsurrogate/plotting/diagnostics.py`, `/src/femsurrogate/plotting/comparison.py`.
- plotting 함수는 matplotlib Figure를 반환한다.
## Acceptance Criteria
```powershell
uv run pytest tests/test_plotting_and_results.py -q
uv run ruff check .
```
## 금지사항
- browser dashboard를 만들지 마라.