symbolic-regression/prior-art/notebook_1.ipynb
2025-06-19 14:07:47 +03:00

1936 lines
No EOL
100 KiB
Text
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.3"
},
"colab": {
"name": "notebook_1.ipynb",
"provenance": [],
"include_colab_link": true
},
"accelerator": "GPU"
},
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "view-in-github",
"colab_type": "text"
},
"source": [
"<a href=\"https://colab.research.google.com/github/abdalazizrashid/AI-Feynman/blob/master/notebook_1.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
]
},
{
"cell_type": "code",
"metadata": {
"id": "LNzvcQYRncpd",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
},
"outputId": "2db93048-bf8d-44a0-da61-fcdb3eda475d"
},
"source": [
"!git clone https://github.com/abdalazizrashid/AI-Feynman.git"
],
"execution_count": 57,
"outputs": [
{
"output_type": "stream",
"text": [
"fatal: destination path 'AI-Feynman' already exists and is not an empty directory.\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "wY7fcIORnmzR",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 309
},
"outputId": "6548409e-dd85-4bfb-d633-a2747812ce5f"
},
"source": [
"!pip install -r AI-Feynman/requirements.txt"
],
"execution_count": 58,
"outputs": [
{
"output_type": "stream",
"text": [
"Requirement already satisfied: torch in /usr/local/lib/python3.6/dist-packages (from -r AI-Feynman/requirements.txt (line 1)) (1.6.0+cu101)\n",
"Requirement already satisfied: numpy in /usr/local/lib/python3.6/dist-packages (from -r AI-Feynman/requirements.txt (line 2)) (1.18.5)\n",
"Requirement already satisfied: matplotlib in /usr/local/lib/python3.6/dist-packages (from -r AI-Feynman/requirements.txt (line 3)) (3.2.2)\n",
"Requirement already satisfied: sympy in /usr/local/lib/python3.6/dist-packages (from -r AI-Feynman/requirements.txt (line 4)) (1.1.1)\n",
"Requirement already satisfied: pandas in /usr/local/lib/python3.6/dist-packages (from -r AI-Feynman/requirements.txt (line 5)) (1.0.5)\n",
"Requirement already satisfied: scipy in /usr/local/lib/python3.6/dist-packages (from -r AI-Feynman/requirements.txt (line 6)) (1.4.1)\n",
"Requirement already satisfied: sortedcontainers in /usr/local/lib/python3.6/dist-packages (from -r AI-Feynman/requirements.txt (line 7)) (2.2.2)\n",
"Requirement already satisfied: tabulate in /usr/local/lib/python3.6/dist-packages (from -r AI-Feynman/requirements.txt (line 8)) (0.8.7)\n",
"Requirement already satisfied: future in /usr/local/lib/python3.6/dist-packages (from torch->-r AI-Feynman/requirements.txt (line 1)) (0.16.0)\n",
"Requirement already satisfied: python-dateutil>=2.1 in /usr/local/lib/python3.6/dist-packages (from matplotlib->-r AI-Feynman/requirements.txt (line 3)) (2.8.1)\n",
"Requirement already satisfied: kiwisolver>=1.0.1 in /usr/local/lib/python3.6/dist-packages (from matplotlib->-r AI-Feynman/requirements.txt (line 3)) (1.2.0)\n",
"Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.6/dist-packages (from matplotlib->-r AI-Feynman/requirements.txt (line 3)) (0.10.0)\n",
"Requirement already satisfied: pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.1 in /usr/local/lib/python3.6/dist-packages (from matplotlib->-r AI-Feynman/requirements.txt (line 3)) (2.4.7)\n",
"Requirement already satisfied: mpmath>=0.19 in /usr/local/lib/python3.6/dist-packages (from sympy->-r AI-Feynman/requirements.txt (line 4)) (1.1.0)\n",
"Requirement already satisfied: pytz>=2017.2 in /usr/local/lib/python3.6/dist-packages (from pandas->-r AI-Feynman/requirements.txt (line 5)) (2018.9)\n",
"Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.6/dist-packages (from python-dateutil>=2.1->matplotlib->-r AI-Feynman/requirements.txt (line 3)) (1.15.0)\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "Y0gbIW5HnuQl",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 153
},
"outputId": "97fe04fc-c404-47b8-bec3-11d5cf321d19"
},
"source": [
"!cd /content/AI-Feynman/Code/ && ./compile.sh && apt install -y parallel\n"
],
"execution_count": 59,
"outputs": [
{
"output_type": "stream",
"text": [
"Reading package lists... Done\n",
"Building dependency tree \n",
"Reading state information... Done\n",
"parallel is already the newest version (20161222-1).\n",
"The following package was automatically installed and is no longer required:\n",
" libnvidia-common-440\n",
"Use 'apt autoremove' to remove it.\n",
"0 upgraded, 0 newly installed, 0 to remove and 35 not upgraded.\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "Kf05DiVfn1H9",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
},
"outputId": "ae513c97-4dfd-4528-edc5-c592ecc7caf0"
},
"source": [
"import os\n",
"os.chdir(\"/content/AI-Feynman/Code/\")\n",
"print(os.getcwd())"
],
"execution_count": 8,
"outputs": [
{
"output_type": "stream",
"text": [
"/content/AI-Feynman/Code\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "FuenJ6qWnSa9",
"colab_type": "code",
"colab": {}
},
"source": [
"from S_run_aifeynman import run_aifeynman\n"
],
"execution_count": 61,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "_KzP-ygVOq5s",
"colab_type": "text"
},
"source": [
"## Original Code Example"
]
},
{
"cell_type": "code",
"metadata": {
"id": "rxKF50gnnSbE",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 1000
},
"outputId": "66121f32-cddf-4609-df6e-9be120d0e8e7"
},
"source": [
"%%time\n",
"run_aifeynman(\"../example_data/\",\"example1.txt\",30,\"14ops.txt\", polyfit_deg=3, NN_epochs=400)"
],
"execution_count": null,
"outputs": [
{
"output_type": "stream",
"text": [
"Checking for brute force + \n",
"\n",
"Checking for brute force * \n",
"\n",
"Checking polyfit \n",
"\n",
"Complexity RMSE Expression\n",
"[0.0, 30.834454019627426, '0']\n",
"[36.83243537730492, 29.12634010089305, cos(x0) + cos(x2 + x3) + 2.333740234375]\n",
"[55.42220420859321, 29.09077077952536, cos(x2 + x3) + 1.88584470748901]\n",
"[63.97127597744305, 28.649814958454094, '1.808310192134*(cos(((x3-x2)/pi)))**(-1)']\n",
"[73.2730466728654, 26.754024113174246, '0.2*x0**2 - 0.444444444444444*x0*x1 + 0.111111111111111*x0 + 0.2*x1**2 + 0.125*x1 + 0.2*x2**2 - 0.444444444444444*x2*x3 + 0.166666666666667*x2 + 0.2*x3**2 + 0.166666666666667*x3 + 0.2']\n",
"Checking for brute force + \n",
"\n",
"Checking for brute force * \n",
"\n",
"Checking polyfit \n",
"\n",
"Complexity RMSE Expression\n",
"[0.0, 30.834454019627426, '0']\n",
"[36.83243537730492, 29.12634010089305, cos(x0) + cos(x2 + x3) + 2.333740234375]\n",
"[46.5605178945111, 27.13368508267342, 1.03779721260071]\n",
"[46.56056711257602, 27.133459108345154, 1.03783261803319]\n",
"[46.56057649641146, 27.13342067603215, 1.03783936851191]\n",
"[46.560576570214884, 27.133420535207133, 1.03783942160429]\n",
"[48.48784302438703, 26.85871313046377, 'tan(0.036548656722*exp(pi))']\n",
"[48.613819620546025, 26.858713124630636, 'tan(0.269214177330*pi)']\n",
"[73.2730466728654, 26.754024113174246, '0.2*x0**2 - 0.444444444444444*x0*x1 + 0.111111111111111*x0 + 0.2*x1**2 + 0.125*x1 + 0.2*x2**2 - 0.444444444444444*x2*x3 + 0.166666666666667*x2 + 0.2*x3**2 + 0.166666666666667*x3 + 0.2']\n",
"[206.23011212397856, 26.70884811651698, tan(0.694796025753021*log(-0.642380475997925*cos(x2 - 1.00466322898865*x3) + 3.26658010482788))]\n",
"Checking for brute force + \n",
"\n",
"Checking for brute force * \n",
"\n",
"Checking polyfit \n",
"\n",
"Complexity RMSE Expression\n",
"[0.0, 30.834454019627426, '0']\n",
"[36.83243537730492, 29.12634010089305, cos(x0) + cos(x2 + x3) + 2.333740234375]\n",
"[44.620081767607, 28.75693944878952, -0.270385265350342]\n",
"[46.5605178945111, 27.13368508267342, 1.03779721260071]\n",
"[46.56056711257602, 27.133459108345154, 1.03783261803319]\n",
"[46.56057649641146, 27.13342067603215, 1.03783936851191]\n",
"[46.560576570214884, 27.133420535207133, 1.03783942160429]\n",
"[48.48784302438703, 26.85871313046377, 'tan(0.036548656722*exp(pi))']\n",
"[48.613819620546025, 26.858713124630636, 'tan(0.269214177330*pi)']\n",
"[73.2730466728654, 26.754024113174246, '0.2*x0**2 - 0.444444444444444*x0*x1 + 0.111111111111111*x0 + 0.2*x1**2 + 0.125*x1 + 0.2*x2**2 - 0.444444444444444*x2*x3 + 0.166666666666667*x2 + 0.2*x3**2 + 0.166666666666667*x3 + 0.2']\n",
"[206.23011212397856, 26.70884811651698, tan(0.694796025753021*log(-0.642380475997925*cos(x2 - 1.00466322898865*x3) + 3.26658010482788))]\n",
"Checking for brute force + \n",
"\n",
"Checking for brute force * \n",
"\n",
"Checking polyfit \n",
"\n",
"Complexity RMSE Expression\n",
"[0.0, 30.834454019627426, '0']\n",
"[36.83243537730492, 29.12634010089305, cos(x0) + cos(x2 + x3) + 2.333740234375]\n",
"[44.620081767607, 28.75693944878952, -0.270385265350342]\n",
"[46.5605178945111, 27.13368508267342, 1.03779721260071]\n",
"[46.56056711257602, 27.133459108345154, 1.03783261803319]\n",
"[46.56057649641146, 27.13342067603215, 1.03783936851191]\n",
"[46.560576570214884, 27.133420535207133, 1.03783942160429]\n",
"[48.48784302438703, 26.85871313046377, 'tan(0.036548656722*exp(pi))']\n",
"[48.613819620546025, 26.858713124630636, 'tan(0.269214177330*pi)']\n",
"[73.2730466728654, 26.754024113174246, '0.2*x0**2 - 0.444444444444444*x0*x1 + 0.111111111111111*x0 + 0.2*x1**2 + 0.125*x1 + 0.2*x2**2 - 0.444444444444444*x2*x3 + 0.166666666666667*x2 + 0.2*x3**2 + 0.166666666666667*x3 + 0.2']\n",
"[206.23011212397856, 26.70884811651698, tan(0.694796025753021*log(-0.642380475997925*cos(x2 - 1.00466322898865*x3) + 3.26658010482788))]\n",
"Checking for brute force + \n",
"\n",
"Checking for brute force * \n",
"\n",
"Checking polyfit \n",
"\n",
"Complexity RMSE Expression\n",
"[0.0, 30.834454019627426, '0']\n",
"[2.584962500721156, 30.42456896678888, '0.333333333333333']\n",
"[32.00876552846736, 28.13821400441772, '1/(-0.934925954011+x1)']\n",
"[46.070972708611805, 28.114455148352643, 0.739170650917556]\n",
"[46.5605178945111, 27.13368508267342, 1.03779721260071]\n",
"[46.56056711257602, 27.133459108345154, 1.03783261803319]\n",
"[46.56057649641146, 27.13342067603215, 1.03783936851191]\n",
"[46.560576570214884, 27.133420535207133, 1.03783942160429]\n",
"[48.48784302438703, 26.85871313046377, 'tan(0.036548656722*exp(pi))']\n",
"[48.613819620546025, 26.858713124630636, 'tan(0.269214177330*pi)']\n",
"[73.2730466728654, 26.754024113174246, '0.2*x0**2 - 0.444444444444444*x0*x1 + 0.111111111111111*x0 + 0.2*x1**2 + 0.125*x1 + 0.2*x2**2 - 0.444444444444444*x2*x3 + 0.166666666666667*x2 + 0.2*x3**2 + 0.166666666666667*x3 + 0.2']\n",
"[206.23011212397856, 26.70884811651698, tan(0.694796025753021*log(-0.642380475997925*cos(x2 - 1.00466322898865*x3) + 3.26658010482788))]\n",
"Checking for brute force + \n",
"\n",
"Checking for brute force * \n",
"\n",
"Checking polyfit \n",
"\n",
"Complexity RMSE Expression\n",
"[0.0, 30.834454019627426, '0']\n",
"[2.584962500721156, 30.42456896678888, '0.333333333333333']\n",
"[28.865610660795387, 29.201384954099407, -4.89119133556296e-6]\n",
"[32.00876552846736, 28.13821400441772, '1/(-0.934925954011+x1)']\n",
"[46.070972708611805, 28.114455148352643, 0.739170650917556]\n",
"[46.5605178945111, 27.13368508267342, 1.03779721260071]\n",
"[46.56056711257602, 27.133459108345154, 1.03783261803319]\n",
"[46.56057649641146, 27.13342067603215, 1.03783936851191]\n",
"[46.560576570214884, 27.133420535207133, 1.03783942160429]\n",
"[48.48784302438703, 26.85871313046377, 'tan(0.036548656722*exp(pi))']\n",
"[48.613819620546025, 26.858713124630636, 'tan(0.269214177330*pi)']\n",
"[73.2730466728654, 26.754024113174246, '0.2*x0**2 - 0.444444444444444*x0*x1 + 0.111111111111111*x0 + 0.2*x1**2 + 0.125*x1 + 0.2*x2**2 - 0.444444444444444*x2*x3 + 0.166666666666667*x2 + 0.2*x3**2 + 0.166666666666667*x3 + 0.2']\n",
"[206.23011212397856, 26.70884811651698, tan(0.694796025753021*log(-0.642380475997925*cos(x2 - 1.00466322898865*x3) + 3.26658010482788))]\n",
"Checking for brute force + \n",
"\n",
"Checking for brute force * \n",
"\n",
"Checking polyfit \n",
"\n",
"Complexity RMSE Expression\n",
"[0.0, 30.834454019627426, '0']\n",
"[2.584962500721156, 30.42456896678888, '0.333333333333333']\n",
"[28.865610660795387, 29.201384954099407, -4.89119133556296e-6]\n",
"[28.88485156251213, 29.114959286627403, 'asin(-0.000004956861+(x1*sin(pi)))']\n",
"[29.02302728370149, 29.114941148276046, 'asin(-3.141598108678+pi)']\n",
"[32.00876552846736, 28.13821400441772, '1/(-0.934925954011+x1)']\n",
"[46.070972708611805, 28.114455148352643, 0.739170650917556]\n",
"[46.5605178945111, 27.13368508267342, 1.03779721260071]\n",
"[46.56056711257602, 27.133459108345154, 1.03783261803319]\n",
"[46.56057649641146, 27.13342067603215, 1.03783936851191]\n",
"[46.560576570214884, 27.133420535207133, 1.03783942160429]\n",
"[48.48784302438703, 26.85871313046377, 'tan(0.036548656722*exp(pi))']\n",
"[48.613819620546025, 26.858713124630636, 'tan(0.269214177330*pi)']\n",
"[73.2730466728654, 26.754024113174246, '0.2*x0**2 - 0.444444444444444*x0*x1 + 0.111111111111111*x0 + 0.2*x1**2 + 0.125*x1 + 0.2*x2**2 - 0.444444444444444*x2*x3 + 0.166666666666667*x2 + 0.2*x3**2 + 0.166666666666667*x3 + 0.2']\n",
"[206.23011212397856, 26.70884811651698, tan(0.694796025753021*log(-0.642380475997925*cos(x2 - 1.00466322898865*x3) + 3.26658010482788))]\n",
"Checking for brute force + \n",
"\n",
"Checking for brute force * \n",
"\n",
"Checking polyfit \n",
"\n",
"Complexity RMSE Expression\n",
"[0.0, 30.834454019627426, '0']\n",
"[2.584962500721156, 30.42456896678888, '0.333333333333333']\n",
"[28.865610660795387, 29.201384954099407, -4.89119133556296e-6]\n",
"[28.88485156251213, 29.114959286627403, 'asin(-0.000004956861+(x1*sin(pi)))']\n",
"[29.02302728370149, 29.114941148276046, 'asin(-3.141598108678+pi)']\n",
"[32.00876552846736, 28.13821400441772, '1/(-0.934925954011+x1)']\n",
"[46.070972708611805, 28.114455148352643, 0.739170650917556]\n",
"[46.5605178945111, 27.13368508267342, 1.03779721260071]\n",
"[46.56056711257602, 27.133459108345154, 1.03783261803319]\n",
"[46.56057649641146, 27.13342067603215, 1.03783936851191]\n",
"[46.560576570214884, 27.133420535207133, 1.03783942160429]\n",
"[48.48784302438703, 26.85871313046377, 'tan(0.036548656722*exp(pi))']\n",
"[48.613819620546025, 26.858713124630636, 'tan(0.269214177330*pi)']\n",
"[73.2730466728654, 26.754024113174246, '0.2*x0**2 - 0.444444444444444*x0*x1 + 0.111111111111111*x0 + 0.2*x1**2 + 0.125*x1 + 0.2*x2**2 - 0.444444444444444*x2*x3 + 0.166666666666667*x2 + 0.2*x3**2 + 0.166666666666667*x3 + 0.2']\n",
"[206.23011212397856, 26.70884811651698, tan(0.694796025753021*log(-0.642380475997925*cos(x2 - 1.00466322898865*x3) + 3.26658010482788))]\n",
"Checking for brute force + \n",
"\n",
"Checking for brute force * \n",
"\n",
"Checking polyfit \n",
"\n",
"Complexity RMSE Expression\n",
"[0.0, 30.834454019627426, '0']\n",
"[1.0, 29.661717905473818, '1']\n",
"[28.865610660795387, 29.201384954099407, -4.89119133556296e-6]\n",
"[28.88485156251213, 29.114959286627403, 'asin(-0.000004956861+(x1*sin(pi)))']\n",
"[29.02302728370149, 29.114941148276046, 'asin(-3.141598108678+pi)']\n",
"[32.00876552846736, 28.13821400441772, '1/(-0.934925954011+x1)']\n",
"[35.50977500432694, 1.6280023074285465e-06, '(x0**2 - 2*x0*x1 + x1**2 + x2**2 - 2*x2*x3 + x3**2)**0.5']\n",
"Checking for brute force + \n",
"\n",
"Checking for brute force * \n",
"\n",
"Checking polyfit \n",
"\n",
"Complexity RMSE Expression\n",
"[0.0, 30.834454019627426, '0']\n",
"[1.0, 29.661717905473818, '1']\n",
"[28.865610660795387, 29.201384954099407, -4.89119133556296e-6]\n",
"[28.88485156251213, 29.114959286627403, 'asin(-0.000004956861+(x1*sin(pi)))']\n",
"[29.02302728370149, 29.114941148276046, 'asin(-3.141598108678+pi)']\n",
"[32.00876552846736, 28.13821400441772, '1/(-0.934925954011+x1)']\n",
"[35.50977500432694, 1.6280023074285465e-06, '(x0**2 - 2*x0*x1 + x1**2 + x2**2 - 2*x2*x3 + x3**2)**0.5']\n",
"Checking for symmetry \n",
" example1.txt_train\n",
"Training a NN on the data... \n",
"\n",
"tensor(0.0404, device='cuda:0', grad_fn=<DivBackward0>)\n",
"tensor(0.0282, device='cuda:0', grad_fn=<DivBackward0>)\n",
"tensor(0.0354, device='cuda:0', grad_fn=<DivBackward0>)\n",
"tensor(0.0265, device='cuda:0', grad_fn=<DivBackward0>)\n",
"NN loss: tensor(0.0029, device='cuda:0', grad_fn=<DivBackward0>) \n",
"\n",
"Checking for brute force + \n",
"\n",
"Checking for brute force * \n",
"\n",
"Checking polyfit \n",
"\n",
"Complexity RMSE Expression\n",
"[47.56309550289244, 29.20117684355327, 2.07930612564087]\n",
"[50.5090504796962, 28.162061596052734, '0.005215765238+sqrt((x2*x2))']\n",
"[53.788821841164236, 27.623981263190988, '0.2*x0**2 - 0.444444444444444*x0*x1 + 0.111111111111111*x0 + 0.2*x1**2 + 0.111111111111111*x1 + 0.2*x2**2 + 0.625']\n",
"[118.35791391022252, 27.41497824744871, -0.971029222011566*cos(x2) + cos(x0 + sin(x1)) + 2.61414766311646]\n",
"[174.23364071878729, 27.411232030672863, '0.2*x0**2 - 0.444444444444444*x0*x1 + 0.117043664748057*x0 + 0.2*x1**2 + 0.111111111111111*x1 + 0.215954831506172*x2**2 + 0.618452302296974']\n",
"[202.75973089793666, 26.4718092017765, -0.971062898635864*cos(x2) - 0.97521698474884*cos(x0 - 0.988607943058014*x1) + 2.4916136264801]\n",
"Checking for brute force + \n",
"\n",
"Checking for brute force * \n",
"\n",
"Checking polyfit \n",
"\n",
"Complexity RMSE Expression\n",
"[26.416665599935456, 31.151831594084907, '-tan(0.1*x0*x1 - 0.625)']\n",
"[40.392864438595524, 29.960782005496213, 'tan(-23.126257072703+exp(pi))']\n",
"[40.393057897115405, 29.960777143296564, 'tan(-3.127155157913+pi)']\n",
"[46.0166311684591, 29.95909299612648, '0.711846380458438']\n",
"[46.5605178945111, 27.13368508267342, 1.03779721260071]\n",
"[46.56056711257602, 27.133459108345154, 1.03783261803319]\n",
"[46.56057649641146, 27.13342067603215, 1.03783936851191]\n",
"[46.560576570214884, 27.133420535207133, 1.03783942160429]\n",
"[46.56058152917947, 27.13339217046357, 1.03784298896790]\n",
"[46.68158917359681, 26.85871306245941, 'tan(-0.845761305278*(x1-(x1+1)))']\n",
"[151.3842928046349, 26.449089073084824, -0.889655292034149*tan(0.102245159447193*cos(x2) - 0.877891777343642)]\n",
"Checking for brute force + \n",
"\n",
"Checking for brute force * \n",
"\n",
"Checking polyfit \n",
"\n",
"Complexity RMSE Expression\n",
"[0.0, 30.834454019627426, '0']\n",
"[4.0, 30.771263892512106, 'acos(-666.000000000000*(x1-((x1+1)-1)))']\n",
"[13.60964047443681, 30.24841398745967, 'acos(0.000000000038*(x0+exp(exp(pi))))']\n",
"[40.392864438595524, 29.960782005496213, 'tan(-23.126257072703+exp(pi))']\n",
"[40.393057897115405, 29.960777143296564, 'tan(-3.127155157913+pi)']\n",
"[44.620081767607, 28.75693944878952, -0.270385265350342]\n",
"[46.5605178945111, 27.13368508267342, 1.03779721260071]\n",
"[46.56056711257602, 27.133459108345154, 1.03783261803319]\n",
"[46.56057649641146, 27.13342067603215, 1.03783936851191]\n",
"[46.560576570214884, 27.133420535207133, 1.03783942160429]\n",
"[46.56058152917947, 27.13339217046357, 1.03784298896790]\n",
"[46.68158917359681, 26.85871306245941, 'tan(-0.845761305278*(x1-(x1+1)))']\n",
"[151.3842928046349, 26.449089073084824, -0.889655292034149*tan(0.102245159447193*cos(x2) - 0.877891777343642)]\n",
"Checking for brute force + \n",
"\n",
"Checking for brute force * \n",
"\n",
"Checking polyfit \n",
"\n",
"Complexity RMSE Expression\n",
"[0.0, 30.834454019627426, '0']\n",
"[4.0, 30.771263892512106, 'acos(-666.000000000000*(x1-((x1+1)-1)))']\n",
"[13.60964047443681, 30.24841398745967, 'acos(0.000000000038*(x0+exp(exp(pi))))']\n",
"[39.56224242422107, 27.05989455935905, 'log(3*x0**2 - 6*x0*x1 - x0 + 3*x1**2 - x1 + 3*x2**2)']\n",
"[46.68158917359681, 26.85871306245941, 'tan(-0.845761305278*(x1-(x1+1)))']\n",
"[151.3842928046349, 26.449089073084824, -0.889655292034149*tan(0.102245159447193*cos(x2) - 0.877891777343642)]\n",
"Checking for brute force + \n",
"\n",
"Checking for brute force * \n",
"\n",
"Checking polyfit \n",
"\n",
"Complexity RMSE Expression\n",
"[0.0, 30.834454019627426, '0']\n",
"[2.0, 30.21233279612709, '0.500000000000000']\n",
"[32.00876552846736, 28.13821400441772, '1/(-0.934925954011+x1)']\n",
"[39.56224242422107, 27.05989455935905, 'log(3*x0**2 - 6*x0*x1 - x0 + 3*x1**2 - x1 + 3*x2**2)']\n",
"[46.68158917359681, 26.85871306245941, 'tan(-0.845761305278*(x1-(x1+1)))']\n",
"[151.3842928046349, 26.449089073084824, -0.889655292034149*tan(0.102245159447193*cos(x2) - 0.877891777343642)]\n",
"Checking for brute force + \n",
"\n",
"Checking for brute force * \n",
"\n",
"Checking polyfit \n",
"\n",
"Complexity RMSE Expression\n",
"[0.0, 30.834454019627426, '0']\n",
"[2.0, 30.21233279612709, '0.500000000000000']\n",
"[26.736183635149136, 28.02326246238811, exp(-0.119926199316978*exp(exp(cos(x2))))]\n",
"[39.56224242422107, 27.05989455935905, 'log(3*x0**2 - 6*x0*x1 - x0 + 3*x1**2 - x1 + 3*x2**2)']\n",
"[46.68158917359681, 26.85871306245941, 'tan(-0.845761305278*(x1-(x1+1)))']\n",
"[151.3842928046349, 26.449089073084824, -0.889655292034149*tan(0.102245159447193*cos(x2) - 0.877891777343642)]\n",
"Checking for brute force + \n",
"\n",
"Checking for brute force * \n",
"\n",
"Checking polyfit \n",
"\n",
"Complexity RMSE Expression\n",
"[0.0, 30.834454019627426, '0']\n",
"[2.0, 30.21233279612709, '0.500000000000000']\n",
"[26.736183635149136, 28.02326246238811, exp(-0.119926199316978*exp(exp(cos(x2))))]\n",
"[39.56224242422107, 27.05989455935905, 'log(3*x0**2 - 6*x0*x1 - x0 + 3*x1**2 - x1 + 3*x2**2)']\n",
"[46.68158917359681, 26.85871306245941, 'tan(-0.845761305278*(x1-(x1+1)))']\n",
"[151.3842928046349, 26.449089073084824, -0.889655292034149*tan(0.102245159447193*cos(x2) - 0.877891777343642)]\n",
"Checking for brute force + \n",
"\n",
"Checking for brute force * \n",
"\n",
"Checking polyfit \n",
"\n",
"Complexity RMSE Expression\n",
"[0.0, 30.834454019627426, '0']\n",
"[2.0, 30.21233279612709, '0.500000000000000']\n",
"[26.736183635149136, 28.02326246238811, exp(-0.119926199316978*exp(exp(cos(x2))))]\n",
"[39.56224242422107, 27.05989455935905, 'log(3*x0**2 - 6*x0*x1 - x0 + 3*x1**2 - x1 + 3*x2**2)']\n",
"[46.68158917359681, 26.85871306245941, 'tan(-0.845761305278*(x1-(x1+1)))']\n",
"[151.3842928046349, 26.449089073084824, -0.889655292034149*tan(0.102245159447193*cos(x2) - 0.877891777343642)]\n",
"Checking for brute force + \n",
"\n",
"Checking for brute force * \n",
"\n",
"Checking polyfit \n",
"\n",
"Complexity RMSE Expression\n",
"[0.0, 30.834454019627426, '0']\n",
"[1.0, 29.661717905473818, '1']\n",
"[26.736183635149136, 28.02326246238811, exp(-0.119926199316978*exp(exp(cos(x2))))]\n",
"[27.991334457287852, 8.839887073688955e-07, '(x0**2 - 2*x0*x1 + x1**2 + x2**2)**0.5']\n",
"Checking for brute force + \n",
"\n",
"Checking for brute force * \n",
"\n",
"Checking polyfit \n",
"\n",
"Complexity RMSE Expression\n",
"[0.0, 30.834454019627426, '0']\n",
"[1.0, 29.661717905473818, '1']\n",
"[26.736183635149136, 28.02326246238811, exp(-0.119926199316978*exp(exp(cos(x2))))]\n",
"[27.991334457287852, 8.839887073688955e-07, '(x0**2 - 2*x0*x1 + x1**2 + x2**2)**0.5']\n",
"Checking for symmetry \n",
" example1.txt_train-translated_minus\n",
"Found pretrained NN \n",
"\n",
"tensor(0.0134, device='cuda:0', grad_fn=<DivBackward0>)\n",
"tensor(0.0198, device='cuda:0', grad_fn=<DivBackward0>)\n",
"tensor(0.0220, device='cuda:0', grad_fn=<DivBackward0>)\n",
"NN loss after training: tensor(0.0051, device='cuda:0', grad_fn=<DivBackward0>) \n",
"\n",
"Checking for brute force + \n",
"\n",
"Checking for brute force * \n",
"\n",
"Checking polyfit \n",
"\n",
"Complexity RMSE Expression\n",
"[16.779565475879124, 0.0, '0.000000000000+sqrt(((x1*x1)+(x0*x0)))']\n",
"Checking for brute force + \n",
"\n",
"Checking for brute force * \n",
"\n",
"Checking polyfit \n",
"\n",
"Complexity RMSE Expression\n",
"[16.779565475879124, 0.0, '0.000000000000+sqrt(((x1*x1)+(x0*x0)))']\n",
"Checking for brute force + \n",
"\n",
"Checking for brute force * \n",
"\n",
"Checking polyfit \n",
"\n",
"Complexity RMSE Expression\n",
"[4.0, 29.274727392929375, 'pi/2']\n",
"[16.779565475879124, 0.0, '0.000000000000+sqrt(((x1*x1)+(x0*x0)))']\n",
"Checking for brute force + \n",
"\n",
"Checking for brute force * \n",
"\n",
"Checking polyfit \n",
"\n",
"Complexity RMSE Expression\n",
"[4.0, 29.274727392929375, 'pi/2']\n",
"[16.779565475879124, 0.0, '0.000000000000+sqrt(((x1*x1)+(x0*x0)))']\n",
"Checking for brute force + \n",
"\n",
"Checking for brute force * \n",
"\n",
"Checking polyfit \n",
"\n",
"Complexity RMSE Expression\n",
"[4.0, 29.274727392929375, 'pi/2']\n",
"[16.779565475879124, 0.0, '0.000000000000+sqrt(((x1*x1)+(x0*x0)))']\n",
"Checking for brute force + \n",
"\n",
"Checking for brute force * \n",
"\n",
"Checking polyfit \n",
"\n",
"Complexity RMSE Expression\n",
"[4.0, 29.274727392929375, 'pi/2']\n",
"[16.779565475879124, 0.0, '0.000000000000+sqrt(((x1*x1)+(x0*x0)))']\n",
"Checking for brute force + \n",
"\n",
"Checking for brute force * \n",
"\n",
"Checking polyfit \n",
"\n",
"Complexity RMSE Expression\n",
"[4.0, 29.274727392929375, 'pi/2']\n",
"[16.779565475879124, 0.0, '0.000000000000+sqrt(((x1*x1)+(x0*x0)))']\n",
"Checking for brute force + \n",
"\n",
"Checking for brute force * \n",
"\n",
"Checking polyfit \n",
"\n",
"Complexity RMSE Expression\n",
"[4.0, 29.274727392929375, 'pi/2']\n",
"[16.779565475879124, 0.0, '0.000000000000+sqrt(((x1*x1)+(x0*x0)))']\n",
"Checking for brute force + \n",
"\n",
"Checking for brute force * \n",
"\n",
"Checking polyfit \n",
"\n",
"Complexity RMSE Expression\n",
"[1.0, 29.661717905473818, '1']\n",
"[4.0, 29.274727392929375, 'pi/2']\n",
"[13.169925001442312, 0.0, '(x0**2 + x1**2)**0.5']\n",
"Checking for brute force + \n",
"\n",
"Checking for brute force * \n",
"\n",
"Checking polyfit \n",
"\n",
"Complexity RMSE Expression\n",
"[1.0, 29.661717905473818, '1']\n",
"[4.0, 29.274727392929375, 'pi/2']\n",
"[13.169925001442312, 0.0, '(x0**2 + x1**2)**0.5']\n",
"Checking for symmetry \n",
" example1.txt_train-translated_minus-translated_minus\n",
"Found pretrained NN \n",
"\n",
"tensor(0.0258, device='cuda:0', grad_fn=<DivBackward0>)\n",
"tensor(0.0227, device='cuda:0', grad_fn=<DivBackward0>)\n",
"tensor(0.0499, device='cuda:0', grad_fn=<DivBackward0>)\n",
"NN loss after training: tensor(0.0171, device='cuda:0', grad_fn=<DivBackward0>) \n",
"\n",
"Checking for brute force + \n",
"\n",
"Checking for brute force * \n",
"\n",
"Checking polyfit \n",
"\n",
"Complexity RMSE Expression\n",
"[12.1357092861044, 29.214205611514426, '1.78000000000000']\n",
"[27.36452797660028, 28.767880375411565, '0.04*x0**2 + 1.78']\n",
"[61.704892355813804, 27.90519712519376, '1.002287261112*log((pi+(x0*x0)))']\n",
"Checking for brute force + \n",
"\n",
"Checking for brute force * \n",
"\n",
"Checking polyfit \n",
"\n",
"Complexity RMSE Expression\n",
"[12.1357092861044, 29.214205611514426, '1.78000000000000']\n",
"[27.36452797660028, 28.767880375411565, '0.04*x0**2 + 1.78']\n",
"[46.5605178945111, 27.13368508267342, 1.03779721260071]\n",
"[46.560609037047406, 27.133341532987984, 1.03786277770996]\n",
"[46.56082212240015, 27.132627863336616, 1.03801608085632]\n",
"[159.48362903293216, 26.68961200174967, tan(1.36156690120697*cos(exp(exp(x0 - 1.45150196552277*exp(x0))))**0.627788364887238)]\n",
"Checking for brute force + \n",
"\n",
"Checking for brute force * \n",
"\n",
"Checking polyfit \n",
"\n",
"Complexity RMSE Expression\n",
"[4.0, 29.274727392929375, 'pi/2']\n",
"[12.1357092861044, 29.214205611514426, '1.78000000000000']\n",
"[27.36452797660028, 28.767880375411565, '0.04*x0**2 + 1.78']\n",
"[44.619738251519436, 28.75697271359565, -0.270320892333984]\n",
"[44.620081767607, 28.75693944878952, -0.270385265350342]\n",
"[46.5605178945111, 27.13368508267342, 1.03779721260071]\n",
"[46.560609037047406, 27.133341532987984, 1.03786277770996]\n",
"[46.56082212240015, 27.132627863336616, 1.03801608085632]\n",
"[159.48362903293216, 26.68961200174967, tan(1.36156690120697*cos(exp(exp(x0 - 1.45150196552277*exp(x0))))**0.627788364887238)]\n",
"Checking for brute force + \n",
"\n",
"Checking for brute force * \n",
"\n",
"Checking polyfit \n",
"\n",
"Complexity RMSE Expression\n",
"[4.0, 29.274727392929375, 'pi/2']\n",
"[12.1357092861044, 29.214205611514426, '1.78000000000000']\n",
"[12.584962500721156, 28.563725251344263, 'log(x0**2 + 7)']\n",
"[22.53445297804259, 28.460572241792615, 'log(0.888888888888889*x0**2 + 7)']\n",
"[35.60876171948284, 28.441523309583, 'log(0.888888888888889*x0**2 + 6.89)']\n",
"[46.5605178945111, 27.13368508267342, 1.03779721260071]\n",
"[46.560609037047406, 27.133341532987984, 1.03786277770996]\n",
"[46.56082212240015, 27.132627863336616, 1.03801608085632]\n",
"[159.48362903293216, 26.68961200174967, tan(1.36156690120697*cos(exp(exp(x0 - 1.45150196552277*exp(x0))))**0.627788364887238)]\n",
"Checking for brute force + \n",
"\n",
"Checking for brute force * \n",
"\n",
"Checking polyfit \n",
"\n",
"Complexity RMSE Expression\n",
"[4.0, 29.274727392929375, 'pi/2']\n",
"[12.1357092861044, 29.214205611514426, '1.78000000000000']\n",
"[12.584962500721156, 28.563725251344263, 'log(x0**2 + 7)']\n",
"[22.53445297804259, 28.460572241792615, 'log(0.888888888888889*x0**2 + 7)']\n",
"[35.60876171948284, 28.441523309583, 'log(0.888888888888889*x0**2 + 6.89)']\n",
"[46.070972708611805, 28.114455148352643, 0.739170650917556]\n",
"[46.5605178945111, 27.13368508267342, 1.03779721260071]\n",
"[46.560609037047406, 27.133341532987984, 1.03786277770996]\n",
"[46.56082212240015, 27.132627863336616, 1.03801608085632]\n",
"[159.48362903293216, 26.68961200174967, tan(1.36156690120697*cos(exp(exp(x0 - 1.45150196552277*exp(x0))))**0.627788364887238)]\n",
"Checking for brute force + \n",
"\n",
"Checking for brute force * \n",
"\n",
"Checking polyfit \n",
"\n",
"Complexity RMSE Expression\n",
"[3.0, 29.304496932666545, '1.50000000000000']\n",
"[4.0, 28.26178092441696, 'exp(-23.140666108580+exp(pi))']\n",
"[42.736802128832295, 28.259201258812894, 'exp(0.000000392728*(sin((pi-(cos(x0)-1))))**(-1))']\n",
"[46.070972708611805, 28.114455148352643, 0.739170650917556]\n",
"[46.5605178945111, 27.13368508267342, 1.03779721260071]\n",
"[46.560609037047406, 27.133341532987984, 1.03786277770996]\n",
"[46.56082212240015, 27.132627863336616, 1.03801608085632]\n",
"[159.48362903293216, 26.68961200174967, tan(1.36156690120697*cos(exp(exp(x0 - 1.45150196552277*exp(x0))))**0.627788364887238)]\n",
"Checking for brute force + \n",
"\n",
"Checking for brute force * \n",
"\n",
"Checking polyfit \n",
"\n",
"Complexity RMSE Expression\n",
"[3.0, 29.304496932666545, '1.50000000000000']\n",
"[4.0, 28.26178092441696, 'exp(-23.140666108580+exp(pi))']\n",
"[23.550746785383243, 27.481599263478095, 'asin(-0.02*x0**2 + 0.7)']\n",
"[46.5605178945111, 27.13368508267342, 1.03779721260071]\n",
"[46.560609037047406, 27.133341532987984, 1.03786277770996]\n",
"[46.56082212240015, 27.132627863336616, 1.03801608085632]\n",
"[159.48362903293216, 26.68961200174967, tan(1.36156690120697*cos(exp(exp(x0 - 1.45150196552277*exp(x0))))**0.627788364887238)]\n",
"Checking for brute force + \n",
"\n",
"Checking for brute force * \n",
"\n",
"Checking polyfit \n",
"\n",
"Complexity RMSE Expression\n",
"[3.0, 29.304496932666545, '1.50000000000000']\n",
"[4.0, 28.26178092441696, 'exp(-23.140666108580+exp(pi))']\n",
"[23.550746785383243, 27.481599263478095, 'asin(-0.02*x0**2 + 0.7)']\n",
"[46.5605178945111, 27.13368508267342, 1.03779721260071]\n",
"[46.560609037047406, 27.133341532987984, 1.03786277770996]\n",
"[46.56082212240015, 27.132627863336616, 1.03801608085632]\n",
"[159.48362903293216, 26.68961200174967, tan(1.36156690120697*cos(exp(exp(x0 - 1.45150196552277*exp(x0))))**0.627788364887238)]\n",
"Checking for brute force + \n",
"\n",
"Checking for brute force * \n",
"\n",
"Checking polyfit \n",
"\n",
"Complexity RMSE Expression\n",
"[3.0, 29.304496932666545, '1.50000000000000']\n",
"[4.0, 28.26178092441696, 'exp(-23.140666108580+exp(pi))']\n",
"[23.550746785383243, 27.481599263478095, 'asin(-0.02*x0**2 + 0.7)']\n",
"[46.5605178945111, 27.13368508267342, 1.03779721260071]\n",
"[46.560609037047406, 27.133341532987984, 1.03786277770996]\n",
"[46.56082212240015, 27.132627863336616, 1.03801608085632]\n",
"[159.48362903293216, 26.68961200174967, tan(1.36156690120697*cos(exp(exp(x0 - 1.45150196552277*exp(x0))))**0.627788364887238)]\n",
"Checking for brute force + \n",
"\n",
"Checking for brute force * \n",
"\n",
"Checking polyfit \n",
"\n",
"Complexity RMSE Expression\n",
"[3.0, 29.304496932666545, '1.50000000000000']\n",
"[4.0, 28.26178092441696, 'exp(-23.140666108580+exp(pi))']\n",
"[23.550746785383243, 27.481599263478095, 'asin(-0.02*x0**2 + 0.7)']\n",
"[46.5605178945111, 27.13368508267342, 1.03779721260071]\n",
"[46.560609037047406, 27.133341532987984, 1.03786277770996]\n",
"[46.56082212240015, 27.132627863336616, 1.03801608085632]\n",
"[159.48362903293216, 26.68961200174967, tan(1.36156690120697*cos(exp(exp(x0 - 1.45150196552277*exp(x0))))**0.627788364887238)]\n",
"Checking for symmetry \n",
" example1.txt_train-translated_minus-translated_minus-translated_multiply\n",
"Just one variable!\n",
"example1.txt_train-translated_minus-translated_minus-translated_multiply just one variable for ADD \n",
"\n",
"example1.txt_train-translated_minus-translated_minus-translated_multiply just one variable for ADD \n",
"\n",
"example1.txt_train-translated_minus-translated_minus-translated_multiply just one variable for ADD \n",
"\n",
"example1.txt_train-translated_minus-translated_minus-translated_multiply just one variable for ADD \n",
"\n",
"example1.txt_train-translated_minus-translated_minus-translated_multiply just one variable for ADD\n",
"example1.txt_train-translated_minus-translated_minus-translated_multiply just one variable for ADD\n",
"CPU times: user 31min 53s, sys: 1min 6s, total: 33min\n",
"Wall time: 1h 11min\n"
],
"name": "stdout"
},
{
"output_type": "execute_result",
"data": {
"text/plain": [
"array([['30.834454019627426', '4.946471395876568', '593576.5675051882',\n",
" '0.0', '30.834454019627426', '0'],\n",
" ['29.661717905473818', '4.890530251072885', '586863.6301287463',\n",
" '1.0', '29.661717905473818', '1'],\n",
" ['29.304496932666545', '4.873050165836775', '584766.019900413',\n",
" '3.0', '29.304496932666545', '1.50000000000000'],\n",
" ['29.66164889019033', '4.820780475275042', '578493.657033005',\n",
" '4.0', '28.26178092441696', 'exp(-23.140666108580+exp(pi))'],\n",
" ['0.0', '-inf', '-inf', '13.169925001442312', '0.0',\n",
" '((x0-x1)**2 + (x2-x3)**2)**0.5']], dtype='<U32')"
]
},
"metadata": {
"tags": []
},
"execution_count": 9
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "CeKA5XON5w1b",
"colab_type": "text"
},
"source": [
"## Download the dataset from the main website\n",
"https://www.dropbox.com/s/7kgfr00qpokgz8w/Feynman_with_units.tar.gz?dl=0\n",
"https://www.dropbox.com/s/9i05v6yw1kbkup3/Feynman_without_units.tar.gz?dl=0\n",
"\n",
"The link below is no persistant you need to go to the main dropbox download link\n",
"and inspect the page under network tab pick the `file?_download_id=xxxxxxxx` and copy it as a \n",
"cURL command and paste down below."
]
},
{
"cell_type": "code",
"metadata": {
"id": "FPmFhwwXnSbJ",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 68
},
"outputId": "048b544d-2224-4a2d-b484-18c304cb110c"
},
"source": [
"!cd /content && curl 'https://uc4b304c377d76cb47fbccc918e2.dl.dropboxusercontent.com/cd/0/get/A860-WwfdpJE63yyVv70rwlAAmIJB8K8vnHiq-jv6a45vXzyK9a-6Yqb5zKfPHI50Znd3yw1rwwnGvoCMl2pLaOQm4N9gML1KP83d2OcgANC-g/file?_download_id=31784720549261183848105032197111167178761710119256631792641873289&_notify_domain=www.dropbox.com&dl=1' \\\n",
" -H 'authority: uc4b304c377d76cb47fbccc918e2.dl.dropboxusercontent.com' \\\n",
" -H 'upgrade-insecure-requests: 1' \\\n",
" -H 'dnt: 1' \\\n",
" -H 'user-agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36' \\\n",
" -H 'accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9' \\\n",
" -H 'sec-fetch-site: cross-site' \\\n",
" -H 'sec-fetch-mode: navigate' \\\n",
" -H 'sec-fetch-dest: iframe' \\\n",
" -H 'referer: https://www.dropbox.com/' \\\n",
" -H 'accept-language: en-US,en;q=0.9,ar;q=0.8,ru;q=0.7' \\\n",
" --compressed > with_units.gz"
],
"execution_count": 6,
"outputs": [
{
"output_type": "stream",
"text": [
" % Total % Received % Xferd Average Speed Time Time Time Current\n",
" Dload Upload Total Spent Left Speed\n",
"100 1661M 100 1661M 0 0 17.0M 0 0:01:37 0:01:37 --:--:-- 17.6M\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "_ncr6YDy5OuX",
"colab_type": "code",
"colab": {}
},
"source": [
"!cd /content && tar -xzf with_units.gz && cd /content/AI-Feynman/Code"
],
"execution_count": 7,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "pXAAM7-F7B47",
"colab_type": "text"
},
"source": [
"## Solver configurations "
]
},
{
"cell_type": "code",
"metadata": {
"id": "uTi8DWUB6mOZ",
"colab_type": "code",
"colab": {}
},
"source": [
"_CFG = {\n",
" \"dataset_path\" : \"/content/Feynman_with_units\",\n",
" \"operations_file\" : \"./14ops.txt\",\n",
" \"polynomial_degree\" : 3,\n",
" \"number_of_epochs\" : 500,\n",
" \"bruteforce_time\" : 20,\n",
" \"test_percentage\" : 0,\n",
"}"
],
"execution_count": 3,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "day8oRZd584P",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 368
},
"outputId": "4652fd09-8150-420e-c46f-b628a3b395be"
},
"source": [
"import logging\n",
"import argparse\n",
"import pathlib\n",
"import os\n",
"\n",
"\n",
"\n",
"from threading import active_count\n",
"from multiprocessing import Pool\n",
"from multiprocessing.pool import ThreadPool\n",
"from random import shuffle\n",
"from tabulate import tabulate\n",
"from pathlib import Path\n",
"from functools import partial\n",
"\n",
"\n",
"from S_run_aifeynman import run_aifeynman\n",
"\n",
"_CFG = {\n",
" \"dataset_path\" : \"../../Feynman_without_units/\",\n",
" \"operations_file\" : \"./14ops.txt\",\n",
" \"polynomial_degree\" : 3,\n",
" \"number_of_epochs\" : 500,\n",
" \"bruteforce_time\" : 60,\n",
" \"test_percentage\" : 0,\n",
"}\n",
"\n",
"class RunAll:\n",
" \"\"\"\n",
" Run the solver on the whole dataset\n",
" \"\"\"\n",
"\n",
" def __init__(self, *, cfg=_CFG):\n",
" logging.basicConfig(filename=\"output_no_units_parallel.log\", level=logging.DEBUG)\n",
" self.cfg = cfg\n",
" self.results = {}\n",
"\n",
" \n",
" def print_results(self):\n",
" table = []\n",
" for file, sol in self.results.items():\n",
" table.append(sol[-1])\n",
" print(tabulate(\n",
" table,\n",
" headers=[\n",
" \"Average error\",\n",
" \"Cumulative error\",\n",
" \"Error\",\n",
" \"Symbolic expression\",\n",
" ],\n",
" )\n",
" )\n",
" \n",
" def run_solver(self, dirs=None):\n",
" if not dirs:\n",
" path = Path(self.cfg[\"dataset_path\"])\n",
" dirs = list(path.iterdir())\n",
" shuffle(dirs) # Shuffle to sample a different file each time\n",
" \n",
" else:\n",
" path=Path(self.cfg[\"dataset_path\"])\n",
" child = dirs\n",
" \n",
" \n",
"\n",
" print(f\"Process PID: {os.getpid()} ---------------- Number of threads: {active_count()}\" )\n",
" self.results[str(child).split(\"/\")[-1]] = run_aifeynman(\n",
" pathdir=str(path.resolve()) + \"/\",\n",
" filename=str(child).split(\"/\")[-1],\n",
" BF_try_time=int(self.cfg[\"bruteforce_time\"]),\n",
" BF_ops_file_type=Path(self.cfg[\"operations_file\"]),\n",
" polyfit_deg=int(self.cfg[\"polynomial_degree\"]),\n",
" NN_epochs=int(self.cfg[\"number_of_epochs\"]),\n",
" vars_name=[],\n",
" test_percentage=int(self.cfg[\"test_percentage\"]),\n",
" )\n",
"\n",
" logging.info(self.results)\n",
" print(\"@\"*120)\n",
" print(\"@\"*120)\n",
"\n",
" self.print_results()\n",
"\n"
],
"execution_count": 4,
"outputs": [
{
"output_type": "error",
"ename": "ModuleNotFoundError",
"evalue": "ignored",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mModuleNotFoundError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-4-ca7f84307189>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 17\u001b[0;31m \u001b[0;32mfrom\u001b[0m \u001b[0mS_run_aifeynman\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mrun_aifeynman\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 18\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 19\u001b[0m _CFG = {\n",
"\u001b[0;31mModuleNotFoundError\u001b[0m: No module named 'S_run_aifeynman'",
"",
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0;32m\nNOTE: If your import is failing due to a missing package, you can\nmanually install dependencies using either !pip or !apt.\n\nTo view examples of installing some common dependencies, click the\n\"Open Examples\" button below.\n\u001b[0;31m---------------------------------------------------------------------------\u001b[0m\n"
]
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "GRh1Ld01UknX",
"colab_type": "code",
"colab": {}
},
"source": [
"def get_files(path: str, chunks=None):\n",
" dirs = list(Path(path).iterdir())\n",
" dirs = [file.name for file in dirs if not (str(file).endswith(\"test\") or str(file).endswith(\"train\"))]\n",
" if chunks:\n",
" for i in range(0, len(dirs), chunks):\n",
" yield dirs[i : i + chunks]\n",
" yield dirs\n",
"\n",
"files = list(get_files(Path(\"/content/Feynman_without_units\")))\n",
"\n",
"\n",
"with open(\"files.txt\", \"w\") as F:\n",
" for line in files[-1]:\n",
" F.write(f\"{line}\\n\")"
],
"execution_count": 5,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "XAHCWx4BUWd1",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 579
},
"outputId": "ba32a0e8-467c-4872-f2d9-2789b51e77ad"
},
"source": [
"%%time\n",
"\n",
"solver = RunAll().run_solver\n",
"path = Path(_CFG[\"dataset_path\"])\n",
"#dirs = list(path.iterdir())\n",
"#chunked_dirs = list(get_files(dirs, chunks=24))\n",
"# print(chunked_dirs[0], len(chunked_dirs[0]))\n",
"# for dd in chunked_dirs:\n",
"# pool = Pool(len(dd))\n",
"# print(dd, len(dd))\n",
"# pool.map(print, dd)\n",
"# pool.map(solver, dd)\n",
"# pool.close()\n",
"\n",
"solver(files[-1][-1])\n"
],
"execution_count": 48,
"outputs": [
{
"output_type": "stream",
"text": [
"Process PID: 119 ---------------- Number of threads: 4\n",
"Checking for brute force + \n",
"\n",
"Checking for brute force * \n",
"\n",
"Checking polyfit \n",
"\n",
"Complexity RMSE Expression\n",
"Checking for symmetry \n",
" III.7.38_train\n"
],
"name": "stdout"
},
{
"output_type": "error",
"ename": "TypeError",
"evalue": "ignored",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-48-02549138a745>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mget_ipython\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrun_cell_magic\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'time'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m''\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'\\nsolver = RunAll().run_solver\\npath = Path(_CFG[\"dataset_path\"])\\n#dirs = list(path.iterdir())\\n#chunked_dirs = list(get_files(dirs, chunks=24))\\n# print(chunked_dirs[0], len(chunked_dirs[0]))\\n# for dd in chunked_dirs:\\n# pool = Pool(len(dd))\\n# print(dd, len(dd))\\n# pool.map(print, dd)\\n# pool.map(solver, dd)\\n# pool.close()\\n\\nsolver(files[-1][-1])'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[0;32m/usr/local/lib/python3.6/dist-packages/IPython/core/interactiveshell.py\u001b[0m in \u001b[0;36mrun_cell_magic\u001b[0;34m(self, magic_name, line, cell)\u001b[0m\n\u001b[1;32m 2115\u001b[0m \u001b[0mmagic_arg_s\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mvar_expand\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mline\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mstack_depth\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2116\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbuiltin_trap\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2117\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmagic_arg_s\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcell\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2118\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2119\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m<decorator-gen-60>\u001b[0m in \u001b[0;36mtime\u001b[0;34m(self, line, cell, local_ns)\u001b[0m\n",
"\u001b[0;32m/usr/local/lib/python3.6/dist-packages/IPython/core/magic.py\u001b[0m in \u001b[0;36m<lambda>\u001b[0;34m(f, *a, **k)\u001b[0m\n\u001b[1;32m 186\u001b[0m \u001b[0;31m# but it's overkill for just that one bit of state.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 187\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mmagic_deco\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0marg\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 188\u001b[0;31m \u001b[0mcall\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mlambda\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0ma\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mk\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0ma\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mk\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 189\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 190\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mcallable\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0marg\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/usr/local/lib/python3.6/dist-packages/IPython/core/magics/execution.py\u001b[0m in \u001b[0;36mtime\u001b[0;34m(self, line, cell, local_ns)\u001b[0m\n\u001b[1;32m 1191\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1192\u001b[0m \u001b[0mst\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mclock2\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1193\u001b[0;31m \u001b[0mexec\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcode\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mglob\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlocal_ns\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1194\u001b[0m \u001b[0mend\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mclock2\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1195\u001b[0m \u001b[0mout\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m<timed exec>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n",
"\u001b[0;32m<ipython-input-46-ca7f84307189>\u001b[0m in \u001b[0;36mrun_solver\u001b[0;34m(self, dirs)\u001b[0m\n\u001b[1;32m 73\u001b[0m \u001b[0mNN_epochs\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcfg\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"number_of_epochs\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 74\u001b[0m \u001b[0mvars_name\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 75\u001b[0;31m \u001b[0mtest_percentage\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcfg\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"test_percentage\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 76\u001b[0m )\n\u001b[1;32m 77\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/content/AI-Feynman/Code/S_run_aifeynman.py\u001b[0m in \u001b[0;36mrun_aifeynman\u001b[0;34m(pathdir, filename, BF_try_time, BF_ops_file_type, polyfit_deg, NN_epochs, vars_name, test_percentage)\u001b[0m\n\u001b[1;32m 163\u001b[0m \u001b[0mPA\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mParetoSet\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 164\u001b[0m \u001b[0;31m# Run the code on the train data\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 165\u001b[0;31m \u001b[0mPA\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mrun_AI_all\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mpathdir\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mfilename\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0;34m\"_train\"\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mBF_try_time\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mBF_ops_file_type\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mpolyfit_deg\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mNN_epochs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mPA\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mPA\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 166\u001b[0m \u001b[0mPA_list\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mPA\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_pareto_points\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 167\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/content/AI-Feynman/Code/S_run_aifeynman.py\u001b[0m in \u001b[0;36mrun_AI_all\u001b[0;34m(pathdir, filename, BF_try_time, BF_ops_file_type, polyfit_deg, NN_epochs, PA)\u001b[0m\n\u001b[1;32m 53\u001b[0m \u001b[0;31m# check if the NN is trained. If it is not, train it on the data.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 54\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Checking for symmetry \\n\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfilename\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 55\u001b[0;31m \u001b[0;32mif\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdata\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m<\u001b[0m\u001b[0;36m3\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 56\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Just one variable!\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 57\u001b[0m \u001b[0;32mpass\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mTypeError\u001b[0m: object of type 'numpy.float64' has no len()"
]
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "RGCB0c4Y60SN",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 1000
},
"outputId": "99cd020a-2852-4ab6-9d2e-d31bd714fe5f"
},
"source": [
"%%time\n",
"RunAll(cfg=_CFG)\n",
" "
],
"execution_count": null,
"outputs": [
{
"output_type": "stream",
"text": [
"/content/Feynman_with_units/I.34.8\n",
"Checking for brute force + \n",
"\n",
"Checking for brute force * \n",
"\n",
"Checking polyfit \n",
"\n",
"Complexity RMSE Expression\n",
"[17.509775004326936, 0.0, '1.000000000000*(x2*(x1*(x0/x3)))']\n",
"Checking for brute force + \n",
"\n",
"Checking for brute force * \n",
"\n",
"Checking polyfit \n",
"\n",
"Complexity RMSE Expression\n",
"[17.509775004326936, 0.0, '1.000000000000*(x2*(x1*(x0/x3)))']\n",
"Checking for brute force + \n",
"\n",
"Checking for brute force * \n",
"\n",
"Checking polyfit \n",
"\n",
"Complexity RMSE Expression\n",
"[16.194602975157967, nan, 'acos(-x0 - x1 - x2 + 2)']\n",
"[17.509775004326936, 0.0, '1.000000000000*(x2*(x1*(x0/x3)))']\n",
"Checking for brute force + \n",
"\n",
"Checking for brute force * \n",
"\n",
"Checking polyfit \n",
"\n",
"Complexity RMSE Expression\n",
"[16.194602975157967, nan, 'acos(-x0 - x1 - x2 + 2)']\n",
"[17.509775004326936, 0.0, '1.000000000000*(x2*(x1*(x0/x3)))']\n",
"Checking for brute force + \n",
"\n",
"Checking for brute force * \n",
"\n",
"Checking polyfit \n",
"\n",
"Complexity RMSE Expression\n",
"[16.194602975157967, nan, 'acos(-x0 - x1 - x2 + 2)']\n",
"[17.509775004326936, 0.0, '1.000000000000*(x2*(x1*(x0/x3)))']\n",
"Checking for brute force + \n",
"\n",
"Checking for brute force * \n",
"\n",
"Checking polyfit \n",
"\n",
"Complexity RMSE Expression\n",
"[16.194602975157967, nan, 'acos(-x0 - x1 - x2 + 2)']\n",
"[17.509775004326936, 0.0, '1.000000000000*(x2*(x1*(x0/x3)))']\n",
"Checking for brute force + \n",
"\n",
"Checking for brute force * \n",
"\n",
"Checking polyfit \n",
"\n",
"Complexity RMSE Expression\n",
"[0.0, 29.021163959047044, 'asin(666.000000000000*(x2-((x2+1)-1)))']\n",
"[16.194602975157967, nan, 'acos(-x0 - x1 - x2 + 2)']\n",
"[17.509775004326936, 0.0, '1.000000000000*(x2*(x1*(x0/x3)))']\n",
"Checking for brute force + \n",
"\n",
"Checking for brute force * \n",
"\n",
"Checking polyfit \n",
"\n",
"Complexity RMSE Expression\n",
"[0.0, 29.021163959047044, 'asin(666.000000000000*(x2-((x2+1)-1)))']\n",
"[16.194602975157967, nan, 'acos(-x0 - x1 - x2 + 2)']\n",
"[17.509775004326936, 0.0, '1.000000000000*(x2*(x1*(x0/x3)))']\n",
"Checking for brute force + \n",
"\n",
"Checking for brute force * \n",
"\n",
"Checking polyfit \n",
"\n",
"Complexity RMSE Expression\n",
"[0.0, 29.021163959047044, 'asin(666.000000000000*(x2-((x2+1)-1)))']\n",
"[16.194602975157967, nan, 'acos(-x0 - x1 - x2 + 2)']\n",
"[17.509775004326936, 0.0, '1.000000000000*(x2*(x1*(x0/x3)))']\n",
"Checking for brute force + \n",
"\n",
"Checking for brute force * \n",
"\n",
"Checking polyfit \n",
"\n",
"Complexity RMSE Expression\n",
"[0.0, 29.021163959047044, 'asin(666.000000000000*(x2-((x2+1)-1)))']\n",
"[16.194602975157967, nan, 'acos(-x0 - x1 - x2 + 2)']\n",
"[17.509775004326936, 0.0, '1.000000000000*(x2*(x1*(x0/x3)))']\n",
"Checking for symmetry \n",
" I.34.8_train\n",
"Training a NN on the data... \n",
"\n",
"tensor(0.0918, device='cuda:0', grad_fn=<DivBackward0>)\n",
"tensor(0.0656, device='cuda:0', grad_fn=<DivBackward0>)\n",
"tensor(0.0516, device='cuda:0', grad_fn=<DivBackward0>)\n",
"tensor(0.0221, device='cuda:0', grad_fn=<DivBackward0>)\n",
"NN loss: tensor(0.0038, device='cuda:0', grad_fn=<DivBackward0>) \n",
"\n",
"Checking for brute force + \n",
"\n",
"Checking for brute force * \n",
"\n",
"Checking polyfit \n",
"\n",
"Complexity RMSE Expression\n",
"[12.60964047443681, 9.234604872781642e-07, '0.000000000000+(x1*(x0/x2))']\n",
"Checking for brute force + \n",
"\n",
"Checking for brute force * \n",
"\n",
"Checking polyfit \n",
"\n",
"Complexity RMSE Expression\n",
"[12.60964047443681, 9.234604872781642e-07, '0.000000000000+(x1*(x0/x2))']\n",
"Checking for brute force + \n",
"\n",
"Checking for brute force * \n",
"\n",
"Checking polyfit \n",
"\n",
"Complexity RMSE Expression\n",
"[4.0, 32.33086112527217, 'pi/2']\n",
"[12.60964047443681, 9.234604872781642e-07, '0.000000000000+(x1*(x0/x2))']\n",
"Checking for brute force + \n",
"\n",
"Checking for brute force * \n",
"\n",
"Checking polyfit \n",
"\n",
"Complexity RMSE Expression\n",
"[4.0, 32.33086112527217, 'pi/2']\n",
"[12.60964047443681, 9.234604872781642e-07, '0.000000000000+(x1*(x0/x2))']\n",
"Checking for brute force + \n",
"\n",
"Checking for brute force * \n",
"\n",
"Checking polyfit \n",
"\n",
"Complexity RMSE Expression\n",
"[4.0, 32.33086112527217, 'pi/2']\n",
"[12.60964047443681, 9.234604872781642e-07, '0.000000000000+(x1*(x0/x2))']\n",
"Checking for brute force + \n",
"\n",
"Checking for brute force * \n",
"\n",
"Checking polyfit \n",
"\n",
"Complexity RMSE Expression\n",
"[4.0, 32.33086112527217, 'pi/2']\n",
"[12.60964047443681, 9.234604872781642e-07, '0.000000000000+(x1*(x0/x2))']\n",
"Checking for brute force + \n",
"\n",
"Checking for brute force * \n",
"\n",
"Checking polyfit \n",
"\n",
"Complexity RMSE Expression\n",
"[4.0, 32.33086112527217, 'pi/2']\n",
"[12.60964047443681, 9.234604872781642e-07, '0.000000000000+(x1*(x0/x2))']\n",
"Checking for brute force + \n",
"\n",
"Checking for brute force * \n",
"\n",
"Checking polyfit \n",
"\n",
"Complexity RMSE Expression\n",
"[4.0, 32.33086112527217, 'pi/2']\n",
"[12.60964047443681, 9.234604872781642e-07, '0.000000000000+(x1*(x0/x2))']\n",
"Checking for brute force + \n",
"\n",
"Checking for brute force * \n",
"\n",
"Checking polyfit \n",
"\n",
"Complexity RMSE Expression\n",
"[1.0, 32.555376461840865, '1']\n",
"[4.0, 32.33086112527217, 'pi/2']\n",
"[12.60964047443681, 9.234604872781642e-07, '0.000000000000+(x1*(x0/x2))']\n",
"Checking for brute force + \n",
"\n",
"Checking for brute force * \n",
"\n",
"Checking polyfit \n",
"\n",
"Complexity RMSE Expression\n",
"[1.0, 32.555376461840865, '1']\n",
"[4.0, 32.33086112527217, 'pi/2']\n",
"[12.60964047443681, 9.234604872781642e-07, '0.000000000000+(x1*(x0/x2))']\n",
"Checking for symmetry \n",
" I.34.8_train-translated_multiply\n",
"Found pretrained NN \n",
"\n",
"tensor(0.0416, device='cuda:0', grad_fn=<DivBackward0>)\n",
"tensor(0.0176, device='cuda:0', grad_fn=<DivBackward0>)\n",
"tensor(0.0303, device='cuda:0', grad_fn=<DivBackward0>)\n",
"NN loss after training: tensor(0.0040, device='cuda:0', grad_fn=<DivBackward0>) \n",
"\n",
"Checking for brute force + \n",
"\n",
"Checking for brute force * \n",
"\n",
"Checking polyfit \n",
"\n",
"Complexity RMSE Expression\n",
"[5.754887502163468, 9.234604872781642e-07, '0.000000000000+(x0/x1)']\n",
"Checking for brute force + \n",
"\n",
"Checking for brute force * \n",
"\n",
"Checking polyfit \n",
"\n",
"Complexity RMSE Expression\n",
"[5.754887502163468, 9.234604872781642e-07, '0.000000000000+(x0/x1)']\n",
"Checking for brute force + \n",
"\n",
"Checking for brute force * \n",
"\n",
"Checking polyfit \n",
"\n",
"Complexity RMSE Expression\n",
"[4.0, 32.33086112527217, 'pi/2']\n",
"[5.754887502163468, 9.234604872781642e-07, '0.000000000000+(x0/x1)']\n",
"Checking for brute force + \n",
"\n",
"Checking for brute force * \n",
"\n",
"Checking polyfit \n",
"\n",
"Complexity RMSE Expression\n",
"[4.0, 32.33086112527217, 'pi/2']\n",
"[5.754887502163468, 9.234604872781642e-07, '0.000000000000+(x0/x1)']\n",
"Checking for brute force + \n",
"\n",
"Checking for brute force * \n",
"\n",
"Checking polyfit \n",
"\n",
"Complexity RMSE Expression\n",
"[4.0, 32.33086112527217, 'pi/2']\n",
"[5.754887502163468, 9.234604872781642e-07, '0.000000000000+(x0/x1)']\n",
"Checking for brute force + \n",
"\n",
"Checking for brute force * \n",
"\n",
"Checking polyfit \n",
"\n",
"Complexity RMSE Expression\n",
"[4.0, 32.33086112527217, 'pi/2']\n",
"[5.754887502163468, 9.234604872781642e-07, '0.000000000000+(x0/x1)']\n",
"Checking for brute force + \n",
"\n",
"Checking for brute force * \n",
"\n",
"Checking polyfit \n",
"\n",
"Complexity RMSE Expression\n",
"[0.0, 32.919359912499495, '0']\n",
"[4.0, 32.33086112527217, 'pi/2']\n",
"[5.754887502163468, 9.234604872781642e-07, '0.000000000000+(x0/x1)']\n",
"Checking for brute force + \n",
"\n",
"Checking for brute force * \n",
"\n",
"Checking polyfit \n",
"\n",
"Complexity RMSE Expression\n",
"[0.0, 32.919359912499495, '0']\n",
"[4.0, 32.33086112527217, 'pi/2']\n",
"[5.754887502163468, 9.234604872781642e-07, '0.000000000000+(x0/x1)']\n",
"Checking for brute force + \n",
"\n",
"Checking for brute force * \n",
"\n",
"Checking polyfit \n",
"\n",
"Complexity RMSE Expression\n",
"[0.0, 32.919359912499495, '0']\n",
"[1.0, 32.555376461840865, '1']\n",
"[4.0, 32.33086112527217, 'pi/2']\n",
"[5.754887502163468, 9.234604872781642e-07, '0.000000000000+(x0/x1)']\n",
"Checking for brute force + \n",
"\n",
"Checking for brute force * \n",
"\n",
"Checking polyfit \n",
"\n",
"Complexity RMSE Expression\n",
"[0.0, 32.919359912499495, '0']\n",
"[1.0, 32.555376461840865, '1']\n",
"[4.0, 32.33086112527217, 'pi/2']\n",
"[5.754887502163468, 9.234604872781642e-07, '0.000000000000+(x0/x1)']\n",
"Checking for symmetry \n",
" I.34.8_train-translated_multiply-translated_multiply\n",
"Found pretrained NN \n",
"\n",
"tensor(0.0311, device='cuda:0', grad_fn=<DivBackward0>)\n",
"tensor(0.0333, device='cuda:0', grad_fn=<DivBackward0>)\n",
"tensor(0.0225, device='cuda:0', grad_fn=<DivBackward0>)\n",
"NN loss after training: tensor(0.0062, device='cuda:0', grad_fn=<DivBackward0>) \n",
"\n",
"Checking for brute force + \n",
"\n",
"Checking for brute force * \n",
"\n",
"Checking polyfit \n",
"\n",
"Complexity RMSE Expression\n",
"[0.0, 9.234604872781642e-07, '0.000000000000+x0']\n",
"Checking for brute force + \n",
"\n",
"Checking for brute force * \n",
"\n",
"Checking polyfit \n",
"\n",
"Complexity RMSE Expression\n",
"[0.0, 9.234604872781642e-07, '0.000000000000+x0']\n",
"Checking for brute force + \n",
"\n",
"Checking for brute force * \n",
"\n",
"Checking polyfit \n",
"\n",
"Complexity RMSE Expression\n",
"[0.0, 9.234604872781642e-07, '0.000000000000+x0']\n",
"Checking for brute force + \n",
"\n",
"Checking for brute force * \n",
"\n",
"Checking polyfit \n",
"\n",
"Complexity RMSE Expression\n",
"[0.0, 9.234604872781642e-07, '0.000000000000+x0']\n",
"Checking for brute force + \n",
"\n",
"Checking for brute force * \n",
"\n",
"Checking polyfit \n",
"\n",
"Complexity RMSE Expression\n",
"[0.0, 9.234604872781642e-07, '0.000000000000+x0']\n",
"Checking for brute force + \n",
"\n",
"Checking for brute force * \n",
"\n",
"Checking polyfit \n",
"\n",
"Complexity RMSE Expression\n",
"[0.0, 9.234604872781642e-07, '0.000000000000+x0']\n",
"Checking for brute force + \n",
"\n",
"Checking for brute force * \n",
"\n",
"Checking polyfit \n",
"\n",
"Complexity RMSE Expression\n",
"[0.0, 9.234604872781642e-07, '0.000000000000+x0']\n",
"Checking for brute force + \n",
"\n",
"Checking for brute force * \n",
"\n",
"Checking polyfit \n",
"\n",
"Complexity RMSE Expression\n",
"[0.0, 9.234604872781642e-07, '0.000000000000+x0']\n",
"Checking for brute force + \n",
"\n",
"Checking for brute force * \n",
"\n",
"Checking polyfit \n",
"\n",
"Complexity RMSE Expression\n",
"[0.0, 9.234604872781642e-07, '0.000000000000+x0']\n",
"Checking for brute force + \n",
"\n",
"Checking for brute force * \n",
"\n",
"Checking polyfit \n",
"\n",
"Complexity RMSE Expression\n",
"[0.0, 9.234604872781642e-07, '0.000000000000+x0']\n",
"Checking for symmetry \n",
" I.34.8_train-translated_multiply-translated_multiply-translated_divide\n",
"Just one variable!\n",
"I.34.8_train-translated_multiply-translated_multiply-translated_divide just one variable for ADD \n",
"\n",
"I.34.8_train-translated_multiply-translated_multiply-translated_divide just one variable for ADD \n",
"\n",
"I.34.8_train-translated_multiply-translated_multiply-translated_divide just one variable for ADD \n",
"\n",
"I.34.8_train-translated_multiply-translated_multiply-translated_divide just one variable for ADD \n",
"\n",
"I.34.8_train-translated_multiply-translated_multiply-translated_divide just one variable for ADD\n",
"I.34.8_train-translated_multiply-translated_multiply-translated_divide just one variable for ADD\n",
"########################################################################################################################\n",
"{'I.34.8': array([['0.0', '-20.046446431241375', '-20046446.431241374', '0.0',\n",
" '9.234604872781642e-07', '0.000000000000+((x0*(x1*x2))/x3)'],\n",
" ['nan', 'nan', 'nan', '16.194602975157967', 'nan',\n",
" 'acos(-x0 - x1 - x2 + 2)'],\n",
" ['0.0', '-inf', '-inf', '16.509775004326936', '0.0',\n",
" 'x0*x1*x2/x3']], dtype='<U32')}\n",
" Average error Cumulative error Error Symbolic expression\n",
"-- ---- --------------- ------------------ ------- ---------------------\n",
" 0 -inf -inf 16.5098 0 x0*x1*x2/x3\n",
"CPU times: user 3h 57min 29s, sys: 23min 49s, total: 4h 21min 19s\n",
"Wall time: 4h 35min 21s\n"
],
"name": "stdout"
},
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<__main__.RunAll at 0x7f1bc8accb38>"
]
},
"metadata": {
"tags": []
},
"execution_count": 26
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "DlQ6ydH8vVtU",
"colab_type": "text"
},
"source": [
"## Problem: **I.34.8**\n",
"Took 4 hours and 35 minute to come up with the correct result:\n",
"$$\n",
"\\omega = \\dfrac{x_0 x_1 x_2}{x_3}\n",
"$$\n",
"And the correct answer is:\n",
"$$\n",
"\\omega = \\dfrac{qvB}{p}\n",
"$$\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "MXvGX4p-JMWt",
"colab_type": "text"
},
"source": [
"## Problem: **III.15.14**\n",
"Took more than 5 hours to come up with this result:\n",
"$$\n",
"m = -\\tan{(\\dfrac{1}{ \\times x_0^{-0.93}\\times x_1^{-1.03}\\times x_2^{-0.469}} - 1.01)}\n",
"$$\n",
"While the actual answer is:\n",
"$$\n",
"m = \\dfrac{h^2}{2Ed^2}\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "wjxEmHRMTV3i",
"colab_type": "text"
},
"source": [
"Output sample"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "w5mJi_tVId7V",
"colab_type": "text"
},
"source": [
" Complexity RMSE Expression\n",
"[24.236446955124386, 32.19379398225521, 'x0*x1 + x0*x2 + x1*x2 - x1 - x2**2 + 1']\n",
"[48.33584961180911, 31.9862227670943, '0.001136817047*exp((x1+x0))']\n",
"[48.444908703757726, 31.457560514093935, '-0.957879029931+x1']\n",
"[48.6933025167606, 31.016339707140748, '0.168570230758*exp(x1)']\n",
"[51.261202734823684, 29.67151999967164, '0.999530090276*(x1*x0)']\n",
"[62.98013903114244, 29.63651158757859, '0.055232500314+((x0+log(x2))*(x1-1))']\n",
"[106.30525426555863, 29.531475422563073, x0*(x1 + log(0.408610771597111*x2)) + 0.525839149951935]\n",
"[108.02150104349855, 29.461005247973745, (x0 + log(x2))*(x1 - 0.719529628753662) - 0.0555874854326248]\n",
"[153.74798012440982, 29.440090352742136, '0.1*x0*x1*x2 + x0*x1 - 0.285714285714286*x0*x2**2 + 0.142857142857143*x0*x2*x3 + 0.833333333333333*x0*x2 - 0.428571428571429*x0*x3 - 0.4*x0 - 0.125*x1**2*x2 + 0.25*x1**2 - 0.3*x1*x2**2 + 0.25*x1*x2*x3 + x1*x2 - 0.5*x1*x3 - 0.666666666666667*x1 + 0.333333333333333*x2**3 - x2**2 - 0.111111111111111*x2*x3**2 + 0.285714285714286*x2*x3 - 0.428571428571429*x2 + 0.2*x3**2 - 0.2*x3 + 0.784697875310949']\n",
"[162.58246431046206, 29.325725950623077, x1*(x0 + 0.556240618228912)*sin(x2**0.482438892126083) - 1.94434630870819]\n",
"[200.02103605333068, 28.648861022890436, '0.1*x0*x1*x2 + 0.850311055415562*x0*x1 - 0.285714285714286*x0*x2**2 + 0.142857142857143*x0*x2*x3 + 0.833333333333333*x0*x2 - 0.428571428571429*x0*x3 - 0.4*x0 - 0.125*x1**2*x2 + 0.25*x1**2 - 0.3*x1*x2**2 + 0.25*x1*x2*x3 + x1*x2 - 0.5*x1*x3 - 0.666666666666667*x1 + 0.333333333333333*x2**3 - x2**2 - 0.111111111111111*x2*x3**2 + 0.285714285714286*x2*x3 - 0.428571428571429*x2 + 0.2*x3**2 - 0.2*x3 + 0.784697875310949']\n",
"[240.46710529464815, 28.54127970345586, '0.1*x0*x1*x2 + 0.850311055415562*x0*x1 - 0.285714285714286*x0*x2**2 + 0.142857142857143*x0*x2*x3 + 0.833333333333333*x0*x2 - 0.419409322578989*x0*x3 - 0.4*x0 - 0.125*x1**2*x2 + 0.25*x1**2 - 0.3*x1*x2**2 + 0.25*x1*x2*x3 + x1*x2 - 0.5*x1*x3 - 0.666666666666667*x1 + 0.333333333333333*x2**3 - x2**2 - 0.111111111111111*x2*x3**2 + 0.285714285714286*x2*x3 - 0.428571428571429*x2 + 0.2*x3**2 - 0.2*x3 + 0.784697875310949']\n",
"[451.0046845634026, 28.311589315571727, '0.1*x0*x1*x2 + 0.850311055415562*x0*x1 - 0.285714285714286*x0*x2**2 + 0.142857142857143*x0*x2*x3 + 0.827047248703045*x0*x2 - 0.419409322578989*x0*x3 - 0.4*x0 - 0.125*x1**2*x2 + 0.25*x1**2 - 0.3*x1*x2**2 + 0.25*x1*x2*x3 + x1*x2 - 0.453915765321264*x1*x3 - 0.666666666666667*x1 + 0.333333333333333*x2**3 - 0.896533056720137*x2**2 - 0.111111111111111*x2*x3**2 + 0.275863468660905*x2*x3 - 0.435642558638502*x2 + 0.2*x3**2 - 0.2*x3 + 0.784697875310949']\n",
"[765.2021193259455, 27.68961332841078, '0.0954709145222299*x0*x1*x2 + 0.850311055415562*x0*x1 - 0.281598845270346*x0*x2**2 + 0.142857142857143*x0*x2*x3 + 0.827047248703045*x0*x2 - 0.419409322578989*x0*x3 - 0.393857016024628*x0 - 0.125*x1**2*x2 + 0.25*x1**2 - 0.295615544580811*x1*x2**2 + 0.238779807136057*x1*x2*x3 + 1.08861622104865*x1*x2 - 0.453915765321264*x1*x3 - 0.650985290052454*x1 + 0.333333333333333*x2**3 - 0.0841340395633869*x2**2*x3 - 0.896533056720137*x2**2 - 0.111111111111111*x2*x3**2 + 0.275863468660905*x2*x3 - 0.435642558638502*x2 + 0.2*x3**2 - 0.2*x3 + 0.784697875310949']\n",
"[804.4179933090178, 27.670902454575725, '0.0954709145222299*x0*x1*x2 + 0.850311055415562*x0*x1 - 0.281598845270346*x0*x2**2 + 0.142857142857143*x0*x2*x3 + 0.827047248703045*x0*x2 - 0.419409322578989*x0*x3 - 0.393857016024628*x0 - 0.125*x1**2*x2 + 0.25*x1**2 - 0.295615544580811*x1*x2**2 + 0.238779807136057*x1*x2*x3 + 1.08861622104865*x1*x2 - 0.453915765321264*x1*x3 - 0.650985290052454*x1 + 0.333333333333333*x2**3 - 0.0841340395633869*x2**2*x3 - 0.896533056720137*x2**2 - 0.114928272861219*x2*x3**2 + 0.275863468660905*x2*x3 - 0.435642558638502*x2 + 0.2*x3**2 - 0.2*x3 + 0.784697875310949']\n",
"[1049.3949821424571, 27.65482709345228, '0.0954709145222299*x0*x1*x2 + 0.850311055415562*x0*x1 - 0.281598845270346*x0*x2**2 + 0.143093568988091*x0*x2*x3 + 0.827047248703045*x0*x2 - 0.419409322578989*x0*x3 - 0.393857016024628*x0 - 0.124525299070793*x1**2*x2 + 0.255889644781202*x1**2 - 0.295615544580811*x1*x2**2 + 0.238779807136057*x1*x2*x3 + 1.08861622104865*x1*x2 - 0.453915765321264*x1*x3 - 0.650985290052454*x1 + 0.332150095352896*x2**3 - 0.0841340395633869*x2**2*x3 - 0.896533056720137*x2**2 - 0.114928272861219*x2*x3**2 + 0.275863468660905*x2*x3 - 0.435642558638502*x2 + 0.19934446687829*x3**2 - 0.198171936948463*x3 + 0.784697875310949']\n",
"[1287.6255549331968, 27.57826998133378, '0.0324957167678879*x0*x1**2 + 0.0954709145222299*x0*x1*x2 - 0.0518367881947689*x0*x1*x3 + 0.850311055415562*x0*x1 - 0.281598845270346*x0*x2**2 + 0.142857142857143*x0*x2*x3 + 0.827047248703045*x0*x2 + 0.0195647972984031*x0*x3**2 - 0.419409322578989*x0*x3 - 0.393857016024628*x0 - 0.0325007929091572*x1**3 - 0.124525299070793*x1**2*x2 + 0.0649419539246933*x1**2*x3 + 0.255889644781202*x1**2 - 0.295615544580811*x1*x2**2 + 0.238779807136057*x1*x2*x3 + 1.08861622104865*x1*x2 - 0.0388670663126931*x1*x3**2 - 0.453915765321264*x1*x3 - 0.650985290052454*x1 + 0.332150095352896*x2**3 - 0.0841340395633869*x2**2*x3 - 0.896533056720137*x2**2 - 0.114928272861219*x2*x3**2 + 0.275863468660905*x2*x3 - 0.435642558638502*x2 + 0.00642744864450299*x3**3 + 0.19934446687829*x3**2 - 0.198171936948463*x3 + 0.784697875310949']\n",
"[1327.5202240795804, 27.57798240828162, '0.0324957167678879*x0*x1**2 + 0.0954709145222299*x0*x1*x2 - 0.0518367881947689*x0*x1*x3 + 0.850311055415562*x0*x1 - 0.281598845270346*x0*x2**2 + 0.143093568988091*x0*x2*x3 + 0.827047248703045*x0*x2 + 0.0195647972984031*x0*x3**2 - 0.419409322578989*x0*x3 - 0.393857016024628*x0 - 0.0325007929091572*x1**3 - 0.124525299070793*x1**2*x2 + 0.0649419539246933*x1**2*x3 + 0.255889644781202*x1**2 - 0.295615544580811*x1*x2**2 + 0.238779807136057*x1*x2*x3 + 1.08861622104865*x1*x2 - 0.0388670663126931*x1*x3**2 - 0.453915765321264*x1*x3 - 0.650985290052454*x1 + 0.332150095352896*x2**3 - 0.0841340395633869*x2**2*x3 - 0.896533056720137*x2**2 - 0.114928272861219*x2*x3**2 + 0.275863468660905*x2*x3 - 0.435642558638502*x2 + 0.00642744864450299*x3**3 + 0.19934446687829*x3**2 - 0.198171936948463*x3 + 0.784697875310949']\n",
"Checking for brute force + "
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "lwjXaAnL7q_0",
"colab_type": "text"
},
"source": [
"# Run on all files of the dataset"
]
},
{
"cell_type": "code",
"metadata": {
"id": "SNg_GwTF7rpB",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 955
},
"outputId": "b5eac008-4f8f-4980-dd8d-7d1ac386bb32"
},
"source": [
"%%time\n",
"!parallel --bar --ungroup --joblog ../../log.txt -t -j2 -a files.txt python generate_claimed_results.py --file"
],
"execution_count": 9,
"outputs": [
{
"output_type": "stream",
"text": [
"Academic tradition requires you to cite works you base your article on.\n",
"When using programs that use GNU Parallel to process data for publication\n",
"please cite:\n",
"\n",
" O. Tange (2011): GNU Parallel - The Command-Line Power Tool,\n",
" ;login: The USENIX Magazine, February 2011:42-47.\n",
"\n",
"This helps funding further development; AND IT WON'T COST YOU A CENT.\n",
"If you pay 10000 EUR you should feel free to use GNU Parallel without citing.\n",
"\n",
"To silence this citation notice: run 'parallel --citation'.\n",
"\n",
"python generate_claimed_results.py --file II.13.23\n",
"python generate_claimed_results.py --file II.27.16\n",
"\u001b[7m\u001b[0m0% 0:100=0s II.27.16 \u001b[0mProcess PID: 8847 ---------------- Number of threads: 1\n",
"Process PID: 8848 ---------------- Number of threads: 1\n",
"\u001b[7m\u001b[0m0% 0:100=0s II.27.16 \u001b[0mChecking for brute force + \n",
"\n",
"Trying to solve mysteries with brute force...\n",
"Trying to solve /content/Feynman_without_units/II.27.16_train...\n",
"/bin/cp -p /content/Feynman_without_units/II.27.16_train mystery.dat\n",
"Number of variables..... 0\n",
"Functions used.......... +*-/><~\\RPSCLE\n",
" Arity 0 : P\n",
" Arity 1 : ><~\\RSCLE\n",
" Arity 2 : +*-/\n",
"Loading mystery data....\n",
"\u001b[7m\u001b[0m0% 0:100=0s II.27.16 \u001b[0m 1000000 rows read from file mystery.dat \n",
"Number of examples...... 1000000\n",
" Mystery data has largest magnitude 1.0000000000000000 at j= 1\n",
" Searching for best fit...\n",
" 0.000000000000 -2.141592741013 P 1 0.0000 0.0000 0.0000 0.0000\n",
" All done: results in results.dat \n",
"Checking for brute force * \n",
"\n",
"Trying to solve mysteries with brute force...\n",
"Trying to solve /content/Feynman_without_units/II.27.16_train...\n",
"/bin/cp -p /content/Feynman_without_units/II.27.16_train mystery.dat\n",
"Number of variables..... 0\n",
"Functions used.......... +*-/><~\\RPSCLE\n",
" Arity 0 : P\n",
" Arity 1 : ><~\\RSCLE\n",
" Arity 2 : +*-/\n",
"Loading mystery data....\n",
"\u001b[7m\u001b[0m0% 0:100=0s II.27.16 \u001b[0m 1000000 rows read from file mystery.dat \n",
"Number of examples...... 1000000\n",
" Mystery data has largest magnitude 1.0000000000000000 at j= 1\n",
" Searching for best fit...\n",
" 0.000000000000 0.318309877326 P 1 0.0000 0.0000 0.0000 0.0000\n",
" All done: results in results.dat \n",
"Checking polyfit \n",
"\n",
"\u001b[7m\u001b[0m0% 0:100=0s II.27.16 \u001b[0mComplexity RMSE Expression\n",
"\u001b[7m\u001b[0m0% 0:100=0s II.27.16 \u001b[0m"
],
"name": "stdout"
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "h_qpqwJg8bjw",
"colab_type": "text"
},
"source": [
"# Results"
]
},
{
"cell_type": "code",
"metadata": {
"id": "P5il9KC_8dB4",
"colab_type": "code",
"colab": {}
},
"source": [
"import pprint\n",
"import re\n",
"results = None\n",
"with open(\"/content/AI-Feynman/output_no_units_parallel.log\") as F:\n",
" results = F.readlines() "
],
"execution_count": 268,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "5DLXAa-E8uyD",
"colab_type": "code",
"colab": {}
},
"source": [
"new = str(results).replace('\"', \"\").strip().replace(\"\\n\", \"\").replace(\"'\", \"\")\\\n",
".replace(\" \", \"\").replace(\"\\\\n\", \" \")\\\n",
".replace(\"','\", \"\").replace(\"asin\", \"sin\").split(\"INFO:root:\")\n",
"\n",
"new = [re.sub(r\"(dtype=\\WU\\d*|dtype=object)\", \"\", item) for item in new]"
],
"execution_count": 301,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "AypjKO0n9CMy",
"colab_type": "code",
"colab": {}
},
"source": [
"new = [re.sub(r\"(I+.\\d*.\\d*:array)\", \"\", item.replace(\" ,\", \"\").replace(\"{\", \"\")\\\n",
" .replace(\"}\", \"\"))\\\n",
" .split(\",\") for item in new if len(item) > 10]\n",
" #re.sub(r\"(I+.\\d*.\\d*:array)\", \"\", item.replace(\" ,\", \"\").replace(\"{\", \"\")\\\n",
" # .replace(\"}\", \"\").replace(\"(\", \"\").replace(\")\", \"\"))\\\n",
" # .split(\",\")"
],
"execution_count": 303,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "TvYwdwzjh2QQ",
"colab_type": "code",
"colab": {}
},
"source": [
"import sympy\n",
"import matplotlib.pyplot as plt\n",
"from sympy import init_printing\n",
"from sympy import pprint\n",
"\n",
"init_printing(use_latex=True)\n"
],
"execution_count": 350,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "8bqA0DqRegPN",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 1000
},
"outputId": "2e66e9ea-fc55-46db-ffd2-e4fa8d89bdba"
},
"source": [
"results = []\n",
"for item in new:\n",
" res = []\n",
" for ex in item:\n",
" if len(ex) > 3:\n",
" tmp.append(ex)\n",
" result.append(ex.replace(\"]\", \"\"))\n",
" results.append(result[-1])\n",
" pprint(sympy.sympify(result[-1]))\n",
" print(\"\\n\", \"@\" * 60, \"\\n\")"
],
"execution_count": 355,
"outputs": [
{
"output_type": "stream",
"text": [
"4⋅π⋅x₀\n",
"\n",
" @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ \n",
"\n",
"x₀ + 1\n",
"\n",
" @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ \n",
"\n",
"-0.125 \n",
"───────\n",
" 2 \n",
" x₀ \n",
"\n",
" @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ \n",
"\n",
" 1 \n",
" ── \n",
" x₀ \n",
" - 1\n",
"\n",
" @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ \n",
"\n",
" 0.5\n",
"⎛ 2 ⎞ \n",
"⎝x₀ - 0.1591549430918953⋅x₀ + 0.01⎠ \n",
"\n",
" @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ \n",
"\n",
" 0.5 \n",
"──────\n",
"x₀ + 1\n",
"\n",
" @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ \n",
"\n",
"sin(0.785437643527985⋅sin(0.1013211780033⋅cos(x₀)))\n",
"\n",
" @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ \n",
"\n",
"6.283185307179586⋅x₀\n",
"────────────────────\n",
" x₁ \n",
"\n",
" @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ \n",
"\n",
" 0.5\n",
"⎛ 2 2 ⎞ \n",
"⎝x₀ + x₁ + 1⎠ \n",
"\n",
" @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ \n",
"\n",
"1.0⋅x₁\n",
"──────\n",
" x₀ \n",
"\n",
" @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ \n",
"\n",
"0.168816319869⋅x₂⋅(x₀ + x₁)\n",
"\n",
" @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ \n",
"\n",
"-4⋅π⋅(cos(x₁ - x₂) - 1) \n",
"────────────────────────\n",
" 2 \n",
" x₀⋅(x₁ - x₂) \n",
"\n",
" @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ \n",
"\n",
"x₀⋅(x₁⋅cos(x₂) + 1)\n",
"\n",
" @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ \n",
"\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "N5qkbSYTx3S7",
"colab_type": "code",
"colab": {}
},
"source": [
""
],
"execution_count": null,
"outputs": []
}
]
}