SlideShare una empresa de Scribd logo
1 de 24
Clips
Sistemas Expertos
By Degly Mauricio Garcia Rivas
No de Carné : 092-12-473.
Definición
• CLIPS es una herramienta que provee un entorno de desarrollo para la
producción y ejecución de sistemas expertos. Fue creado a partir de 1984,
en el Lyndon B. Johnson Space Center de la NASA. Los fondos cesaron a
principios de los años 1990, y hubo un mandato de la NASA para comprar
software comercial.
• CLIPS es un acrónimo de C Language Integrated Production System (Sistema
de Producción Integrado en Lenguaje C). En la actualidad, entre
los paradigmas de programación que soporta CLIPS se encuentran
la Programación lógica, la Programación imperativa y la Programación
Orientada a Objetos.
Características de CLIPS
• Representación de Conocimientos.
• CLIPS permite manejar una amplia variedad de conocimiento, soportando tres
paradigmas de programación: el declarativo, el imperativo, y el orientado a
objetos. La programación lógica basada en reglas permite que el conocimiento
sea representado como reglas heurísticas que especifican las acciones a ser
ejecutadas dada una situación.
• La POO permite modelar sistemas complejos como componentes modulares.
La programación imperativa permite ejecutar algoritmos de la misma manera
que en C, Java, LISP y otros lenguajes.
Características de CLIPS
• Portabilidad.
• CLIPS fue escrito en C con el fin de hacerlo más portable y rápido, y ha sido
instalado en diversos sistemas operativos
(Windows 95/98/NT, MacOS X, Unix) sin ser necesario modificar su código
fuente. CLIPS puede ser ejecutado en cualquier sistema con un compilador
ANSI de C, o un compilador de C++. El código fuente de CLIPS puede ser
modificado en caso que el usuario lo considere necesario, con el fin de
agregar o quitar funcionalidades..
Características de CLIPS
• Desarrollo Interactivo.
• La versión estándar de CLIPS provee un ambiente de desarrollo interactivo y
basado en texto; este incluye herramientas para la depuración, ayuda en
línea, y un editor integrado. Las interfaces de este ambiente tienen menús,
editores y ventanas que han sido desarrollados
para MacOS, Windows 95/98/NT, X Window, entre otros..
lenguaje de reglas de CLIPS
Hechos.
Los dos elementos que permiten representar problemas utilizando reglas de
producción son los hechos y las reglas.
• Los hechos en CLIPS pueden ser de dos tipos ordered facts y deftemplate facts
• Los Ordered Facts tienen formato libre, por lo tanto no tienen una estructura
predefinida, siguen el esquema: (relacion p1 p2 ... pn)
lenguaje de reglas de CLIPS
Deftemplates.
• Los deftemplate facts tienen una estructura predefinida, podr´ıan asimilarse a
representaciones al estilo de los frames.
• Definimos una serie de campos (slots). Cada campo puede tener una serie de
restricciones como tipo, cardinalidad y un valor por defecto (constante o función para
calcularlo)
(deftemplate nombre-template "comentario"
(slot nombre-slot)
(multislot nombre-slot))
lenguaje de reglas de CLIPS
Creación de Hechos.
(assert (padre pepe juan))
(assert (persona (nombre "pedro") (edad 25)))
(deffacts mis-hechos
(casa roja) (pelota verde) (persona (nombre "luis") (edad 33)))
lenguaje de reglas de CLIPS
Reglas.
Las reglas en CLIPS están formadas por:
• Una parte izquierda (LHS) que define las condiciones a cumplir
• Una parte derecha (RHS) que define las acciones a realizar
• Sintaxis:
(defrule nombre-regla "comentario"
(condicion-1) (condicion-2) ... =>
(accion-1) (accion-2) ...)
lenguaje de reglas de CLIPS
LHS.
Los patrones indican que tipo de hechos deben instanciar las reglas, estos se
establecen a traves de restricciones sobre variables o valores constantes
• Estas restricciones se pueden combinar mediante conectivas logicas ~ (no), &
(y) y | (o).
• Patrones constantes, con variables o con wildcards: se instancian
directamente con hechos en la base de hechos.
• Expresiones not, and, or, exist y forall con patrones.
lenguaje de reglas de CLIPS
Módulos.
Las reglas de CLIPS se organizan en módulos
• Permiten estructurar el conocimiento y poder focalizar la ejecución de las reglas
según su objetivo
• La definición de un módulo se realiza mediante la construcción (defmodule
"comentario" )
• Nada de lo definido en un módulos es visible salvo que lo exportemos
• Para utilizar construcciones de otro módulo también tenemos que importarlas
explícitamente
• Existe un módulo por defecto llamado MAIN al que pertenece todo lo no definido en
otro modulo
lenguaje de reglas de CLIPS
Foco.
•Podemos restringir que módulos se usan para la ejecución de reglas mediante
la sentencia (focus *)
• Esta sentencia se puede incluir en la parte derecha de una regla para poder
cambiar explícitamente de modulo
• Se puede hacer que la ejecución se focalice en el modulo de la ´ultima regla
ejecutada declarando la propiedad auto-focus en una regla, por ejemplo:
(defrule JUAN::mi-regla
(declare (auto-focus TRUE))
(persona (nombre juan))
lenguaje funcional de CLIPS
Lenguajes.
CLIPS incluye un lenguaje de programación funcional
• Este permite definir nuevas funciones o programar las acciones a realizar en la
parte derecha de las reglas
• Toda sentencia o estructura de control es una función que recibe unos
parametros y retorna un resultado (paradigma funcional)
lenguaje funcional de CLIPS
Sentencias.
Asignación a una variable, retorna el valor asignado
(bind ) <var> <valor>)
• Sentencia alternativa, retorna el valor de la ultima acción evaluada
(if <exp> then <acción>* [else <acción> *])
• Bucle condicional, retorna falso, excepto si hay una sentencia de retorno que rompa el
bucle
(while <exp> do <acción>*)
• Bucle sobre un rango de valores, retorna falso, excepto si hay una sentencia de
retorno
(loop-for-count (<var> <v-i> <v-f> ) do <acción> *)
)
lenguaje funcional de CLIPS
Sentencias.
• Ejecuta un conjunto de sentencias secuencialmente, retorna el valor de la ultima.
(progn <acción>*)
• Romper la ejecución de la estructura de control retornando el valor de la expresión.
(return <expr>)
• Romper la ejecución de una estructura de control
(break)
• Estructura alternativa caso, cada case hace una comparación con el valor evaluado.
Retorna la ultima expresión evaluada o falso si ninguna sentencia case se cumple
(switch <expr> (case (<comp>) then <acción> *)*
[(default *)])
lenguaje funcional de CLIPS
Definir Funciones.
•La construcción deffunction permite definir nuevas funciones
(deffunction <nombre> "Comentario“
(<?parámetro>* [<$?parámetro-wildcard>])
<acción>*)
• La lista de parámetros puede ser variable, el parámetro wilcard incluye en una
lista el resto de parametros
• La función retorna la ´ultima expresión evaluada
Orientación a Objetos en CLIPS
Objetos.
•El lenguaje orientado a objetos de CLIPS permite representar la estructura del
conocimiento
•Se puede considerar como una extensión del constructor deftemplate que
pretende completar la posibilidad de usar frames como herramienta de
representación
• Podemos definir clases como en los lenguajes orientados a objetos con slots y
métodos predefinidos de CLIPS estableciendo una jerarquía entre ellos.
Orientación a Objetos en CLIPS
Objetos.
• La sentencia que permite definir una clase es defclass
• Para definir una clase hay que especificar:
1. El nombre de la clase
2. Una lista de sus superclases (heredara de estas sus slots y métodos)
3. Declaración de si es una clase abstracta o no (permitimos definir instancias)
4. Si permitimos que instancias de esta clase puedan vincularse a patrones en la LHS
de una regla
5. Definición de los slots de la clase (slot, multi-slot)
• Toda clase debe tener como mínimo una superclase
Orientación a Objetos en CLIPS
Ejemplo.
(defclass ser-vivo
(is-a USER)
(role abstract)
(pattern-match non-reactive)
(slot respira (default si)))
(defclass persona
(is-a ser-vivo)
(role concrete)
(pattern-match reactive)
(slot nombre))
Orientación a Objetos en CLIPS
Slots.
• La definición de un slot incluye un conjunto de propiedades, algunas son:
• (default ?DERIVE|?NONE|*)
• (default-dynamic *)
• (access read-write|read-only|initialize-only)
• (propagation inherit|no-inherit)
• (visibility public|private)
• (create-accessor ?NONE|read|write|read-write)
Orientación a Objetos en CLIPS
Instancias.
• make-instance crea instancias de una clase
• Al crear una instancia damos valor a sus slots , por ej:
(make-instance juan of persona (nombre "juan"))
• Podemos crear conjuntos de instancias con la sentencia definstances, por ej:
(definstances personas (juan of persona (nombre "juan")) (maria of persona
(nombre "maria")) )
Orientación a Objetos en CLIPS
Mensajes.
•Por defecto toda clase tiene definidos un conjunto de manejadores, por
ejemplo: init, delete, print
• Al definir create-accessor en un slot estamos creando dos mensajes, get-
nombre slot, put-nombre slot para acceder y modificar el valor del slot .
• El acceso a los slots de un objeto dentro de un manejador se realiza mediante
la variable ?self, poniendo : delante del nombre del slot, por ejemplo:
(defmessage-handler persona escribe-nombre () (printout t "Nombre:"
?self:nombre crlf))
Orientación a Objetos en CLIPS
Mensajes.
• El envıo de los mensajes se realiza mediante la sentencia send, el nombre de
la instancia se pone entre corchetes, por ejemplo:
(send [juan] escribe-nombre)
(send [juan] set-nombre "pedro")
• Los manejadores se pueden definir en cada clase, por lo tanto las subclases
pueden ejecutar los manejadores de sus superclases. Para los de tipo primary
estos se inician desde la clase mas especıfica, si se quiere ejecutar los de las
superclases se ha de usar la sentencia call-next-handler
• Debe haber siempre como m´ınimo un manejador primary para cada mensaje
Video Manejo de constructores en CLIPS

