Skip to content

Instantly share code, notes, and snippets.

@lucasmpavelski
Last active November 9, 2017 10:20
Show Gist options
  • Save lucasmpavelski/f671b0138c99f1ff0cce6bca9cdcd411 to your computer and use it in GitHub Desktop.
Save lucasmpavelski/f671b0138c99f1ff0cce6bca9cdcd411 to your computer and use it in GitHub Desktop.
Trabalho fuzzy - Lucas Marcondes Pavelski
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Implementação"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Bibliotecas e funções auxiliares:"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# bibliotecas necessarias\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"from collections import defaultdict\n",
"\n",
"# funcao para plotar conjuntos fuzzy\n",
"def plota_conjuntos(conjuntos, lb = 0, ub = 100) :\n",
" fig, ax = plt.subplots(nrows=len(conjuntos))\n",
" x = np.linspace(lb, ub, 100)\n",
" for i, conjunto in enumerate(conjuntos.items()) :\n",
" axis = ax if len(conjuntos) == 1 else ax[i]\n",
" axis.set_title(conjunto[0])\n",
" for termo, funcao in conjunto[1].items() :\n",
" axis.plot(x, funcao(x), label=termo)\n",
" axis.legend(loc='lower right')\n",
" axis.set_ylim(0, 1)\n",
" return fig, ax"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Função de pertinencia triangular:"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"def triang(x, a, m, b) :\n",
" if a < x <= m :\n",
" return (x - a) / (m - a + 1e-6)\n",
" elif m < x <= b :\n",
" return (b - x) / (b - m + 1e-6)\n",
" else :\n",
" return 0.0\n",
"# permite executar a função em vetores e matrizes\n",
"vtriang = np.vectorize(triang, excluded = ['a', 'm', 'b'])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Entradas:"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\nYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7fe83a8a8c88>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"entradas = {\n",
" 'sujeira' : {\n",
" 'PS' : (lambda x : vtriang(x,-50, 0, 50)),\n",
" 'MS' : (lambda x : vtriang(x, 0, 50, 100)),\n",
" 'GS' : (lambda x : vtriang(x, 50, 100, 150)),\n",
" },\n",
" 'mancha' : {\n",
" 'SM' : (lambda x : vtriang(x,-50, 0, 50)),\n",
" 'MM' : (lambda x : vtriang(x, 0, 50, 100)),\n",
" 'GM' : (lambda x : vtriang(x, 50, 100, 150)),\n",
" },\n",
"}\n",
"plota_conjuntos(entradas)\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Saídas:"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"image/png": "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\nAAAAAElFTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7fe83a51bef0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"saidas = {\n",
" 'tempo de lavagem' : {\n",
" 'MC' : (lambda x : vtriang(x,-10, 0, 10)),\n",
" 'C' : (lambda x : vtriang(x, 0, 10, 25)),\n",
" 'M' : (lambda x : vtriang(x, 10, 25, 40)),\n",
" 'L' : (lambda x : vtriang(x, 25, 40, 60)),\n",
" 'ML' : (lambda x : vtriang(x, 40, 60, 80)),\n",
" }\n",
"}\n",
"plota_conjuntos(saidas, ub = 60)\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Base de regras:"
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{'sujeira': 'PS', 'mancha': 'SM'} ~> MC\n",
"{'sujeira': 'PS', 'mancha': 'MM'} ~> M\n",
"{'sujeira': 'PS', 'mancha': 'GM'} ~> L\n",
"{'sujeira': 'MS', 'mancha': 'SM'} ~> C\n",
"{'sujeira': 'MS', 'mancha': 'MM'} ~> M\n",
"{'sujeira': 'MS', 'mancha': 'GM'} ~> L\n",
"{'sujeira': 'GS', 'mancha': 'SM'} ~> M\n",
"{'sujeira': 'GS', 'mancha': 'MM'} ~> L\n",
"{'sujeira': 'GS', 'mancha': 'GM'} ~> ML\n"
]
}
],
"source": [
"class regra :\n",
" def __init__(self, ants, prec) :\n",
" self.ants = ants\n",
" self.prec = prec\n",
" \n",
" def __repr__(self) :\n",
" # imprime a regra como string\n",
" return str(self.ants) + \" ~> \" + self.prec\n",
"\n",
"regras = [\n",
" regra({ 'sujeira': 'PS', 'mancha': 'SM' }, 'MC'),\n",
" regra({ 'sujeira': 'PS', 'mancha': 'MM' }, 'M'),\n",
" regra({ 'sujeira': 'PS', 'mancha': 'GM' }, 'L'),\n",
" regra({ 'sujeira': 'MS', 'mancha': 'SM' }, 'C'),\n",
" regra({ 'sujeira': 'MS', 'mancha': 'MM' }, 'M'),\n",
" regra({ 'sujeira': 'MS', 'mancha': 'GM' }, 'L'),\n",
" regra({ 'sujeira': 'GS', 'mancha': 'SM' }, 'M'),\n",
" regra({ 'sujeira': 'GS', 'mancha': 'MM' }, 'L'),\n",
" regra({ 'sujeira': 'GS', 'mancha': 'GM' }, 'ML'),\n",
"]\n",
"\n",
"for regra in regras:\n",
" print(regra)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Defuzzificação por centróide:"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.667000333667\n"
]
}
],
"source": [
"def centroide(func, lb, ub, num_pontos = 100) :\n",
" x = np.linspace(lb, ub, num_pontos)\n",
" fx = func(x)\n",
" return np.sum(fx * x) / np.sum(fx)\n",
"\n",
"print(centroide(lambda x : x, 0, 1, 1000))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Mecanismo de inferência fuzzy:"
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {},
"outputs": [],
"source": [
"def controlador(entradas, saidas, regras, valores, plot = True) :\n",
" # parâmetros\n",
" f_agregacao_antecedentes = np.min\n",
" f_agregacao_regras = max\n",
" f_inferencia = lambda saida, pert_regra, res : np.maximum(np.minimum(saida, pert_regra), res)\n",
" f_defuzzificacao = centroide\n",
" # avaliação dos antecedentes\n",
" pert_regras = []\n",
" for regra in regras :\n",
" pert_entradas = [entradas[ent][val](valores[ent]) for ent, val in regra.ants.items()]\n",
" # cada regra é avaliada e os valores agregados são armazenados com os precedentes\n",
" pert_regras.append((regra.prec, f_agregacao_antecedentes(pert_entradas)))\n",
" # cada precedente (chave) é agregado com seu \"peso\"\n",
" pert_regras_aggr = defaultdict(float)\n",
" for val, pert in pert_regras :\n",
" pert_regras_aggr[val] = f_agregacao_regras(pert_regras_aggr[val], pert)\n",
" # a função resultante pondera cada regra pelo \"peso\"\n",
" def funcao_resultante(x) :\n",
" resultado = np.zeros_like(x)\n",
" for val, pert in pert_regras_aggr.items() :\n",
" if pert <= 1e-6 : continue # se o peso é muito baixo, ignora a regra (+ rápido!)\n",
" func = saidas['tempo de lavagem'][val]\n",
" resultado = f_inferencia(func(x), pert, resultado)\n",
" return resultado\n",
" # a função (ou conjunto fuzzy) resultante é defuzzificado\n",
" c = f_defuzzificacao(funcao_resultante, 0, 60)\n",
" # opcionalmente plota a função\n",
" if (plot) :\n",
" fig, ax = plota_conjuntos({ 'tempo de lavagem': {'RES': funcao_resultante } }, ub = 60)\n",
" plt.axvline(x = c)\n",
" plt.show()\n",
" # retorna o valor crisp\n",
" return c"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Controlador da máquina de lavar:"
]
},
{
"cell_type": "code",
"execution_count": 48,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\nRK5CYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7fe83a7d8198>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"14.5070829965\n"
]
},
{
"data": {
"image/png": "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\nh63XO1tgAAAAAElFTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7fe83a720ba8>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"33.6861953621\n"
]
}
],
"source": [
"def maquina_de_lavar(sujeira, mancha) :\n",
" return controlador(entradas, saidas, regras, {'sujeira': sujeira, 'mancha': mancha})\n",
"\n",
"interativo = False\n",
"\n",
"if (interativo) :\n",
" from ipywidgets import widgets\n",
" widgets.interact(maquina_de_lavar, sujeira=(0, 100), mancha=(0, 100))\n",
"else :\n",
" print(maquina_de_lavar(0, 10))\n",
" print(maquina_de_lavar(60, 70))"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {},
"outputs": [
{
"data": {
"text/markdown": [
"sujeira | mancha | tempo\n",
"--- | --- | ---\n",
"0|0|3.137255\n",
"0|10|8.017361\n",
"0|20|10.010783\n",
"0|30|10.991588\n",
"0|40|11.482954\n",
"0|50|11.670156\n",
"0|60|15.580033\n",
"0|70|18.273443\n",
"0|80|20.492970\n",
"0|90|22.618630\n",
"0|100|24.996908\n",
"10|0|14.507083\n",
"10|10|14.317368\n",
"10|20|14.861063\n",
"10|30|15.152030\n",
"10|40|15.318493\n",
"10|50|15.580033\n",
"10|60|22.322486\n",
"10|70|24.004846\n",
"10|80|25.673862\n",
"10|90|27.520086\n",
"10|100|29.953159\n",
"20|0|18.277459\n",
"20|10|18.004346\n",
"20|20|17.327064\n",
"20|30|17.363445\n",
"20|40|17.992828\n",
"20|50|18.273443\n",
"20|60|24.004846\n",
"20|70|27.194017\n",
"20|80|28.547395\n",
"20|90|30.587172\n",
"20|100|33.109491\n",
"30|0|20.599769\n",
"30|10|20.288480\n",
"30|20|19.493569\n",
"30|30|19.493569\n",
"30|40|20.186427\n",
"30|50|20.492970\n",
"30|60|25.673862\n",
"30|70|28.547395\n",
"30|80|30.745925\n",
"30|90|32.962659\n",
"30|100|35.664512\n",
"40|0|22.634933\n",
"40|10|22.269406\n",
"40|20|21.941249\n",
"40|30|21.941249\n",
"40|40|22.269406\n",
"40|50|22.618630\n",
"40|60|27.520086\n",
"40|70|30.587172\n",
"40|80|32.962659\n",
"40|90|35.214314\n",
"40|100|38.277350\n",
"50|0|24.996908\n",
"50|10|24.996908\n",
"50|20|24.996908\n",
"50|30|24.996908\n",
"50|40|24.996908\n",
"50|50|24.996908\n",
"50|60|29.953159\n",
"50|70|33.109491\n",
"50|80|35.664512\n",
"50|90|38.277350\n",
"50|100|41.664494\n",
"60|0|29.953159\n",
"60|10|29.953159\n",
"60|20|30.493881\n",
"60|30|30.493881\n",
"60|40|29.953159\n",
"60|50|29.953159\n",
"60|60|30.666184\n",
"60|70|33.686195\n",
"60|80|36.171691\n",
"60|90|38.747375\n",
"60|100|42.179222\n",
"70|0|33.109491\n",
"70|10|33.109491\n",
"70|20|33.109491\n",
"70|30|33.109491\n",
"70|40|33.109491\n",
"70|50|33.109491\n",
"70|60|33.686195\n",
"70|70|35.028638\n",
"70|80|37.344493\n",
"70|90|39.714793\n",
"70|100|43.498867\n",
"80|0|35.664512\n",
"80|10|35.664512\n",
"80|20|35.664512\n",
"80|30|35.664512\n",
"80|40|35.664512\n",
"80|50|35.664512\n",
"80|60|36.171691\n",
"80|70|37.344493\n",
"80|80|38.432596\n",
"80|90|41.174199\n",
"80|100|45.614121\n",
"90|0|38.277350\n",
"90|10|38.277350\n",
"90|20|37.980790\n",
"90|30|37.980790\n",
"90|40|38.277350\n",
"90|50|38.277350\n",
"90|60|38.747375\n",
"90|70|39.714793\n",
"90|80|41.174199\n",
"90|90|43.133819\n",
"90|100|48.727651\n",
"100|0|41.664494\n",
"100|10|41.719815\n",
"100|20|41.854477\n",
"100|30|41.854477\n",
"100|40|41.719815\n",
"100|50|41.664494\n",
"100|60|42.179222\n",
"100|70|43.498867\n",
"100|80|45.614121\n",
"100|90|48.727651\n",
"100|100|53.535354\n"
],
"text/plain": [
"<IPython.core.display.Markdown object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"from IPython.display import Markdown, display\n",
"\n",
"md = \"sujeira | mancha | tempo\\n\"\n",
"md += \"--- | --- | ---\\n\"\n",
"for i in range(0, 101, 10) :\n",
" for j in range(0, 101, 10) :\n",
" out = inferencia({'sujeira': j, 'mancha': i}, plot=False)\n",
" md += \"%d|%d|%f\\n\" % (i, j, out)\n",
"\n",
"display(Markdown(md))"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"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.6.2"
},
"widgets": {
"state": {
"0c55bee69b904bdf93ca3569f41cd5d4": {
"views": [
{
"cell_index": 6
}
]
}
},
"version": "1.2.0"
}
},
"nbformat": 4,
"nbformat_minor": 1
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment