{ "cells": [ { "cell_type": "markdown", "id": "18e576d0", "metadata": {}, "source": [ "# Reactor Physics\n", "\n", "**Inputs**: 2-group homogenized cross sections (HXS) ($cm^{-1}$)\n", "\n", "- `FissionFast`: $\\nu\\Sigma_f^1$\n", "- `CaptureFast`: $\\Sigma_a^1$\n", "- `FissionThermal`: $\\nu\\Sigma_f^2$\n", "- `CaptureThermal`: $\\Sigma_a^2$\n", "- `Scatter12`: $\\Sigma_s^{1 \\rightarrow 2}$\n", "- `Scatter11`: $\\Sigma_s^{1 \\rightarrow 1}$\n", "- `Scatter21`: $\\Sigma_s^{2 \\rightarrow 1}$\n", "- `Scatter22`: $\\Sigma_s^{2 \\rightarrow 2}$\n", "\n", "**Outputs**\n", "\n", "- `k`: Neutron multiplication factor\n", "\n", "This data set consists of 1000 observations with eight inputs and one output. The data is taken from [[RSOGradyK19]](https://pymaise.readthedocs.io/en/stable/index.html#id3), a sensitivity analysis using the Shapley effect. The geometry of the problem is a pressurized water reactor (PWR) lattice based on the BEAVRS benchmark. The lattice is a $17 \\times 17$ PWR with $264~UO_2$ fuel rods, 24 guide tubes, and one instrumentation tube. The lattice utilizes quarter symmetry in TRITON and is depleted to $50~GWD/MTU$. To construct the data set, a two-step process was used: (1) the uncertainty in the fundamental microscopic XS data was propagated, and (2) these XSs were collapsed into a 2-group form using the following equation\n", "\n", "\\begin{equation}\n", "\\Sigma_x^g = \\frac{\\int_{\\Delta E_g}dE \\int_V \\Sigma_{x,m}(E) \\phi(r,E,t) dV}{\\int_{\\Delta E_g}dE\\int_V\\phi(r,E,t)dV}.\n", "\\end{equation}\n", "\n", "The sampler module in SCALE was used for uncertainty propagation, and the 56-group XS and covariance libraries were used in TRITON to create 56-group HXSs using the above equation. These HXSs are then collapsed into a 2-group library. 1000 random samples were taken from the Sampler [[RSOGradyK19]](https://pymaise.readthedocs.io/en/stable/index.html#id3).\n", "\n", "To start pyMAISE, the general packages are imported below." ] }, { "cell_type": "code", "execution_count": 1, "id": "993b955f", "metadata": { "execution": { "iopub.execute_input": "2024-08-22T18:45:22.716341Z", "iopub.status.busy": "2024-08-22T18:45:22.716226Z", "iopub.status.idle": "2024-08-22T18:45:25.762256Z", "shell.execute_reply": "2024-08-22T18:45:25.761865Z" } }, "outputs": [], "source": [ "from pyMAISE.datasets import load_xs\n", "from pyMAISE.preprocessing import correlation_matrix, train_test_split, scale_data\n", "import pyMAISE as mai\n", "\n", "import time\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "from scipy.stats import uniform, randint\n", "from sklearn.preprocessing import MinMaxScaler\n", "\n", "# Plot settings\n", "matplotlib_settings = {\n", " \"font.size\": 12,\n", " \"legend.fontsize\": 11,\n", " \"figure.figsize\": (8, 8)\n", "}\n", "plt.rcParams.update(**matplotlib_settings)" ] }, { "cell_type": "markdown", "id": "e34cce71", "metadata": {}, "source": [ "## pyMAISE Initialization\n", "\n", "We can load the reactor physics preprocessor by `pyMAISE.datasets.load_xs()` and by defining that it is a regression problem below." ] }, { "cell_type": "code", "execution_count": 2, "id": "eb1f06e2", "metadata": { "execution": { "iopub.execute_input": "2024-08-22T18:45:25.764609Z", "iopub.status.busy": "2024-08-22T18:45:25.764119Z", "iopub.status.idle": "2024-08-22T18:45:25.774202Z", "shell.execute_reply": "2024-08-22T18:45:25.773889Z" } }, "outputs": [], "source": [ "global_settings = mai.init(\n", " problem_type=mai.ProblemType.REGRESSION, # Define a regression problem\n", " cuda_visible_devices=\"-1\" # Use CPU only\n", ")\n", "data, inputs, outputs = load_xs()" ] }, { "cell_type": "markdown", "id": "7ef84fc0", "metadata": {}, "source": [ "The data consists of 8 inputs:" ] }, { "cell_type": "code", "execution_count": 3, "id": "56821ccb", "metadata": { "execution": { "iopub.execute_input": "2024-08-22T18:45:25.775722Z", "iopub.status.busy": "2024-08-22T18:45:25.775485Z", "iopub.status.idle": "2024-08-22T18:45:25.784005Z", "shell.execute_reply": "2024-08-22T18:45:25.783684Z" } }, "outputs": [ { "data": { "text/html": [ "
<xarray.DataArray (index: 1000, variable: 8)>\n",
"array([[0.0064462 , 0.00924782, 0.130007 , ..., 0.482483 , 0.00150595,\n",
" 1.12546 ],\n",
" [0.00635893, 0.00934703, 0.128811 , ..., 0.490558 , 0.00149675,\n",
" 1.12616 ],\n",
" [0.0064674 , 0.00925333, 0.129465 , ..., 0.486784 , 0.00149345,\n",
" 1.12423 ],\n",
" ...,\n",
" [0.00649919, 0.00934518, 0.129862 , ..., 0.490898 , 0.00151782,\n",
" 1.1289 ],\n",
" [0.00647664, 0.00944998, 0.130726 , ..., 0.494716 , 0.0015138 ,\n",
" 1.12734 ],\n",
" [0.0062723 , 0.00960541, 0.130317 , ..., 0.502067 , 0.00150592,\n",
" 1.1264 ]])\n",
"Coordinates:\n",
" * index (index) int64 0 1 2 3 4 5 6 7 ... 992 993 994 995 996 997 998 999\n",
" * variable (variable) object 'FissionFast' 'CaptureFast' ... 'Scatter22'<xarray.DataArray (index: 1000, variable: 1)>\n",
"array([[1.256376],\n",
" [1.241534],\n",
" [1.256988],\n",
" [1.261442],\n",
" [1.253744],\n",
" [1.261324],\n",
" [1.246886],\n",
" [1.249954],\n",
" [1.25212 ],\n",
" [1.258008],\n",
" [1.256793],\n",
" [1.247149],\n",
" [1.253193],\n",
" [1.249416],\n",
" [1.24956 ],\n",
" [1.246953],\n",
" [1.248573],\n",
" [1.261022],\n",
" [1.247053],\n",
" [1.249361],\n",
"...\n",
" [1.256116],\n",
" [1.239636],\n",
" [1.269848],\n",
" [1.249036],\n",
" [1.24979 ],\n",
" [1.262373],\n",
" [1.256964],\n",
" [1.246652],\n",
" [1.250859],\n",
" [1.251616],\n",
" [1.251508],\n",
" [1.25897 ],\n",
" [1.259301],\n",
" [1.247735],\n",
" [1.244721],\n",
" [1.256407],\n",
" [1.24553 ],\n",
" [1.251895],\n",
" [1.255878],\n",
" [1.240064]])\n",
"Coordinates:\n",
" * index (index) int64 0 1 2 3 4 5 6 7 ... 992 993 994 995 996 997 998 999\n",
" * variable (variable) object 'k'| \n", " | Model Types | \n", "Train R2 | \n", "Train MAE | \n", "Train MAPE | \n", "Train RMSE | \n", "Train RMSPE | \n", "Test R2 | \n", "Test MAE | \n", "Test MAPE | \n", "Test RMSE | \n", "Test RMSPE | \n", "
|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | \n", "Linear | \n", "0.999930 | \n", "0.000043 | \n", "0.003422 | \n", "0.000061 | \n", "0.004873 | \n", "0.999923 | \n", "0.000044 | \n", "0.003505 | \n", "0.000065 | \n", "0.005215 | \n", "
| 27 | \n", "FNN | \n", "0.999916 | \n", "0.000040 | \n", "0.003152 | \n", "0.000067 | \n", "0.005287 | \n", "0.999808 | \n", "0.000041 | \n", "0.003303 | \n", "0.000103 | \n", "0.008126 | \n", "
| 28 | \n", "FNN | \n", "0.999955 | \n", "0.000039 | \n", "0.003154 | \n", "0.000049 | \n", "0.003879 | \n", "0.999787 | \n", "0.000050 | \n", "0.004009 | \n", "0.000109 | \n", "0.008775 | \n", "
| 30 | \n", "FNN | \n", "0.999925 | \n", "0.000051 | \n", "0.004049 | \n", "0.000063 | \n", "0.005007 | \n", "0.999685 | \n", "0.000060 | \n", "0.004775 | \n", "0.000132 | \n", "0.010669 | \n", "
| 26 | \n", "FNN | \n", "0.999773 | \n", "0.000106 | \n", "0.008467 | \n", "0.000110 | \n", "0.008752 | \n", "0.999672 | \n", "0.000112 | \n", "0.008944 | \n", "0.000135 | \n", "0.010731 | \n", "
| 1 | \n", "Lasso | \n", "0.999657 | \n", "0.000106 | \n", "0.008432 | \n", "0.000135 | \n", "0.010738 | \n", "0.999585 | \n", "0.000121 | \n", "0.009699 | \n", "0.000152 | \n", "0.012095 | \n", "
| 2 | \n", "Lasso | \n", "0.999636 | \n", "0.000109 | \n", "0.008689 | \n", "0.000139 | \n", "0.011057 | \n", "0.999561 | \n", "0.000125 | \n", "0.009990 | \n", "0.000156 | \n", "0.012441 | \n", "
| 29 | \n", "FNN | \n", "0.999365 | \n", "0.000176 | \n", "0.014100 | \n", "0.000183 | \n", "0.014654 | \n", "0.999333 | \n", "0.000182 | \n", "0.014550 | \n", "0.000192 | \n", "0.015389 | \n", "
| 3 | \n", "Lasso | \n", "0.999297 | \n", "0.000152 | \n", "0.012164 | \n", "0.000193 | \n", "0.015372 | \n", "0.999174 | \n", "0.000173 | \n", "0.013824 | \n", "0.000214 | \n", "0.017078 | \n", "
| 4 | \n", "Lasso | \n", "0.999268 | \n", "0.000156 | \n", "0.012421 | \n", "0.000197 | \n", "0.015690 | \n", "0.999141 | \n", "0.000177 | \n", "0.014101 | \n", "0.000218 | \n", "0.017416 | \n", "
| 5 | \n", "Lasso | \n", "0.998882 | \n", "0.000193 | \n", "0.015440 | \n", "0.000243 | \n", "0.019395 | \n", "0.998709 | \n", "0.000217 | \n", "0.017328 | \n", "0.000268 | \n", "0.021360 | \n", "
| 6 | \n", "SVM | \n", "0.964631 | \n", "0.001071 | \n", "0.085551 | \n", "0.001367 | \n", "0.109140 | \n", "0.966884 | \n", "0.001026 | \n", "0.081902 | \n", "0.001356 | \n", "0.107942 | \n", "
| 7 | \n", "SVM | \n", "0.964631 | \n", "0.001071 | \n", "0.085551 | \n", "0.001367 | \n", "0.109140 | \n", "0.966884 | \n", "0.001026 | \n", "0.081902 | \n", "0.001356 | \n", "0.107942 | \n", "
| 8 | \n", "SVM | \n", "0.964631 | \n", "0.001071 | \n", "0.085551 | \n", "0.001367 | \n", "0.109140 | \n", "0.966884 | \n", "0.001026 | \n", "0.081902 | \n", "0.001356 | \n", "0.107942 | \n", "
| 9 | \n", "SVM | \n", "0.956554 | \n", "0.001219 | \n", "0.097408 | \n", "0.001515 | \n", "0.121060 | \n", "0.956807 | \n", "0.001245 | \n", "0.099505 | \n", "0.001548 | \n", "0.123715 | \n", "
| 10 | \n", "SVM | \n", "0.956554 | \n", "0.001219 | \n", "0.097408 | \n", "0.001515 | \n", "0.121060 | \n", "0.956807 | \n", "0.001245 | \n", "0.099505 | \n", "0.001548 | \n", "0.123715 | \n", "
| 16 | \n", "RF | \n", "0.980971 | \n", "0.000740 | \n", "0.059081 | \n", "0.001003 | \n", "0.080093 | \n", "0.912463 | \n", "0.001693 | \n", "0.135239 | \n", "0.002204 | \n", "0.175831 | \n", "
| 18 | \n", "RF | \n", "0.973049 | \n", "0.000898 | \n", "0.071704 | \n", "0.001194 | \n", "0.095305 | \n", "0.907347 | \n", "0.001743 | \n", "0.139245 | \n", "0.002268 | \n", "0.180936 | \n", "
| 19 | \n", "RF | \n", "0.967183 | \n", "0.000980 | \n", "0.078275 | \n", "0.001317 | \n", "0.105242 | \n", "0.902476 | \n", "0.001820 | \n", "0.145346 | \n", "0.002327 | \n", "0.185617 | \n", "
| 17 | \n", "RF | \n", "0.973338 | \n", "0.000895 | \n", "0.071532 | \n", "0.001187 | \n", "0.094804 | \n", "0.902310 | \n", "0.001769 | \n", "0.141273 | \n", "0.002329 | \n", "0.185715 | \n", "
| 20 | \n", "RF | \n", "0.977640 | \n", "0.000794 | \n", "0.063450 | \n", "0.001087 | \n", "0.086849 | \n", "0.900803 | \n", "0.001807 | \n", "0.144354 | \n", "0.002346 | \n", "0.187232 | \n", "
| 21 | \n", "KN | \n", "1.000000 | \n", "0.000000 | \n", "0.000000 | \n", "0.000000 | \n", "0.000000 | \n", "0.883329 | \n", "0.001910 | \n", "0.152481 | \n", "0.002545 | \n", "0.202910 | \n", "
| 22 | \n", "KN | \n", "1.000000 | \n", "0.000000 | \n", "0.000000 | \n", "0.000000 | \n", "0.000000 | \n", "0.880334 | \n", "0.001906 | \n", "0.152177 | \n", "0.002577 | \n", "0.205569 | \n", "
| 24 | \n", "KN | \n", "1.000000 | \n", "0.000000 | \n", "0.000000 | \n", "0.000000 | \n", "0.000000 | \n", "0.875923 | \n", "0.001968 | \n", "0.157160 | \n", "0.002624 | \n", "0.209312 | \n", "
| 25 | \n", "KN | \n", "1.000000 | \n", "0.000000 | \n", "0.000000 | \n", "0.000000 | \n", "0.000000 | \n", "0.875923 | \n", "0.001968 | \n", "0.157160 | \n", "0.002624 | \n", "0.209312 | \n", "
| 23 | \n", "KN | \n", "1.000000 | \n", "0.000000 | \n", "0.000000 | \n", "0.000000 | \n", "0.000000 | \n", "0.866971 | \n", "0.002013 | \n", "0.160785 | \n", "0.002717 | \n", "0.216831 | \n", "
| 12 | \n", "DT | \n", "0.946595 | \n", "0.001275 | \n", "0.101836 | \n", "0.001680 | \n", "0.134255 | \n", "0.810473 | \n", "0.002608 | \n", "0.208446 | \n", "0.003243 | \n", "0.259208 | \n", "
| 11 | \n", "DT | \n", "0.986833 | \n", "0.000592 | \n", "0.047266 | \n", "0.000834 | \n", "0.066606 | \n", "0.803027 | \n", "0.002578 | \n", "0.206030 | \n", "0.003306 | \n", "0.264265 | \n", "
| 15 | \n", "DT | \n", "0.933557 | \n", "0.001460 | \n", "0.116647 | \n", "0.001874 | \n", "0.149800 | \n", "0.800256 | \n", "0.002701 | \n", "0.215829 | \n", "0.003330 | \n", "0.266004 | \n", "
| 13 | \n", "DT | \n", "0.956934 | \n", "0.001168 | \n", "0.093269 | \n", "0.001509 | \n", "0.120533 | \n", "0.790764 | \n", "0.002737 | \n", "0.218712 | \n", "0.003408 | \n", "0.272278 | \n", "
| 14 | \n", "DT | \n", "0.958178 | \n", "0.001149 | \n", "0.091755 | \n", "0.001487 | \n", "0.118789 | \n", "0.788229 | \n", "0.002745 | \n", "0.219347 | \n", "0.003428 | \n", "0.273935 | \n", "