Más contenido relacionado

La actualidad más candente

Trabalho métodos de ordenação
Trabalho métodos de ordenaçãoTrabalho métodos de ordenação
Trabalho métodos de ordenaçãoDaiana de Ávila
 
POO - Unidade 2 (parte 2) - Classe de Associação, Agregação, Composição (ver...
POO - Unidade 2 (parte 2) - Classe de Associação, Agregação, Composição  (ver...POO - Unidade 2 (parte 2) - Classe de Associação, Agregação, Composição  (ver...
POO - Unidade 2 (parte 2) - Classe de Associação, Agregação, Composição (ver...Marcello Thiry
 
03 - Orientação a objetos e classes em C# v1.0
03 - Orientação a objetos e classes em C# v1.003 - Orientação a objetos e classes em C# v1.0
03 - Orientação a objetos e classes em C# v1.0César Augusto Pessôa
 
ConstraintLayout Compose 2021 Chicago Roboto
ConstraintLayout Compose 2021 Chicago Roboto ConstraintLayout Compose 2021 Chicago Roboto
ConstraintLayout Compose 2021 Chicago Roboto John Hoford
 
Caelum html-css-javascript-php
Caelum html-css-javascript-phpCaelum html-css-javascript-php
Caelum html-css-javascript-phpLindomar ...
 
Desvendando a linguagem JavaScript
Desvendando a linguagem JavaScriptDesvendando a linguagem JavaScript
Desvendando a linguagem JavaScriptRodrigo Branas
 
Apresentação programação orientada à objetos
Apresentação   programação orientada à objetosApresentação   programação orientada à objetos
Apresentação programação orientada à objetossoncino
 
Programação Orientada a objetos em Java
Programação Orientada a objetos em JavaProgramação Orientada a objetos em Java
Programação Orientada a objetos em JavaDenis L Presciliano
 
Banco de Dados II Aula 04 - MODELAGEM DE DADOS (Generalização e Especialização)
Banco de Dados II Aula 04 - MODELAGEM DE DADOS (Generalização e Especialização)Banco de Dados II Aula 04 - MODELAGEM DE DADOS (Generalização e Especialização)
Banco de Dados II Aula 04 - MODELAGEM DE DADOS (Generalização e Especialização)Leinylson Fontinele
 
Boas práticas no desenvolvimento de software
Boas práticas no desenvolvimento de softwareBoas práticas no desenvolvimento de software
Boas práticas no desenvolvimento de softwareFelipe
 
Banco de Dados II Aula 08 - Linguagem de Consulta SQL (Comandos DML)
Banco de Dados II Aula 08 - Linguagem de Consulta SQL (Comandos DML)Banco de Dados II Aula 08 - Linguagem de Consulta SQL (Comandos DML)
Banco de Dados II Aula 08 - Linguagem de Consulta SQL (Comandos DML)Leinylson Fontinele
 
Treinamento de SQL Básico
Treinamento de SQL BásicoTreinamento de SQL Básico
Treinamento de SQL BásicoIgor Alves
 
Pseudocódigo ou Portugol (Lógica de Programação)
Pseudocódigo ou Portugol (Lógica de Programação)Pseudocódigo ou Portugol (Lógica de Programação)
Pseudocódigo ou Portugol (Lógica de Programação)Gercélia Ramos
 
10 Java Script - Exemplos práticos
10 Java Script - Exemplos práticos10 Java Script - Exemplos práticos
10 Java Script - Exemplos práticosCentro Paula Souza
 

La actualidad más candente (20)

Trabalho métodos de ordenação
Trabalho métodos de ordenaçãoTrabalho métodos de ordenação
Trabalho métodos de ordenação
 
Aula10 sql-ddl
Aula10 sql-ddlAula10 sql-ddl
Aula10 sql-ddl
 
POO - Unidade 2 (parte 2) - Classe de Associação, Agregação, Composição (ver...
POO - Unidade 2 (parte 2) - Classe de Associação, Agregação, Composição  (ver...POO - Unidade 2 (parte 2) - Classe de Associação, Agregação, Composição  (ver...
POO - Unidade 2 (parte 2) - Classe de Associação, Agregação, Composição (ver...
 
03 - Orientação a objetos e classes em C# v1.0
03 - Orientação a objetos e classes em C# v1.003 - Orientação a objetos e classes em C# v1.0
03 - Orientação a objetos e classes em C# v1.0
 
ConstraintLayout Compose 2021 Chicago Roboto
ConstraintLayout Compose 2021 Chicago Roboto ConstraintLayout Compose 2021 Chicago Roboto
ConstraintLayout Compose 2021 Chicago Roboto
 
Caelum html-css-javascript-php
Caelum html-css-javascript-phpCaelum html-css-javascript-php
Caelum html-css-javascript-php
 
Desvendando a linguagem JavaScript
Desvendando a linguagem JavaScriptDesvendando a linguagem JavaScript
Desvendando a linguagem JavaScript
 
Introdução ao MySQL
Introdução ao MySQLIntrodução ao MySQL
Introdução ao MySQL
 
Alice 6
Alice 6Alice 6
Alice 6
 
Apresentação programação orientada à objetos
Apresentação   programação orientada à objetosApresentação   programação orientada à objetos
Apresentação programação orientada à objetos
 
Introdução a ciência de dados com Python
Introdução a ciência de dados com PythonIntrodução a ciência de dados com Python
Introdução a ciência de dados com Python
 
Programação Orientada a objetos em Java
Programação Orientada a objetos em JavaProgramação Orientada a objetos em Java
Programação Orientada a objetos em Java
 
Banco de Dados II Aula 04 - MODELAGEM DE DADOS (Generalização e Especialização)
Banco de Dados II Aula 04 - MODELAGEM DE DADOS (Generalização e Especialização)Banco de Dados II Aula 04 - MODELAGEM DE DADOS (Generalização e Especialização)
Banco de Dados II Aula 04 - MODELAGEM DE DADOS (Generalização e Especialização)
 
Boas práticas no desenvolvimento de software
Boas práticas no desenvolvimento de softwareBoas práticas no desenvolvimento de software
Boas práticas no desenvolvimento de software
 
Alice 5
Alice 5Alice 5
Alice 5
 
Banco de Dados II Aula 08 - Linguagem de Consulta SQL (Comandos DML)
Banco de Dados II Aula 08 - Linguagem de Consulta SQL (Comandos DML)Banco de Dados II Aula 08 - Linguagem de Consulta SQL (Comandos DML)
Banco de Dados II Aula 08 - Linguagem de Consulta SQL (Comandos DML)
 
Treinamento de SQL Básico
Treinamento de SQL BásicoTreinamento de SQL Básico
Treinamento de SQL Básico
 
Alice 4
Alice 4Alice 4
Alice 4
 
Pseudocódigo ou Portugol (Lógica de Programação)
Pseudocódigo ou Portugol (Lógica de Programação)Pseudocódigo ou Portugol (Lógica de Programação)
Pseudocódigo ou Portugol (Lógica de Programação)
 
10 Java Script - Exemplos práticos
10 Java Script - Exemplos práticos10 Java Script - Exemplos práticos
10 Java Script - Exemplos práticos
 

Similar a Software Clips

Similar a Software Clips (20)

Consideraciones pragmatica
Consideraciones pragmaticaConsideraciones pragmatica
Consideraciones pragmatica
 
Javaqert
JavaqertJavaqert
Javaqert
 
Javaqert
JavaqertJavaqert
Javaqert
 
Tema 1[1][1]
Tema 1[1][1]Tema 1[1][1]
Tema 1[1][1]
 
Programacion java
Programacion javaProgramacion java
Programacion java
 
Paradigmas programacion
Paradigmas programacionParadigmas programacion
Paradigmas programacion
 
Visual basic .NET
Visual basic .NETVisual basic .NET
Visual basic .NET
 
Caracteristicas de C Sharp
Caracteristicas de C SharpCaracteristicas de C Sharp
Caracteristicas de C Sharp
 
Programacion Funcional
Programacion FuncionalProgramacion Funcional
Programacion Funcional
 
Semana 2 Configuración entorno de desarrollo
Semana 2   Configuración entorno de desarrolloSemana 2   Configuración entorno de desarrollo
Semana 2 Configuración entorno de desarrollo
 
Unidad 1
Unidad 1Unidad 1
Unidad 1
 
Estructura basica de_un_programa_c_
Estructura basica de_un_programa_c_Estructura basica de_un_programa_c_
Estructura basica de_un_programa_c_
 
Estructura basica de_un_programa_c_ (1)
Estructura basica de_un_programa_c_ (1)Estructura basica de_un_programa_c_ (1)
Estructura basica de_un_programa_c_ (1)
 
Exposicion Akelos
Exposicion AkelosExposicion Akelos
Exposicion Akelos
 
S01.s1 - Lenguaje Java-1.pdf
S01.s1 - Lenguaje Java-1.pdfS01.s1 - Lenguaje Java-1.pdf
S01.s1 - Lenguaje Java-1.pdf
 
Estilos de programación y sus lenguajes
Estilos de programación y sus lenguajesEstilos de programación y sus lenguajes
Estilos de programación y sus lenguajes
 
Mi lenguaje de programación de preferencia
Mi lenguaje de programación de preferenciaMi lenguaje de programación de preferencia
Mi lenguaje de programación de preferencia
 
Introducción a Swift
Introducción a SwiftIntroducción a Swift
Introducción a Swift
 
Ddl
DdlDdl
Ddl
 
Patrones de diseño I
Patrones de diseño IPatrones de diseño I
Patrones de diseño I
 

Último

CENTROIDES Y MOMENTOS DE INERCIA DE AREAS PLANAS.pdf
CENTROIDES Y MOMENTOS DE INERCIA DE AREAS PLANAS.pdfCENTROIDES Y MOMENTOS DE INERCIA DE AREAS PLANAS.pdf
CENTROIDES Y MOMENTOS DE INERCIA DE AREAS PLANAS.pdfpaola110264
 
Fijaciones de balcones prefabricados de hormigón - RECENSE
Fijaciones de balcones prefabricados de hormigón - RECENSEFijaciones de balcones prefabricados de hormigón - RECENSE
Fijaciones de balcones prefabricados de hormigón - RECENSEANDECE
 
VIRUS FITOPATÓGENOS (GENERALIDADES EN PLANTAS)
VIRUS FITOPATÓGENOS (GENERALIDADES EN PLANTAS)VIRUS FITOPATÓGENOS (GENERALIDADES EN PLANTAS)
VIRUS FITOPATÓGENOS (GENERALIDADES EN PLANTAS)ssuser6958b11
 
CLASE 2 MUROS CARAVISTA EN CONCRETO Y UNIDAD DE ALBAÑILERIA
CLASE 2 MUROS CARAVISTA EN CONCRETO  Y UNIDAD DE ALBAÑILERIACLASE 2 MUROS CARAVISTA EN CONCRETO  Y UNIDAD DE ALBAÑILERIA
CLASE 2 MUROS CARAVISTA EN CONCRETO Y UNIDAD DE ALBAÑILERIAMayraOchoa35
 
Edificio residencial Tarsia de AEDAS Homes Granada
Edificio residencial Tarsia de AEDAS Homes GranadaEdificio residencial Tarsia de AEDAS Homes Granada
Edificio residencial Tarsia de AEDAS Homes GranadaANDECE
 
Flujo multifásico en tuberias de ex.pptx
Flujo multifásico en tuberias de ex.pptxFlujo multifásico en tuberias de ex.pptx
Flujo multifásico en tuberias de ex.pptxEduardoSnchezHernnde5
 
Fe_C_Tratamientos termicos_uap _3_.ppt
Fe_C_Tratamientos termicos_uap   _3_.pptFe_C_Tratamientos termicos_uap   _3_.ppt
Fe_C_Tratamientos termicos_uap _3_.pptVitobailon
 
Una estrategia de seguridad en la nube alineada al NIST
Una estrategia de seguridad en la nube alineada al NISTUna estrategia de seguridad en la nube alineada al NIST
Una estrategia de seguridad en la nube alineada al NISTFundación YOD YOD
 
Parámetros de Perforación y Voladura. para Plataformas
Parámetros de  Perforación y Voladura. para PlataformasParámetros de  Perforación y Voladura. para Plataformas
Parámetros de Perforación y Voladura. para PlataformasSegundo Silva Maguiña
 
CLASE - 01 de construcción 1 ingeniería civil
CLASE - 01 de construcción 1 ingeniería civilCLASE - 01 de construcción 1 ingeniería civil
CLASE - 01 de construcción 1 ingeniería civilDissneredwinPaivahua
 
AMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptx
AMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptxAMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptx
AMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptxLuisvila35
 
Uso y Manejo de Extintores Lucha contra incendios
Uso y Manejo de Extintores Lucha contra incendiosUso y Manejo de Extintores Lucha contra incendios
Uso y Manejo de Extintores Lucha contra incendioseduardochavezg1
 
Flujo potencial, conceptos básicos y ejemplos resueltos.
Flujo potencial, conceptos básicos y ejemplos resueltos.Flujo potencial, conceptos básicos y ejemplos resueltos.
Flujo potencial, conceptos básicos y ejemplos resueltos.ALEJANDROLEONGALICIA
 
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdfTAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdfAntonioGonzalezIzqui
 
Tiempos Predeterminados MOST para Estudio del Trabajo II
Tiempos Predeterminados MOST para Estudio del Trabajo IITiempos Predeterminados MOST para Estudio del Trabajo II
Tiempos Predeterminados MOST para Estudio del Trabajo IILauraFernandaValdovi
 
Historia de la Arquitectura II, 1era actividad..pdf
Historia de la Arquitectura II, 1era actividad..pdfHistoria de la Arquitectura II, 1era actividad..pdf
Historia de la Arquitectura II, 1era actividad..pdfIsbelRodrguez
 
3039_ftg_01Entregable 003_Matematica.pptx
3039_ftg_01Entregable 003_Matematica.pptx3039_ftg_01Entregable 003_Matematica.pptx
3039_ftg_01Entregable 003_Matematica.pptxJhordanGonzalo
 
SOUDAL: Soluciones de sellado, pegado y hermeticidad
SOUDAL: Soluciones de sellado, pegado y hermeticidadSOUDAL: Soluciones de sellado, pegado y hermeticidad
SOUDAL: Soluciones de sellado, pegado y hermeticidadANDECE
 
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESAIPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESAJAMESDIAZ55
 
Conservatorio de danza Kina Jiménez de Almería
Conservatorio de danza Kina Jiménez de AlmeríaConservatorio de danza Kina Jiménez de Almería
Conservatorio de danza Kina Jiménez de AlmeríaANDECE
 

Último (20)

CENTROIDES Y MOMENTOS DE INERCIA DE AREAS PLANAS.pdf
CENTROIDES Y MOMENTOS DE INERCIA DE AREAS PLANAS.pdfCENTROIDES Y MOMENTOS DE INERCIA DE AREAS PLANAS.pdf
CENTROIDES Y MOMENTOS DE INERCIA DE AREAS PLANAS.pdf
 
Fijaciones de balcones prefabricados de hormigón - RECENSE
Fijaciones de balcones prefabricados de hormigón - RECENSEFijaciones de balcones prefabricados de hormigón - RECENSE
Fijaciones de balcones prefabricados de hormigón - RECENSE
 
VIRUS FITOPATÓGENOS (GENERALIDADES EN PLANTAS)
VIRUS FITOPATÓGENOS (GENERALIDADES EN PLANTAS)VIRUS FITOPATÓGENOS (GENERALIDADES EN PLANTAS)
VIRUS FITOPATÓGENOS (GENERALIDADES EN PLANTAS)
 
CLASE 2 MUROS CARAVISTA EN CONCRETO Y UNIDAD DE ALBAÑILERIA
CLASE 2 MUROS CARAVISTA EN CONCRETO  Y UNIDAD DE ALBAÑILERIACLASE 2 MUROS CARAVISTA EN CONCRETO  Y UNIDAD DE ALBAÑILERIA
CLASE 2 MUROS CARAVISTA EN CONCRETO Y UNIDAD DE ALBAÑILERIA
 
Edificio residencial Tarsia de AEDAS Homes Granada
Edificio residencial Tarsia de AEDAS Homes GranadaEdificio residencial Tarsia de AEDAS Homes Granada
Edificio residencial Tarsia de AEDAS Homes Granada
 
Flujo multifásico en tuberias de ex.pptx
Flujo multifásico en tuberias de ex.pptxFlujo multifásico en tuberias de ex.pptx
Flujo multifásico en tuberias de ex.pptx
 
Fe_C_Tratamientos termicos_uap _3_.ppt
Fe_C_Tratamientos termicos_uap   _3_.pptFe_C_Tratamientos termicos_uap   _3_.ppt
Fe_C_Tratamientos termicos_uap _3_.ppt
 
Una estrategia de seguridad en la nube alineada al NIST
Una estrategia de seguridad en la nube alineada al NISTUna estrategia de seguridad en la nube alineada al NIST
Una estrategia de seguridad en la nube alineada al NIST
 
Parámetros de Perforación y Voladura. para Plataformas
Parámetros de  Perforación y Voladura. para PlataformasParámetros de  Perforación y Voladura. para Plataformas
Parámetros de Perforación y Voladura. para Plataformas
 
CLASE - 01 de construcción 1 ingeniería civil
CLASE - 01 de construcción 1 ingeniería civilCLASE - 01 de construcción 1 ingeniería civil
CLASE - 01 de construcción 1 ingeniería civil
 
AMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptx
AMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptxAMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptx
AMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptx
 
Uso y Manejo de Extintores Lucha contra incendios
Uso y Manejo de Extintores Lucha contra incendiosUso y Manejo de Extintores Lucha contra incendios
Uso y Manejo de Extintores Lucha contra incendios
 
Flujo potencial, conceptos básicos y ejemplos resueltos.
Flujo potencial, conceptos básicos y ejemplos resueltos.Flujo potencial, conceptos básicos y ejemplos resueltos.
Flujo potencial, conceptos básicos y ejemplos resueltos.
 
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdfTAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
 
Tiempos Predeterminados MOST para Estudio del Trabajo II
Tiempos Predeterminados MOST para Estudio del Trabajo IITiempos Predeterminados MOST para Estudio del Trabajo II
Tiempos Predeterminados MOST para Estudio del Trabajo II
 
Historia de la Arquitectura II, 1era actividad..pdf
Historia de la Arquitectura II, 1era actividad..pdfHistoria de la Arquitectura II, 1era actividad..pdf
Historia de la Arquitectura II, 1era actividad..pdf
 
3039_ftg_01Entregable 003_Matematica.pptx
3039_ftg_01Entregable 003_Matematica.pptx3039_ftg_01Entregable 003_Matematica.pptx
3039_ftg_01Entregable 003_Matematica.pptx
 
SOUDAL: Soluciones de sellado, pegado y hermeticidad
SOUDAL: Soluciones de sellado, pegado y hermeticidadSOUDAL: Soluciones de sellado, pegado y hermeticidad
SOUDAL: Soluciones de sellado, pegado y hermeticidad
 
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESAIPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
 
Conservatorio de danza Kina Jiménez de Almería
Conservatorio de danza Kina Jiménez de AlmeríaConservatorio de danza Kina Jiménez de Almería
Conservatorio de danza Kina Jiménez de Almería
 

Software Clips

  • 1. Clips Sistemas Expertos By Degly Mauricio Garcia Rivas No de Carné : 092-12-473.
  • 2. Definición • CLIPS es una herramienta que provee un entorno de desarrollo para la producción y ejecución de sistemas expertos. Fue creado a partir de 1984, en el Lyndon B. Johnson Space Center de la NASA. Los fondos cesaron a principios de los años 1990, y hubo un mandato de la NASA para comprar software comercial. • CLIPS es un acrónimo de C Language Integrated Production System (Sistema de Producción Integrado en Lenguaje C). En la actualidad, entre los paradigmas de programación que soporta CLIPS se encuentran la Programación lógica, la Programación imperativa y la Programación Orientada a Objetos.
  • 3. Características de CLIPS • Representación de Conocimientos. • CLIPS permite manejar una amplia variedad de conocimiento, soportando tres paradigmas de programación: el declarativo, el imperativo, y el orientado a objetos. La programación lógica basada en reglas permite que el conocimiento sea representado como reglas heurísticas que especifican las acciones a ser ejecutadas dada una situación. • La POO permite modelar sistemas complejos como componentes modulares. La programación imperativa permite ejecutar algoritmos de la misma manera que en C, Java, LISP y otros lenguajes.
  • 4. Características de CLIPS • Portabilidad. • CLIPS fue escrito en C con el fin de hacerlo más portable y rápido, y ha sido instalado en diversos sistemas operativos (Windows 95/98/NT, MacOS X, Unix) sin ser necesario modificar su código fuente. CLIPS puede ser ejecutado en cualquier sistema con un compilador ANSI de C, o un compilador de C++. El código fuente de CLIPS puede ser modificado en caso que el usuario lo considere necesario, con el fin de agregar o quitar funcionalidades..
  • 5. Características de CLIPS • Desarrollo Interactivo. • La versión estándar de CLIPS provee un ambiente de desarrollo interactivo y basado en texto; este incluye herramientas para la depuración, ayuda en línea, y un editor integrado. Las interfaces de este ambiente tienen menús, editores y ventanas que han sido desarrollados para MacOS, Windows 95/98/NT, X Window, entre otros..
  • 6. lenguaje de reglas de CLIPS Hechos. Los dos elementos que permiten representar problemas utilizando reglas de producción son los hechos y las reglas. • Los hechos en CLIPS pueden ser de dos tipos ordered facts y deftemplate facts • Los Ordered Facts tienen formato libre, por lo tanto no tienen una estructura predefinida, siguen el esquema: (relacion p1 p2 ... pn)
  • 7. lenguaje de reglas de CLIPS Deftemplates. • Los deftemplate facts tienen una estructura predefinida, podr´ıan asimilarse a representaciones al estilo de los frames. • Definimos una serie de campos (slots). Cada campo puede tener una serie de restricciones como tipo, cardinalidad y un valor por defecto (constante o función para calcularlo) (deftemplate nombre-template "comentario" (slot nombre-slot) (multislot nombre-slot))
  • 8. lenguaje de reglas de CLIPS Creación de Hechos. (assert (padre pepe juan)) (assert (persona (nombre "pedro") (edad 25))) (deffacts mis-hechos (casa roja) (pelota verde) (persona (nombre "luis") (edad 33)))
  • 9. lenguaje de reglas de CLIPS Reglas. Las reglas en CLIPS están formadas por: • Una parte izquierda (LHS) que define las condiciones a cumplir • Una parte derecha (RHS) que define las acciones a realizar • Sintaxis: (defrule nombre-regla "comentario" (condicion-1) (condicion-2) ... => (accion-1) (accion-2) ...)
  • 10. lenguaje de reglas de CLIPS LHS. Los patrones indican que tipo de hechos deben instanciar las reglas, estos se establecen a traves de restricciones sobre variables o valores constantes • Estas restricciones se pueden combinar mediante conectivas logicas ~ (no), & (y) y | (o). • Patrones constantes, con variables o con wildcards: se instancian directamente con hechos en la base de hechos. • Expresiones not, and, or, exist y forall con patrones.
  • 11. lenguaje de reglas de CLIPS Módulos. Las reglas de CLIPS se organizan en módulos • Permiten estructurar el conocimiento y poder focalizar la ejecución de las reglas según su objetivo • La definición de un módulo se realiza mediante la construcción (defmodule "comentario" ) • Nada de lo definido en un módulos es visible salvo que lo exportemos • Para utilizar construcciones de otro módulo también tenemos que importarlas explícitamente • Existe un módulo por defecto llamado MAIN al que pertenece todo lo no definido en otro modulo
  • 12. lenguaje de reglas de CLIPS Foco. •Podemos restringir que módulos se usan para la ejecución de reglas mediante la sentencia (focus *) • Esta sentencia se puede incluir en la parte derecha de una regla para poder cambiar explícitamente de modulo • Se puede hacer que la ejecución se focalice en el modulo de la ´ultima regla ejecutada declarando la propiedad auto-focus en una regla, por ejemplo: (defrule JUAN::mi-regla (declare (auto-focus TRUE)) (persona (nombre juan))
  • 13. lenguaje funcional de CLIPS Lenguajes. CLIPS incluye un lenguaje de programación funcional • Este permite definir nuevas funciones o programar las acciones a realizar en la parte derecha de las reglas • Toda sentencia o estructura de control es una función que recibe unos parametros y retorna un resultado (paradigma funcional)
  • 14. lenguaje funcional de CLIPS Sentencias. Asignación a una variable, retorna el valor asignado (bind ) <var> <valor>) • Sentencia alternativa, retorna el valor de la ultima acción evaluada (if <exp> then <acción>* [else <acción> *]) • Bucle condicional, retorna falso, excepto si hay una sentencia de retorno que rompa el bucle (while <exp> do <acción>*) • Bucle sobre un rango de valores, retorna falso, excepto si hay una sentencia de retorno (loop-for-count (<var> <v-i> <v-f> ) do <acción> *) )
  • 15. lenguaje funcional de CLIPS Sentencias. • Ejecuta un conjunto de sentencias secuencialmente, retorna el valor de la ultima. (progn <acción>*) • Romper la ejecución de la estructura de control retornando el valor de la expresión. (return <expr>) • Romper la ejecución de una estructura de control (break) • Estructura alternativa caso, cada case hace una comparación con el valor evaluado. Retorna la ultima expresión evaluada o falso si ninguna sentencia case se cumple (switch <expr> (case (<comp>) then <acción> *)* [(default *)])
  • 16. lenguaje funcional de CLIPS Definir Funciones. •La construcción deffunction permite definir nuevas funciones (deffunction <nombre> "Comentario“ (<?parámetro>* [<$?parámetro-wildcard>]) <acción>*) • La lista de parámetros puede ser variable, el parámetro wilcard incluye en una lista el resto de parametros • La función retorna la ´ultima expresión evaluada
  • 17. Orientación a Objetos en CLIPS Objetos. •El lenguaje orientado a objetos de CLIPS permite representar la estructura del conocimiento •Se puede considerar como una extensión del constructor deftemplate que pretende completar la posibilidad de usar frames como herramienta de representación • Podemos definir clases como en los lenguajes orientados a objetos con slots y métodos predefinidos de CLIPS estableciendo una jerarquía entre ellos.
  • 18. Orientación a Objetos en CLIPS Objetos. • La sentencia que permite definir una clase es defclass • Para definir una clase hay que especificar: 1. El nombre de la clase 2. Una lista de sus superclases (heredara de estas sus slots y métodos) 3. Declaración de si es una clase abstracta o no (permitimos definir instancias) 4. Si permitimos que instancias de esta clase puedan vincularse a patrones en la LHS de una regla 5. Definición de los slots de la clase (slot, multi-slot) • Toda clase debe tener como mínimo una superclase
  • 19. Orientación a Objetos en CLIPS Ejemplo. (defclass ser-vivo (is-a USER) (role abstract) (pattern-match non-reactive) (slot respira (default si))) (defclass persona (is-a ser-vivo) (role concrete) (pattern-match reactive) (slot nombre))
  • 20. Orientación a Objetos en CLIPS Slots. • La definición de un slot incluye un conjunto de propiedades, algunas son: • (default ?DERIVE|?NONE|*) • (default-dynamic *) • (access read-write|read-only|initialize-only) • (propagation inherit|no-inherit) • (visibility public|private) • (create-accessor ?NONE|read|write|read-write)
  • 21. Orientación a Objetos en CLIPS Instancias. • make-instance crea instancias de una clase • Al crear una instancia damos valor a sus slots , por ej: (make-instance juan of persona (nombre "juan")) • Podemos crear conjuntos de instancias con la sentencia definstances, por ej: (definstances personas (juan of persona (nombre "juan")) (maria of persona (nombre "maria")) )
  • 22. Orientación a Objetos en CLIPS Mensajes. •Por defecto toda clase tiene definidos un conjunto de manejadores, por ejemplo: init, delete, print • Al definir create-accessor en un slot estamos creando dos mensajes, get- nombre slot, put-nombre slot para acceder y modificar el valor del slot . • El acceso a los slots de un objeto dentro de un manejador se realiza mediante la variable ?self, poniendo : delante del nombre del slot, por ejemplo: (defmessage-handler persona escribe-nombre () (printout t "Nombre:" ?self:nombre crlf))
  • 23. Orientación a Objetos en CLIPS Mensajes. • El envıo de los mensajes se realiza mediante la sentencia send, el nombre de la instancia se pone entre corchetes, por ejemplo: (send [juan] escribe-nombre) (send [juan] set-nombre "pedro") • Los manejadores se pueden definir en cada clase, por lo tanto las subclases pueden ejecutar los manejadores de sus superclases. Para los de tipo primary estos se inician desde la clase mas especıfica, si se quiere ejecutar los de las superclases se ha de usar la sentencia call-next-handler • Debe haber siempre como m´ınimo un manejador primary para cada mensaje
  • 24. Video Manejo de constructores en CLIPS