Views
No views yet
bpDNN2Ea & bpDNN2Yield)1.
2├── README.md # This model card document
3├── .gitattributes # Git LFS configurations tracking .mat files
4├── bpDNN2Ea/
5│ └── Results_trained.mat # Apparent Activation Energy (Ea) network & scaling metadata
6└── bpDNN2Yield/
7 └── Results_trained.mat # Pyrolysis Product Yield network & scaling metadataResults_trained.mat file contains three core structures:net: The trained deep neural network (weights, biases, layer transfer functions).PS: Preprocessing struct (mapminmax scaling parameters for inputs).TS: Postprocessing struct (mapminmax scaling parameters for outputs).bpDNN2Ea (Activation Energy Prediction)256 (Input) → 42 (Hidden Layer 1) → 42 (Hidden Layer 2) → 1 (Output).0.01 to 0.999.bpDNN2Yield (Product Yields Prediction)259 (Input) → 45 → 45 → 45 → 45 → 45 → 3 (Outputs).bpDNN2Yield sets the lower boundary platform (w_inf = Char Yield / 100) of the mass-loss profile. For any degree of conversion α, the remaining sample weight w(α) is calculated via mass balance:bpDNN2Ea is mapped to an adaptive kinetic solver. The system compares a library of 130 mechanisms (such as diffusion, nucleation, geometrical, and reaction-order models in series/parallel/hybrid modes) and uses a Genetic Algorithm (GA) coupled with non-linear optimization (fmincon) to solve the Kissinger-Arrhenius equations:| Col Index | Feature Name | Description / Physical Meaning | Unit |
|---|---|---|---|
| 1 | Location / Source | Geographic region identifier | Class ID |
| 2 | Volatile Matter | Proximate analysis of volatile substances | wt.% (dry-basis) |
| 3 | Fixed Carbon | Proximate analysis of fixed carbon | wt.% (dry-basis) |
| 4 | Ash Content | Proximate analysis of inorganic residue | wt.% (dry-basis) |
| 5 | Carbon (C) | Ultimate analysis of elemental Carbon | wt.% (dry-basis) |
| 6 | Hydrogen (H) | Ultimate analysis of elemental Hydrogen | wt.% (dry-basis) |
| 7 | Oxygen (O) | Ultimate analysis of elemental Oxygen | wt.% (dry-basis) |
| 8 | Nitrogen (N) | Ultimate analysis of elemental Nitrogen | wt.% (dry-basis) |
| 9 | Sulfur (S) | Ultimate analysis of elemental Sulfur | wt.% (dry-basis) |
| 10 | SiO₂ | Silica percentage in biomass ash | wt.% of ash |
| 11 | Al₂O₃ | Alumina percentage in biomass ash | wt.% of ash |
| 12 | Fe₂O₃ | Iron oxide percentage in biomass ash | wt.% of ash |
| 13 | CaO | Calcium oxide percentage in biomass ash | wt.% of ash |
| 14 | MgO | Magnesium oxide percentage in biomass ash | wt.% of ash |
| 15 | TiO₂ | Titanium dioxide percentage in biomass ash | wt.% of ash |
| 16 | Na₂O | Sodium oxide percentage in biomass ash | wt.% of ash |
| 17 | K₂O | Potassium oxide percentage in biomass ash | wt.% of ash |
| 18 | P₂O₅ | Phosphorus pentoxide percentage in biomass ash | wt.% of ash |
| 19 | SO₃ | Sulfur trioxide percentage in biomass ash | wt.% of ash |
.mat model cards locally, you can use the following MATLAB script:1%% PyroBot Foundation Models: Inference Example
2% Clear workspace
3clear; clc;
4
5% Configure paths to find the bpDNN2Ea and bpDNN2Yield directories
6addpath('bpDNN2Ea');
7addpath('bpDNN2Yield');
8
9%% 1. Load the Pre-trained Surrogates
10fprintf('=== Loading PyroBot Foundation Models ===\n');
11
12EaModelStruct = load('bpDNN2Ea/Results_trained.mat');
13netEa = EaModelStruct.net;
14PS_Ea = EaModelStruct.PS;
15TS_Ea = EaModelStruct.TS;
16
17YieldModelStruct = load('bpDNN2Yield/Results_trained.mat');
18netYield = YieldModelStruct.net;
19PS_Y = YieldModelStruct.PS;
20TS_Y = YieldModelStruct.TS;
21
22fprintf('Models loaded successfully!\n\n');
23
24%% 2. Define Sample Biomass (e.g. Corn Stover Base Features)
25% Define the 19 core ultimate, proximate, and ash compositions
26basicBiomassFeatures = [ ...
27 1.00, ... % Location ID
28 72.50, ... % Volatile Matter (%)
29 18.20, ... % Fixed Carbon (%)
30 9.30, ... % Ash (%)
31 43.10, ... % C (%)
32 5.60, ... % H (%)
33 41.50, ... % O (%)
34 0.45, ... % N (%)
35 0.05, ... % S (%)
36 35.20, ... % SiO2 (% of ash)
37 2.10, ... % Al2O3 (% of ash)
38 1.80, ... % Fe2O3 (% of ash)
39 12.40, ... % CaO (% of ash)
40 4.10, ... % MgO (% of ash)
41 0.15, ... % TiO2 (% of ash)
42 0.80, ... % Na2O (% of ash)
43 18.50, ... % K2O (% of ash)
44 3.20, ... % P2O5 (% of ash)
45 1.50 ... % SO3 (% of ash)
46];
47
48% Define Pyrolysis Process Conditions (4 features specific to Yield network)
49% 1. Target Temperature (°C), 2. Reaction Time (min), 3. Heating Rate (K/min), 4. Reactor Type
50processConditions = [600, 30, 20, 1];
51
52% Construct blending/mixing parameters (zero-padded for single pure biomass)
53feedstockMixingFeatures = zeros(1, 236);
54
55%% 3. Predict Pyrolysis Yields
56% Prepare input for Yield Network: (259 features x 1 sample)
57yieldInput = [basicBiomassFeatures, processConditions, feedstockMixingFeatures]';
58
59% Switch global normalization handlers for nnpredict
60global PS TS
61PS = PS_Y;
62TS = TS_Y;
63
64% Run forward propagation through the Yield surrogate
65yieldPred = nnpredict(netYield, yieldInput);
66
67charYield = yieldPred(1);
68liquidYield = yieldPred(2);
69gasYield = yieldPred(3);
70
71fprintf('=== Predicted Pyrolysis Yields ===\n');
72fprintf('Char (Solid) Yield: %.2f %%\n', charYield);
73fprintf('Liquid/Oil Yield: %.2f %%\n', liquidYield);
74fprintf('Gas Yield: %.2f %%\n', gasYield);
75fprintf('Sum Check: %.2f %%\n\n', sum(yieldPred));
76
77%% 4. Predict Apparent Activation Energy (Ea) vs. Pyrolysis Progress (Alpha)
78% Define conversion levels (alpha from 0.02 to 0.98)
79alphaList = 0.02:0.02:0.98;
80numAlpha = length(alphaList);
81eaInputs = zeros(numAlpha, 256);
82
83for i = 1:numAlpha
84 % Ea input structure: [basicFeatures(1-19), alpha(20), feedstockMixing(21-256)]
85 eaInputs(i, :) = [basicBiomassFeatures, alphaList(i), feedstockMixingFeatures];
86end
87
88% Transpose to (256 features x numAlpha samples) for network evaluation
89sampleInpEa = eaInputs';
90
91% Switch global normalization handlers to Ea Network scaling
92PS = PS_Ea;
93TS = TS_Ea;
94
95% Run forward propagation through the Ea surrogate
96EaPred_kJ = nnpredict(netEa, sampleInpEa);
97
98fprintf('=== Predicted Apparent Activation Energies ===\n');
99fprintf('Alpha = 0.10: Ea = %.2f kJ/mol\n', EaPred_kJ(alphaList == 0.10));
100fprintf('Alpha = 0.50: Ea = %.2f kJ/mol\n', EaPred_kJ(alphaList == 0.50));
101fprintf('Alpha = 0.90: Ea = %.2f kJ/mol\n', EaPred_kJ(alphaList == 0.90));
102fprintf('Average Ea: %.2f kJ/mol\n', mean(EaPred_kJ));
103
104%% 5. Reconstruct Monotonic Mass Loss (TG) Curve
105w_inf = charYield / 100; % Final residue mass fraction
106w_t = (1 - alphaList .* (1 - w_inf)) * 100; % Remaining mass percentage (%)
107
108fprintf('\nTG Curve Endpoint Platform (w_inf): %.2f %%\n', w_inf * 100);nnpreprocess.m, nnpostprocess.m, and nnpredict.m which compute standard forward propagation, multi-layer activation maps (logsig, tansig), and apply scale scaling/restoration according to the matrices in Results_trained.mat.1@misc{tang2026pyrobot,
2 author = {Tang, Siqi and others},
3 title = {PyroBot_FoundationModel: Pre-trained Deep Neural Network Surrogate Models for Biomass Pyrolysis},
4 year = {2026},
5 publisher = {Hugging Face},
6 howpublished = {\url{https://huggingface.co/TANG-Research-Group/PyroBot_FoundationModel}}
7}