multiverse-tester 0.1.0
Симуляция пригодности вселенных для жизни при различных фундаментальных константах
License: MIT
Requires Python: >=3.8
Keywords: physics, multiverse, simulation, habitability, fine-structure

# MultiverseTester

Симуляция пригодности вселенных для жизни при различных значениях фундаментальных физических констант. Исследует пространство параметров мультивселенной (от 2D до 10D) и вычисляет индекс пригодности.

**Закон 8D:** допустимый диапазон изменения константы обратно пропорционален силе соответствующего взаимодействия — ΔP ∝ 1/F.

## Установка

```bash
pip install multiverse-tester
```

С опциональной поддержкой изоповерхностей (scikit-image):

```bash
pip install ".[full]"
```

### Сборка для публикации на PyPI

```bash
pip install build
python -m build
# Файлы будут в dist/
pip install twine
twine upload dist/*
```

### Запуск тестов

```bash
pip install ".[test]"
pytest tests/ -v
```

## Использование

### Программный интерфейс

```python
from multiverse_tester import (
    UniverseParameters,
    UniverseAnalyzer,
    UniversalConstants,
    HabitabilityIndex,
)

# Создание вселенной с заданными параметрами
u = UniverseParameters(
    name="Тестовая вселенная",
    alpha=1/137.036,  # постоянная тонкой структуры
    m_p=1.6726219e-27,  # масса протона (кг)
)

# Анализ пригодности для жизни
analyzer = UniverseAnalyzer(u)
index, score, metrics = analyzer.calculate_habitability_index()

print(f"Индекс пригодности: {score:.3f}")
print(f"Категория: {index.name}")
```

### CLI

После `pip install .` доступна команда:

```bash
multiverse-analyze   # основной анализ с графиком
```

Оптимизаторы 2D–10D запускаются скриптами из корня проекта (см. «Запуск скриптов напрямую» ниже).

### Интерактивное веб-демо (Streamlit)

**[🌌 Запустить демо онлайн](https://multiverse-tester.streamlit.app)**

Или локально:

```bash
pip install ".[demo]"    # streamlit входит в demo
multiverse-demo          # или: streamlit run multiverse_tester/streamlit_demo.py
```

Откройте браузер и исследуйте «пузырь жизни» — меняйте ползунки (α, m_p, m_e, G, c, ħ, ε₀) и наблюдайте, как меняется пригодность вселенной. Ландшафт показывает область пригодности в плоскости (α, m_p).

### Пакетный запуск всех оптимизаторов

```bash
multiverse-run-optimizers   # или: python -m multiverse_tester.run_all_optimizers
# 2D→10D, отчёт в reports/
```

### Оптимизаторы в коде

```python
from multiverse_tester.optimizers import (
    UniverseOptimizer,      # 2D (α, m_p)
    HyperVolume5D,         # 5D
    HyperVolume10D,        # 10D
    plot_nd_2d_slice,
)
```

## Отчёты

| Файл | Описание |
|------|----------|
| [reports/OPTIMIZATION_REPORT.md](reports/OPTIMIZATION_REPORT.md) | Сводная таблица 2D–10D |
| [reports/FULL_ANALYSIS_2D_TO_8D.md](reports/FULL_ANALYSIS_2D_TO_8D.md) | Полный анализ, Закон 8D, иерархия констант |
| [reports/10D_CRITICAL_ANALYSIS.md](reports/10D_CRITICAL_ANALYSIS.md) | Критический анализ 10D (включая Λ) |
| [reports/MATHEMATICAL_FORMALIZATION.md](reports/MATHEMATICAL_FORMALIZATION.md) | Математическая формализация: ΔP(F) = min(20, 2.0·F^(-0.15)) |

## Модель

- **Атомная физика:** радиус Бора, энергия Ридберга, комптоновская длина волны
- **Ядерная физика:** энергия связи (формула Вайцзеккера), кулоновский барьер
- **Звёздный нуклеосинтез:** pp-цепочка, CNO-цикл, тройная альфа, s/r-процессы, сверхновые
- **Индекс пригодности:** DEAD → HOSTILE → MARGINAL → HABITABLE → OPTIMAL

## Результаты (2D→10D)

- **α** — единственный параметр с чётким оптимумом (~0.007–0.011)
- **m_p, m_e, ε₀, k_B** — стабилизируются на ~0.1× (могут быть в 10 раз меньше)
- **c, ħ, H₀** — стабилизируются на ~0.2× (могут быть в 5 раз меньше)
- **G** — стабилизируется на ~0.05× (может быть в 20 раз слабее)
- **Λ** (10D) — космологическая постоянная; при её добавлении доля пригодного пространства остаётся ~4.4%
- **Универсальная формула:** ΔP(F) = min(20, 2.0·F^(-0.15))

## Зависимости

- Python >= 3.8
- numpy
- matplotlib
- scipy
- scikit-image (опционально, для изоповерхностей в 3D)

## Лицензия

MIT

**Автор:** Timur Isanov
**Email:** tisanov@yahoo.com