fuzzy-rules-generator/fluid.ipynb

351 lines
182 KiB
Plaintext
Raw Permalink Normal View History

2024-11-01 11:04:05 +04:00
{
"cells": [
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"from skfuzzy import control as ctrl\n",
"\n",
"level = ctrl.Antecedent(np.arange(1.5, 9.0, 0.1), \"level\")\n",
"flow = ctrl.Antecedent(np.arange(0, 0.6, 0.01), \"flow\")\n",
"influx = ctrl.Consequent(np.arange(0, 0.6, 0.01), \"influx\")"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"c:\\Users\\user\\Projects\\python\\fuzzy\\.venv\\Lib\\site-packages\\skfuzzy\\control\\fuzzyvariable.py:125: UserWarning: FigureCanvasAgg is non-interactive, and thus cannot be shown\n",
" fig.show()\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAjcAAAGyCAYAAAAYveVYAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABpwklEQVR4nO3deXxU5d3//9dM9n0hZJ+AQBSRJZhIAq5tsVpXerfqbVWstfqr1laL1qVuVVvR3q31rrUuWJe71br0q9RWa6tUrAsJW0IRECGAM9kTIDvZZs7vjzGBSIBkMjNnlvfz8chDMzlzzidDCO851+e6LothGAYiIiIiIcJqdgEiIiIi3qRwIyIiIiFF4UZERERCisKNiIiIhBSFGxEREQkpCjciIiISUhRuREREJKQo3IiIiEhIUbgRERGRkBJ24cYwDNrb29HCzCIiIqHJ1HDz73//m3PPPZfc3FwsFgvLly8/4nNWrlzJ8ccfT0xMDNOmTePZZ58d0zU7OjpISUmho6PDs6JFREQkoJkabrq6upgzZw6PPvroqI7fuXMnZ599Nl/60peoqqrihhtu4Lvf/S7/+Mc/fFypiIiIBAtLoGycabFYeO2111i0aNEhj7nlllt44403+Pjjj4ce++///m9aW1t56623RnWd9vZ2UlJSaGtrIzk5ebxli4iISICJNLuAsVi1ahULFy4c9tgZZ5zBDTfccMjn9Pb20tvbO/R5e3s7AKc8+C8iYhN8UqfIeKTERfGLb86mZHK62aUcWst2+MMi6N9ndiWhIyoerngDUgvMruSQVtev5p5V99DZ32l2KRKm3rvovVEdF1ThpqGhgaysrGGPZWVl0d7ezr59+4iLizvoOUuXLuWee+456PFL508iLiHJZ7WKeOrdT5r41lMV/PrCIs6enWN2OSPb/jZ0NsGpN5tdSYgw4N37ofpdKL7c7GJG9Nfqv3LXR3cxN3Mui3IWmV2OyGEFVbjxxG233caSJUuGPm9vb8dms3H1KVM1LCUB6bsnH8WPX/kP339hPTV7p3P1KVOwWCxmlzWcvRxy58IpN5ldSejY/BdwVARcuDEMgyf+8wSPVj3KommLuGv+XURZo8wuS+SwgircZGdn09jYOOyxxsZGkpOTR7xrAxATE0NMTIw/yhPxipjICB6+qAhbehxL//4Jjr3d/PTc44iMCJCVGwzD/Y/w7AvNriS02Mqg+l9mVzFMv6ufe1fdy/Lty7mu6Dqunn114AXtMXK5XDidTrPLkEOIjIz0ys9YUIWb+fPn8+abbw577O2332b+/PkmVSTiG1arhR+fMZ38tHjuWP4xda09PHLxXBJiAuCvbKsdOurd/xiL9xSUwZpl0NkMiRPNroaOvg6WrFzC2sa13H/S/Zw79VyzSxoXwzBoa2uju7vb7FLkMCwWCxMnTiQycny/60z9TdnZ2cn27duHPt+5cydVVVWkp6dTUFDAbbfdRm1tLf/3f/8HwPe+9z1++9vfcvPNN/Od73yHf/3rX7z88su88cYbZn0LIj518bwCclJi+f7z67noyVU8ffkJZCbHmluUo8L9X1upuXWEmsHX01EBx55jaikNXQ1cu+JaGjobeGLhE8zLmWdqPd4wGGySk5OJjo4O+jtQocgwDPbu3UtraysTJkwY15+RqeFm7dq1fOlLXxr6fLA35vLLL+fZZ5+lvr4eu90+9PWjjjqKN954gx/96Ef87//+L/n5+Tz11FOcccYZfq9dxF9OOyaTl783n+88u4av/+4jnrniBI7OMrEZ3lEBE6ZBwgTzaghFqTZIzjM93Hyy5xO+/873ibRG8oez/sDU1Kmm1eItLpdrKNgkJiaaXY4cRnJyMnv37sXlchEREeHxeQJmnRt/0To3EqzqWvfxnWfXUNu6jz9cWUqRLdWcQh47CXLmwKLRLb4pY/DKt6G9Dq78pymXX9e4jmvfuZbJKZN59CuPkhGXYUod3tbf309zczMZGRlER0ebXY4cRl9fHy0tLUycOJGoKM8b1wOkQ1FEjiQ3NY5XvjefvNQ4fv32p+YU0dMOTZugQENSPmErg7pK6O8x5fK/Wf8bjko5imfOeCZkgs2BNBQV+Lz1Z6RwIxJEkmKj+PaCyfx7WzN1rSYsoFezBgyXmol9paAUnH1QX+X3S+9q28X6pvVcNuMy4qPi/X59EW9SuBEJMmfPziE2MoJX19f4/+KOCohLg4xC/187HGTNgqgE9zpCfvaX6r+QFJXEVwq+4vdry6Gddtpph12FX0amcCMSZJJiozhrVg4vr63B5fJzy5yjwj2rR7f3fSMiEvKLwbHar5cdcA3w+vbXOWvKWcRGmjwbT8QLFG5EgtCFJfnY93Szetce/13UOQA1azUF3NdsZe4Q6ce5Hh/VfUTTvia+Pu3rfrumiC8p3IgEoXlHpTN5Qjwvr3X476JNm6Cv073YnPiOrRS6W2B3td8uuXz7co5OO5oZE2b47Zoydnv37mXx4sWkpaURHx/P1772NbZt2wa414iZOHEif/7zn4eOLyoqIidn//50H3zwATExMWGxkKHCjUgQslgsXFBi482N9XT09PvnovYKsEa595QS37GdAFjA4Z++mz09e3jX8S5fn/Z1zSYKcN/+9rdZu3Ytr7/+OqtWrcIwDM466yz6+/uxWCyccsoprFy5EnAHoS1btrBv3z4++eQTAN577z1OOOEE4uNDv2E8ANZyFxFPfOP4fH71z6387T/1XDyvwPcXdJRDbhFEjbyPm3hJbApkznA3Fc+91OeXe2OHe4X3s6ec7fNrBZp9fU6qmzv9ft2pExOJix7bAnXbtm3j9ddf58MPP2TBggUAPP/889hsNpYvX84FF1zAaaedxhNPPAHAv//9b+bOnUt2djYrV65k+vTprFy5klNPPdXr308gUrgRCVLZKbGcevREXl7r8FO4WQ0zzvf9dcQ9JXzXhz6/jGEYvLb9Nb5k+xJpsWk+v16gqW7u5JxHPvD7df/2g5OYmZcypuds2bKFyMhISkv397xNmDCBY445hi1btgBw6qmncv3119Pc3Mx7773HaaedNhRurrzySj766CNuvvlmr34vgUrhRiSIXVhi45rn17OtsYNCX27J0FYLbQ41E/uLrQzWPg3deyA+3WeX2bx7M9v2buNHx//IZ9cIZFMnJvK3H5xkynV9YdasWaSnp/Pee+/x3nvv8fOf/5zs7GwefPBB1qxZQ39//9Bdn1CncCMSxL5ybBbpCdG8sq6Gn5x1rO8uNNj/oWZi/xhcAdqxGo4502eXeW37a2TGZ7IgNzz+wfuiuOiIMd9BMcuxxx7LwMAAFRUVQwFl9+7dbN26lRkz3I3gFouFk08+mb/85S9s2rSJk046ifj4eHp7e3niiScoKSkhISHBzG/Db9RQLBLEoiOtLCrK49X1NfQ7Xb67kL0C0o6CxEzfXUP2S50EiVk+bSruGejhzR1vcv7U84mwer5BofhHYWEh559/PldddRUffPABGzZs4NJLLyUvL4/zz98/XHzaaafxpz/9iaKiIhITE7FarZxyyik8//zzYdNvAwo3IkHvwhPyaens491Pmnx3EUe57tr4k8XiHgK0V/jsEivsK+jo72DRtEU+u4Z41zPPPENxcTHnnHMO8+fPxzAM3nzzzWEbTJ566qk4nU5OO+20ocdOO+20gx4LddoVXCQEnPfbD8hMiuWpy0u8f/LeTnigAM7+JZR8x/vnl5GtehRW3Au3OiDS+ztZf/ef32XANcCzZz7r9XMHmsFdwce707T4nrf+rHTnRiQEXFBi492tTTR1+GA36dp1YDi1Waa/2cpgoAca/uP1U9d21lJRX6EViSVkKdyIhIDz5uQSabXw2vpa75/cUeFee2XidO+fWw4tZzZExvlkE82/bP8L8ZHxnD7pdK+fWyQQKNyIhICUuCjOnJnNy2sdeH2k2V4O+fPAql8XfhURBXnHe72p2GW4WL59OV876mvER4X+SrUSnvTbSiREXFhio7q5i/X2Vu+d1OWEmjX7pyaLfw02FXsxsFbUV1DfVa9GYglpCjciIWL+lAnkpcbxijc
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import skfuzzy as fuzz\n",
"\n",
"level[\"low\"] = fuzz.zmf(level.universe, 2, 4)\n",
"level[\"average\"] = fuzz.trapmf(level.universe, [2, 4, 6, 8])\n",
"level[\"high\"] = fuzz.smf(level.universe, 6, 8)\n",
"level.view()\n",
"\n",
"flow[\"low\"] = fuzz.zmf(flow.universe, 0.2, 0.3)\n",
"flow[\"average\"] = fuzz.trapmf(flow.universe, [0.15, 0.25, 0.35, 0.45])\n",
"flow[\"high\"] = fuzz.smf(flow.universe, 0.3, 0.4)\n",
"flow.view()\n",
"\n",
"influx[\"low\"] = fuzz.zmf(influx.universe, 0.2, 0.3)\n",
"influx[\"average\"] = fuzz.trapmf(influx.universe, [0.15, 0.25, 0.35, 0.45])\n",
"influx[\"high\"] = fuzz.smf(influx.universe, 0.3, 0.4)\n",
"influx.view()"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(<Figure size 640x480 with 1 Axes>, <Axes: >)"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"rule1 = ctrl.Rule(level[\"low\"] & flow[\"high\"], influx[\"high\"])\n",
"rule2 = ctrl.Rule(level[\"low\"] & flow[\"average\"], influx[\"high\"])\n",
"rule3 = ctrl.Rule(level[\"low\"] & flow[\"low\"], influx[\"average\"])\n",
"rule4 = ctrl.Rule(level[\"average\"] & flow[\"high\"], influx[\"high\"])\n",
"rule5 = ctrl.Rule(level[\"average\"] & flow[\"average\"], influx[\"average\"])\n",
"rule6 = ctrl.Rule(level[\"average\"] & flow[\"low\"], influx[\"average\"])\n",
"rule7 = ctrl.Rule(level[\"high\"] & flow[\"high\"], influx[\"average\"])\n",
"rule8 = ctrl.Rule(level[\"high\"] & flow[\"average\"], influx[\"low\"])\n",
"rule9 = ctrl.Rule(level[\"high\"] & flow[\"low\"], influx[\"low\"])\n",
"\n",
"rule1.view()"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [],
"source": [
"influx_ctrl = ctrl.ControlSystem(\n",
" [\n",
" rule1,\n",
" rule2,\n",
" rule3,\n",
" rule4,\n",
" rule5,\n",
" rule6,\n",
" rule7,\n",
" rule8,\n",
" rule9,\n",
" ]\n",
")\n",
"\n",
"influxes = ctrl.ControlSystemSimulation(influx_ctrl)"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"=============\n",
" Antecedents \n",
"=============\n",
"Antecedent: level = 2.5\n",
" - low : 0.875\n",
" - average : 0.25\n",
" - high : 0.0\n",
"Antecedent: flow = 0.4\n",
" - low : 0.0\n",
" - average : 0.4999999999999997\n",
" - high : 1.0\n",
"\n",
"=======\n",
" Rules \n",
"=======\n",
"RULE #0:\n",
" IF level[low] AND flow[high] THEN influx[high]\n",
"\tAND aggregation function : fmin\n",
"\tOR aggregation function : fmax\n",
"\n",
" Aggregation (IF-clause):\n",
" - level[low] : 0.875\n",
" - flow[high] : 1.0\n",
" level[low] AND flow[high] = 0.875\n",
" Activation (THEN-clause):\n",
" influx[high] : 0.875\n",
"\n",
"RULE #1:\n",
" IF level[low] AND flow[average] THEN influx[high]\n",
"\tAND aggregation function : fmin\n",
"\tOR aggregation function : fmax\n",
"\n",
" Aggregation (IF-clause):\n",
" - level[low] : 0.875\n",
" - flow[average] : 0.4999999999999997\n",
" level[low] AND flow[average] = 0.4999999999999997\n",
" Activation (THEN-clause):\n",
" influx[high] : 0.4999999999999997\n",
"\n",
"RULE #2:\n",
" IF level[low] AND flow[low] THEN influx[average]\n",
"\tAND aggregation function : fmin\n",
"\tOR aggregation function : fmax\n",
"\n",
" Aggregation (IF-clause):\n",
" - level[low] : 0.875\n",
" - flow[low] : 0.0\n",
" level[low] AND flow[low] = 0.0\n",
" Activation (THEN-clause):\n",
" influx[average] : 0.0\n",
"\n",
"RULE #3:\n",
" IF level[average] AND flow[high] THEN influx[high]\n",
"\tAND aggregation function : fmin\n",
"\tOR aggregation function : fmax\n",
"\n",
" Aggregation (IF-clause):\n",
" - level[average] : 0.25\n",
" - flow[high] : 1.0\n",
" level[average] AND flow[high] = 0.25\n",
" Activation (THEN-clause):\n",
" influx[high] : 0.25\n",
"\n",
"RULE #4:\n",
" IF level[average] AND flow[average] THEN influx[average]\n",
"\tAND aggregation function : fmin\n",
"\tOR aggregation function : fmax\n",
"\n",
" Aggregation (IF-clause):\n",
" - level[average] : 0.25\n",
" - flow[average] : 0.4999999999999997\n",
" level[average] AND flow[average] = 0.25\n",
" Activation (THEN-clause):\n",
" influx[average] : 0.25\n",
"\n",
"RULE #5:\n",
" IF level[average] AND flow[low] THEN influx[average]\n",
"\tAND aggregation function : fmin\n",
"\tOR aggregation function : fmax\n",
"\n",
" Aggregation (IF-clause):\n",
" - level[average] : 0.25\n",
" - flow[low] : 0.0\n",
" level[average] AND flow[low] = 0.0\n",
" Activation (THEN-clause):\n",
" influx[average] : 0.0\n",
"\n",
"RULE #6:\n",
" IF level[high] AND flow[high] THEN influx[average]\n",
"\tAND aggregation function : fmin\n",
"\tOR aggregation function : fmax\n",
"\n",
" Aggregation (IF-clause):\n",
" - level[high] : 0.0\n",
" - flow[high] : 1.0\n",
" level[high] AND flow[high] = 0.0\n",
" Activation (THEN-clause):\n",
" influx[average] : 0.0\n",
"\n",
"RULE #7:\n",
" IF level[high] AND flow[average] THEN influx[low]\n",
"\tAND aggregation function : fmin\n",
"\tOR aggregation function : fmax\n",
"\n",
" Aggregation (IF-clause):\n",
" - level[high] : 0.0\n",
" - flow[average] : 0.4999999999999997\n",
" level[high] AND flow[average] = 0.0\n",
" Activation (THEN-clause):\n",
" influx[low] : 0.0\n",
"\n",
"RULE #8:\n",
" IF level[high] AND flow[low] THEN influx[low]\n",
"\tAND aggregation function : fmin\n",
"\tOR aggregation function : fmax\n",
"\n",
" Aggregation (IF-clause):\n",
" - level[high] : 0.0\n",
" - flow[low] : 0.0\n",
" level[high] AND flow[low] = 0.0\n",
" Activation (THEN-clause):\n",
" influx[low] : 0.0\n",
"\n",
"\n",
"==============================\n",
" Intermediaries and Conquests \n",
"==============================\n",
"Consequent: influx = 0.4315251220586045\n",
" low:\n",
" Accumulate using accumulation_max : 0.0\n",
" average:\n",
" Accumulate using accumulation_max : 0.25\n",
" high:\n",
" Accumulate using accumulation_max : 0.875\n",
"\n"
]
},
{
"data": {
"text/plain": [
"np.float64(0.4315251220586045)"
]
},
"execution_count": 32,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"influxes.input[\"level\"] = 2.5\n",
"influxes.input[\"flow\"] = 0.4\n",
"influxes.compute()\n",
"influxes.print_state()\n",
"influxes.output[\"influx\"]"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"influx.view(sim=influxes)"
]
}
],
"metadata": {
"kernelspec": {
"display_name": ".venv",
"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.12.7"
}
},
"nbformat": 4,
"nbformat_minor": 2
}