import { useState, useEffect } from "react"; import ReactMarkdown from "react-markdown"; import remarkGfm from "remark-gfm"; // Custom component overrides for proper dark-theme rendering const mdComponents: React.ComponentProps["components"] = { // ── Headings ────────────────────────────────────────────────────────── h1: ({ children }) => (

{children}

), h2: ({ children }) => (

{children}

), h3: ({ children }) => (

{children}

), h4: ({ children }) => (

{children}

), h5: ({ children }) => (
{children}
), // ── Paragraphs ──────────────────────────────────────────────────────── p: ({ children }) => (

{children}

), // ── Lists ───────────────────────────────────────────────────────────── ul: ({ children }) => ( ), ol: ({ children }) => (
    {children}
), li: ({ children }) => (
  • {children}
  • ), // ── Code ───────────────────────────────────────────────────────────── code: ({ className, children, ...props }) => { const isBlock = className?.includes("language-"); if (isBlock) { return (
    {className && (
    {className.replace("language-", "")}
    )}
                
                  {children}
                
              
    ); } return ( {children} ); }, // ── Tables ──────────────────────────────────────────────────────────── table: ({ children }) => (
    {children}
    ), thead: ({ children }) => ( {children} ), tbody: ({ children }) => {children}, tr: ({ children }) => ( {children} ), th: ({ children }) => ( {children} ), td: ({ children }) => ( {children} ), // ── Blockquote ──────────────────────────────────────────────────────── blockquote: ({ children }) => (
    {children}
    ), // ── Horizontal rule ─────────────────────────────────────────────────── hr: () =>
    , // ── Links ───────────────────────────────────────────────────────────── a: ({ href, children }) => ( {children} ), // ── Strong / em ────────────────────────────────────────────────────── strong: ({ children }) => ( {children} ), em: ({ children }) => ( {children} ), }; // ── Fallback content when file not available ────────────────────────────── const FALLBACK = `# Comprehensive Multi-Model Approach to Lithium-Ion Battery State of Health Prediction **Authors:** Research Team | **Dataset:** NASA PCoE Battery Dataset --- ## Abstract This work presents a comprehensive multi-model framework for predicting State of Health (SOH) and Remaining Useful Life (RUL) of lithium-ion batteries using the NASA Prognostics Center of Excellence (PCoE) dataset. We evaluate **12 classical machine learning models** (Ridge, Lasso, ElasticNet, KNN, SVR, Random Forest, ExtraTrees, GradientBoosting, XGBoost, LightGBM) alongside **deep learning architectures** (LSTM variants, Transformer, VAE-LSTM, iTransformer) using an intra-battery chronological split methodology that eliminates cross-battery data leakage. --- ## Key Results | Model | R² | MAE (%) | RMSE | Within ±5% | |---|---|---|---|---| | ExtraTrees | **0.967** | **1.17** | 1.69 | 99.1% | | GradientBoosting | 0.961 | 1.28 | 1.81 | 98.4% | | Random Forest | 0.958 | 1.31 | 1.86 | 97.9% | | XGBoost (HPO) | 0.954 | 1.35 | 1.94 | 97.6% | | LightGBM (HPO) | 0.951 | 1.42 | 2.01 | 97.2% | --- ## Methodology ### Dataset The NASA PCoE dataset comprises **30 Li-ion 18650 cells** (B0005–B0056, excluding B0049–B0052) tested under 5 temperature groups: - **4°C** — cold environment testing - **22°C** — room temperature - **24°C** — standard lab condition - **43°C** — elevated temperature stress - **44°C** — high temperature degradation ### Feature Engineering Each battery contributes **12 per-cycle engineered features** including: - Electrochemical Impedance Spectroscopy (EIS) parameters: **Re** (electrolyte resistance) and **Rct** (charge-transfer resistance) - Voltage statistics (mean, std, min, max, range) - Temperature dynamics (ambient, mean cell temp) - Capacity delta per cycle - Cycle number and normalized age ### Split Methodology > **Intra-battery chronological split** — for each battery, the first 70% of cycles are used for training, the remaining 30% for testing. This eliminates cross-battery data leakage that was present in the v1 group-based split. `; // ── Component ───────────────────────────────────────────────────────────── export default function ResearchPaper() { const [markdown, setMarkdown] = useState(""); const [loading, setLoading] = useState(true); const [usedFallback, setUsedFallback] = useState(false); useEffect(() => { fetch("/research_paper.md") .then((r) => { if (!r.ok) throw new Error(`HTTP ${r.status}`); return r.text(); }) .then((md) => { setMarkdown(md); setLoading(false); }) .catch(() => { setMarkdown(FALLBACK); setUsedFallback(true); setLoading(false); }); }, []); return (
    {/* Header card */}

    IEEE Research Paper

    {usedFallback && ( Preview )}

    Multi-Model Battery Lifecycle Prediction using NASA PCoE Dataset

    ↓ Download
    {/* Content */}
    {loading ? (
    Loading research paper…
    ) : (
    {markdown}
    )}
    ); }