Об этом проекте
# Физически информированное ML для упрочнения по Холлу–Петчу в FCC MPEA
Этот репозиторий служит сопутствующим материалом к рукописи *Acta Materialia* под названием «Revisiting Hall–Petch strengthening in FCC multi-principal element alloys: what grain size, composition, and processing can and cannot explain» авторов M. Mulukutla, S. P. Padhy и др.
Он содержит полный набор данных, весь конвейер анализа, каждую таблицу результатов и рисунок, представленные в статье, исходники LaTeX, подробный отчёт, регенерируемый из актуальных результатов, и регрессионные тесты, фиксирующие канонические значения рукописи.
## Вопрос
Модели свойств на основе машинного обучения могут вводить в заблуждение при проектировании сплавов, когда интерполяция ошибочно принимается за перенос, или когда физически мотивированный дескриптор трактуется как механизм без демонстрации того, что он добавляет информацию сверх измеренных входных данных. Этот репозиторий решает эту задачу от начала до конца для предела текучести (YS) и твёрдости по Виккерсу (HV) 94 условий FCC-сплавов в системе Al–Co–Cr–Cu–Fe–Mn–Ni–V.
## Пять семейств моделей
Анализы организованы по пяти семействам рукописи. Более высокий номер семейства означает большую гибкость, а не большую физическую точность.
- **Семейство 1**: Классический Холл–Петч (классические и альтернативные законы размера зерна)
- **Семейство 2**: Физические дескрипторы (VLC, Labusch, Toda-Caraballo; Wen; PCA-OLS)
- **Семейство 3**: Состав / обработка (иерархия M-моделей, включая M15)
- **Семейство 4**: Нелинейное ML (согласованные линейные и нелинейные оценки)
- **Семейство 5**: Символьная регрессия (PySR, SISSO, фиксированные замкнутые формы)
Протокол валидации включает 5-кратную, LOO, LOBO, литературную и проверки на сингулярность.
## Ключевые результаты
Все значения — это объединённый out-of-fold Q², пересчитанный во время тестирования из `data/derived/data_with_vlc.csv`.
| Цель | Модель | 5-кратная | LOO | LOBO |
|---|---|---|---|---|
| YS | Семейство 1 классический Холл–Петч | 0.405 | 0.406 | 0.373 |
| YS | Семейство 2 PCA-OLS (содержится в фолде) | 0.462 | 0.480 | 0.362 |
| YS | Семейство 3 M3 (σ₀, зависящий от состава) | 0.666 | 0.652 | 0.625 |
| YS | **Семейство 3 M15 (+ взаимодействие с SD_grain)** | **0.731** | **0.694** | **0.694** |
| YS | Семейство 4 Lasso S2 (фиксированные настройки) | 0.683 | 0.674 | 0.621 |
| YS | Семейство 4 LightGBM S2 (фиксированные настройки) | 0.632 | 0.574 | 0.615 |
| YS | Семейство 4 Bayesian ridge S2 (вложенный ARMOTE-CV) | 0.685 | 0.666 | 0.613 |
| HV | Семейство 1 классический Холл–Петч | 0.086 | 0.136 | −0.077 |
| HV | Семейство 4 LightGBM S1 | 0.195 | 0.323 | 0.112 |
| HV | Семейство 5 фиксированная форма (пост-отбор) | 0.725 | 0.727 | 0.636 |
Три вывода составляют основную часть работы:
- **Ширина распределения зёрен помогает только в определённой форме.** Добавление SD_grain к M3 в качестве независимого аддитивного члена повышает LOO до 0.668, но снижает LOBO до 0.595. Если же позволить ему модифицировать член Холла–Петча (M15), получается 0.694 в обоих случаях, с ΔBIC = −20.1 против M3. Именно аддитивный контроль делает это различие видимым.
- **Нелинейность ничего не даёт при согласованных входных данных.** Lasso и LightGBM достигают 0.621 и 0.615 при валидации с удержанием батча с перекрывающимися бутстрап-интервалами.
- **Ничто не переносится на литературу.** Каждая оценённая замкнутая форма имеет отрицательный R² на записях литературы с прямыми измерениями, поэтому этот набор сообщается как стресс-тест, а не как внешний бенчмарк.
## Структура
```
data/raw/ Grain_Size_Summary_v3.xlsx — единственный истинный вход
data/derived/ вычисленные дескрипторы, регенерируемые через `make data`
scripts/
_config.py общие пути; делает каждую папку семейства импортируемой
_figstyle.py одна палитра и одна шкала шрифтов для каждого рисунка
00_data_preparation/ дескрипторы, величины VLC, лестница признаков
01_family1_grain_size/ законы масштабирования, наклоны внутри реплик
02_family2_physics_descriptors/ бенчмарк SSS, аудит избыточности, PCA-OLS
03_family3_composition_processing/ иерархия M-моделей, модели SD_grain
04_family4_nonlinear_ml/ настроенная панель, сравнение при согласованных входах
05_family5_symbolic_regression/ сетка PySR, варианты SISSO
06_validation/ сгруппированная CV, литературный тест, аудит сингулярности
07_hardness_tabor/ отношение Табора и анализ рангов HV–YS
figures/ каждый рисунок публикации
results/ выходные CSV; каждый создаётся именованным скриптом
analysis_plots/ исследовательские и диагностические рисунки
paper/ main.tex, supplementary.tex, references.bib, figures/
report/ generate_report.py + Comprehensive_Analysis_Report.docx
notebook/ генератор + сгенерированный .ipynb
docs/ reproducing.md, validation_protocol.md
tests/ регрессионные тесты, фиксирующие канонические значения
```
## Быстрый старт
```bash
pip install -r requirements.txt
make test # ~1 с — пересчитывает и проверяет каждое ключевое значение
make figures # регенерирует все рисунки публикации из кэшированных результатов
make report # пересобирает отчёт Word из актуальных результатов
make paper # собирает main.pdf и supplementary.pdf
make help # все цели
```
Полный порядок этапов и тайминги: `docs/reproducing.md`.
## Воспроизводимость
`make test` пересчитывает иерархию M-моделей, базовые линии Семейства 1, отношение Табора и аудит набора данных **из сырых производных данных** и проверяет их соответствие значениям, напечатанным в рукописи. Он также проверяет, что каждый рисунок и таблица перекрёстно упомянуты в тексте и что каждый включённый файл рисунка существует. Если анализ меняется, тесты падают до того, как рукопись может разойтись с ним.
**Панель вложенного ARMOTE-CV** проверяется, а не перезапускается. Её генератор сохраняет одно исследование Optuna, один выбранный набор параметров и одну пару масштабировщиков признаков и целевой переменной на фолд. По шести фолдам LOBO пять настроенных гиперпараметров Bayesian ridge принимают шесть различных значений, и каждый масштабировщик обучается только на своём тренировочном разбиении. Перезагрузка этих объектов и предсказание каждого удержанного батча точно воспроизводит все шесть оценок фолдов и даёт объединённый LOBO Q² = 0.613 (RMSE 50.5 МПа). Таким образом, вложенность демонстрируется, а не утверждается.
Эти артефакты поставляются с репозиторием в `scripts/04_family4_nonlinear_ml/armote_cv/` — см. README там о том, что было сохранено, а что оставлено в upstream.
Два анализа являются **архивными** и не регенерируются здесь, в рукописи или через `make`:
| Архивный результат | Причина |
|---|---|
| Веса стекирования Bayesian PSIS-LOO | Выборки из апостериорного распределения PyMC не были сохранены |
| Производительность PySR во внешнем цикле | уравнения отбирались на фронтах полных данных |
Рукопись сообщает об этих результатах как об архивных, а соответствующие частотные величины, которые *можно* пересчитать (OLS-коэффициенты M15, информационные критерии и оценки сгруппированной CV), регенерируются через `make sdgrain`.
## Рисунки
Каждый рисунок импортирует `scripts/_figstyle.py`, поэтому весь документ использует одну палитру Okabe–Ito и одну шкалу шрифтов. Цвет никогда не является единственным каналом: батчи несут различные формы маркеров, семейства моделей разделены положением, а знаковые величины печатают своё значение. Рисунки строятся в их конечной печатной ширине, поэтому размер точки в скрипте совпадает с размером точки на странице. Палитра была проверена при симулированных дейтеранопии, протанопии и тританопии.
## Цитирование
См. `CITATION.cff`. Архивные метаданные для Zenodo находятся в `.zenodo.json`.
## Лицензия
MIT — см. `LICENSE`. Сырой экспериментальный набор данных и компиляция литературы включены; PDF-файлы цитируемой литературы не распространяются.
## Благодарности
Спонсировано Исследовательской лабораторией армии в рамках Кооперативного соглашения W911NF-22-2-0106.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.