download
raw
3.14 kB
import streamlit as st
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
from scipy import linalg
import plotly.graph_objects as go
from plotly.subplots import make_subplots
import time
def show_simulator():
"""Simulateur principal intégré"""
st.header("🧪 Simulateur intégré - Jumeau Numérique Complet")
# Configuration du système
st.markdown("### 1. Configuration du système physique")
system_config = st.selectbox("Système à simuler",
["Masse-ressort 1D", "Poutre en flexion",
"Système 2DDL", "Système personnalisé"])
# Paramètres communs
col1, col2, col3 = st.columns(3)
with col1:
st.markdown("**Physique**")
simulate_physics = st.checkbox("Simuler la physique", True)
fidelity = st.slider("Fidélité du modèle", 1, 3, 2,
help="1: Basse fidélité, 2: Moyenne, 3: Haute")
with col2:
st.markdown("**Capteurs**")
sensor_count = st.slider("Nombre de capteurs", 1, 10, 2)
sensor_noise_level = st.slider("Bruit des capteurs", 0.0, 0.2, 0.05, 0.01)
with col3:
st.markdown("**Contrôle**")
control_enabled = st.checkbox("Activer le contrôle", True)
control_type = st.selectbox("Algorithme de contrôle",
["PID", "LQR", "MPC", "Adaptatif"])
# Configuration du jumeau numérique
st.markdown("### 2. Configuration du jumeau numérique")
twin_config = st.columns(4)
with twin_config[0]:
use_kalman = st.checkbox("Filtre de Kalman", True)
kalman_type = st.selectbox("Type", ["Standard", "Étendu", "Unscented"])
with twin_config[1]:
use_model_update = st.checkbox("Mise à jour modèle", False)
update_frequency = st.slider("Fréquence MAJ", 1, 100, 10)
with twin_config[2]:
use_data_assimilation = st.checkbox("Assimilation de données", True)
assimilation_method = st.selectbox("Méthode", ["Kalman", "Particle", "Ensemble"])
with twin_config[3]:
real_time_simulation = st.checkbox("Simulation temps réel", False)
visualization_level = st.selectbox("Niveau de visualisation", ["Basique", "Détaillé", "Expert"])
# Bouton de lancement
if st.button("🚀 Lancer le jumeau numérique", type="primary"):
st.info("Simulation du jumeau numérique en cours...")
# Simulation placeholder
progress_bar = st.progress(0)
for i in range(100):
time.sleep(0.01)
progress_bar.progress(i + 1)
st.success("Simulation terminée !")
st.balloons()
# Résultats fictifs
col1, col2, col3 = st.columns(3)
with col1:
st.metric("Précision du modèle", "95.2%", "↗️ +2.1%")
with col2:
st.metric("Performance contrôle", "87.8%", "↗️ +5.3%")
with col3:
st.metric("Qualité estimation", "92.1%", "↗️ +1.8%")

Xet Storage Details

Size:
3.14 kB
·
Xet hash:
70024d16169efc98061af04678a1fea2e53ba0567cb43fa2834f5be7ce3da058

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.