Fernando Sancho Caparrini
  • Inicio
  • Docencia
    • Inteligencia Artificial 2020-21
    • Lógica Informática 2020-21
    • Trabajos Fin de Grado Dirigidos
    • Trabajos Fin de Máster Dirigidos
    • Docencia Actual
    • Docencia Anterior
    • Estalmat - Sesiones NetLogo
    • Inteligencia Artificial 2019-20
    • Lógica Informática 2019-20
    • ICSR - MDSBD 2019-20
  • Cursos
    • Inteligencia Artificial
    • Teoría de la Computabilidad
    • Programación con NetLogo
    • Modelado y Análisis de la Complejidad
    • Deep Learning
  • Investigación
    • Sistemas Complejos
    • Aprendizaje Automático
    • Modelado Cultural
    • Teoría Algorítmica de la Información
    • Computación Natural
    • Seminario (I+A)A
    • Tesis Doctorales Dirigidas
  • Proyectos
    • Participación en Proyectos de Investigación
    • CulturePlex Lab
    • Análisis del Patrimonio Cultural Ecuatoriano
    • Hispanic Baroque Project
    • Modelos de NetLogo
  • Publicaciones
    • Artículos
    • Comunicaciones
    • Libros
    • Otros
  •  
  • Últimas Entradas
    • Sistemas Deductivos Proposicionales
    • Formas Prenex, de Skolem y Teorema de...
    • Formas Normales, Cláusulas y...
    • Construir un buscador desde cero
    • Tableros Semánticos en Lógica de...
    • Tableros Semánticos en Lógica...
    • Sintaxis y Semántica de la Lógica...
    • Sintaxis y Semántica de la Lógica...
    • Lua: La Elegancia de un Buen Diseño
    • NetLogo Wishlist
    • Variational AutoEncoder
    • Algoritmos de Clustering
    • Planificación: Fundamentos (y NetLogo)
    • NetLogo: Grafos
    • Lógica de Primer Orden: una...
    • Introducción a la Lógica
    • Brevísima historia de la Lógica
    • Breve Historia de la Inteligencia...
    • Monte Carlo Tree Search in NetLogo
    • PageRank y el Surfista Aleatorio
  • Por Temas
    • Inteligencia Artificial
      • Construir un buscador desde cero
      • Lua: La Elegancia de un Buen Diseño
      • Variational AutoEncoder
      • Algoritmos de Clustering
      • Planificación: Fundamentos (y NetLogo)
      • Lógica de Primer Orden: una...
      • Breve Historia de la Inteligencia...
      • Monte Carlo Tree Search in NetLogo
      • PageRank y el Surfista Aleatorio
      • Teoría de la Probabilidad: Lo Mínimo
      • Medir la eficacia de un aprendizaje
      • Metaheurísticas para Búsqueda y...
      • Metaheurísticas para Búsqueda y...
      • Descubrimiento de Conocimiento en...
      • Modelado de Sistemas Dinámicos con...
      • Algoritmo de Monte Carlo aplicado a...
      • Resolviendo Problemas de...
      • Nuevo Bloque de Cursos
      • Introducción a la Lógica Difusa
      • Simulated Annealing in NetLogo
      • Búsquedas Estocásticas: Templado...
      • Introducción a Prover9 y Mace4
      • Representación del Conocimiento
      • Fundamentos Matemáticos del Machine...
      • Entrenamiento de Redes Neuronales:...
      • Usando Patches de NetLogo para...
      • Problemas de Satisfacción de...
      • Self Organizing Maps (SOM) in NetLogo
      • Artificial Neural Networks in NetLogo
      • Local Search Algorithms in NetLogo
      • A General A* Solver in NetLogo
      • A general BFS Solver in NetLogo
      • Curso acelerado de Lógica Proposicional
      • Aprendizaje por refuerzo: algoritmo Q...
      • Minimax: Juegos con adversario
      • Métodos combinados de aprendizaje
      • Aprendizaje Inductivo: Árboles de...
      • Sistemas Basados en Reglas
      • Análisis Formal de Conceptos
      • Mapas Auto-Organizados
      • Aprendizaje Supervisado y No Supervisado
      • Introducción al Aprendizaje Automático
      • Optimización en el espacio de...
      • Redes Neuronales: una visión...
      • Algoritmos de hormigas y el problema...
      • PSO: Optimización por enjambres de...
      • Fractales
      • Autómatas Celulares
      • Introducción a las redes complejas
      • Sistemas Complejos, Sistemas...
      • Sistemas Colectivos. Inteligencia...
      • Algoritmos Genéticos
      • Búsquedas Locales
      • Búsquedas Informadas
      • Búsquedas No Informadas
      • Problemas de Búsqueda y Planificación
      • Sistemas Multiagente y Simulación
      • El modelado de problemas
      • Sobre la Inteligencia Artificial...
    • Programación Funcional
      • Lua: La Elegancia de un Buen Diseño
      • ¿Se puede liberar la programación...
      • Cómo se demuestra que un programa es...
      • Programación Funcional Reactiva
      • Haskell: el Lenguaje Funcional
      • Programación Funcional: Una mirada...
      • Refactorización Funcional
    • Modelos NetLogo
      • Construir un buscador desde cero
      • NetLogo Wishlist
      • Algoritmos de Clustering
      • Planificación: Fundamentos (y NetLogo)
      • NetLogo: Grafos
      • Monte Carlo Tree Search in NetLogo
      • Interacción con el ratón
      • Algoritmo de Monte Carlo aplicado a...
      • Nuevo Bloque de Cursos
      • Simulated Annealing in NetLogo
      • Complex Networks Toolbox (NetLogo)
      • NetLogo: Interfaz Gráfica
      • NetLogo: Procedimientos
      • NetLogo: Estructuras del lenguaje
      • Usando Patches de NetLogo para...
      • NetLogo: Fundamentos
      • Cuadernos del CIS: Simulación basada...
      • NetLogo: Listas
      • NetLogo: Experimentos
      • Programming Mathematical Models ......
    • Lógica
      • Sistemas Deductivos Proposicionales
      • Formas Prenex, de Skolem y Teorema de...
      • Formas Normales, Cláusulas y...
      • Tableros Semánticos en Lógica de...
      • Tableros Semánticos en Lógica...
      • Sintaxis y Semántica de la Lógica...
      • Sintaxis y Semántica de la Lógica...
    • Opinión
      • NetLogo Wishlist
      • No me enseñes más postales ... dame...
      • ¿Qué Hay Detrás de los Dobles Grados?
      • La Tiranía de las Publicaciones
      • Emprendimiento descabezado
      • ¿Puede existir Matemática sin...
      • Un secreto de pasillo
      • Opinión 141 de Doron Zeilberger
      • Sobre el modelado usando ecuaciones...
      • El auge de un joven paradigma...
      • «Estamos entregando nuestra calidad...
      • The Crisis in Higher Education
      • El imparable ascenso de la educación...
      • Cuando la religión pisa el césped...
      • Algunos comentarios sobre la...
      • ¿Por qué falla el capitalismo?
      • Objetivos de i-Math
  •  
  • Twitter
Buscar palabras usadas en entradas y páginas de este sitio

Temas

agentes, algoritmos, aprendizaje automático, busqueda, complejidad, inteligencia artificial, investigación, lógica, machine learning, matemáticas, modelado, netlogo, opinión, simulacion, universidad(todas)

Libro de NetLogo

En inglés y español, el libro para aprender a programar y modelar con NetLogo.
Un recorrido a lo largo de 16 capítulos que va desde los fundamentos básicos de programación hasta los usos más avanzados.
Con ejercicios propuestos en cada capítulo y ejemplos completamente resueltos.

Enlaces

Computación

  • GMSC-UCE
  • A.I.T.

Programación

  • NetLogo
  • Elm
  • Haskell
  • Julia

Machine Learning

  • GIDTEC
  • Datrik Intel.
  • Cambrian Intel.

Humanidades Digitales

  • CulturePlex
  • BaroqueArt
  • ExpoFinder

Grupos de C.C.I.A.

  • R.G.N.C.
  • Lóg. Computacional
  • Lóg. Matemática

Docencia: Estalmat - Sesiones NetLogo

Modificado el 8 de Noviembre de 2019
  • Descarga de NetLogo
  • Elementos básicos del lenguaje
  • Ejercicios Sesión I
  • Ejercicios Sesión II

La información que hay en esta página está orientada a los alumnos de 1º y 2º de Estalmat Sevilla, donde se imparten algunas sesiones dedicadas a iniciación a la programación usando LOGO (concretamente, en las sesiones usamos un derivado suyo llamado NetLogo). A lo largo de estas clases se usa un conjunto minimalista de instrucciones de este lenguaje con el que los alumnos pueden abordar distintos tipos de problemas y paradigmas de programación y que se especifican más abajo.

Descarga de NetLogo

El programa NetLogo se puede descargar gratuitamente de esta página:

https://ccl.northwestern.edu/netlogo/ 

Elementos básicos del lenguaje

Y a continuación mostramos las instrucciones básicas con las que trabajaremos en las sesiones para manejar tortugas:

Crear Tortugas:  crt n
Mover: 
(avanzar/retroceder)
fd / bk distancia
Girar (izq/dcha):   lt / rt angulo
Bajar/subir lapiz:   pd / pu
Acciones:   to nombre-acción [parámetros]
   … instrucciones
end
Funciones:  to-report nombre-función [parámetros]
  … instrucciones
end
Repetir acciones: repeat num-veces
   [
    …acciones
   ]
Pedir acciones 
a las tortugas:
 
ask turtles
   [
     …acciones
   ]
Decisiones:  if condicion [acciones si SÍ]
ifelse condicion
   [acciones si SÍ]
   [acciones si NO]
Borrar todo:  ca
Operaciones airtméticas:  + - * /  
 n1 + n2, n1 - n2, ...

Listas

Comandos Básicos sobre Listas:

Crear listas:  list 1 2 = [1 2]
(list 1 2 3) = [1 2 3]
Primer elemento:  first [1 2 3] = 1
Cola but-first [1 2 3] = [2 3] (bf
Último elemento:  last [1 2 3] = 3
Inicio:  but-last [1 2 3] = [1 2] (bl)
Poner al principio:  fput “a” [1 2 3] = [“a” 1 2 3]
Poner al final: lput “a” [1 2 3] = [1 2 3 “a”]
Acceder elemento:  item 0 [1 2 3] = 1
item 2 [1 2 3] = 3
Reemplazar elemento:  replace-item 1 [1 2 3] “a” = [1 “a” 3]
Sublista:  sublist [“a” “b” “c” “d” “e”] 1 3 = [“b” “c”]

Ejercicios Sesión I

Algunos ejercicios que se pueden hacer fácilmente con una tortuga y los fundamentos del lenguaje:

  1. Preparando el mundo para dibujar con tortugas.
  2. Dibujo de polígonos:
    1. Directamente.
    2. Definiendo procedimientos.
    3. Con parámetros de entrada.
  3. Dibujo de circunferencias y arcos de circunferencia.
  4. Ejercicios de composición de procedimientos (ver propuestas más abajo).
  5. Introducción a la recursión.
  6. Ejercicios de cálculo numérico sencillo: máximo, soluciones de una parábola, primalidad,…
  7. Recursión numérica aplicada al cálculo de funciones numéricas sencillas: suma, factorial,…

Ejercicios Sesión II

  • 1) Haz un procedimiento que haga que todos los patches cambien a un color. Conceptos explicados:

ask
patches
pcolor
constantes de colores
set

  • 2) Los patches cambian a B/N dependiendo de la posición que ocupan. Conceptos explicados:

with [...]
pxcor, pycor
Se propone jugar con combinaciones y operaciones matemáticas con las coordenadas:
mod, +

  • 3) Haz un procedimiento que haga que todos los patches cambien a B/N aleatoriamente. Conceptos explicados:

one-of
listas constantes

  • 4) Ahora que los patches cambien a B/N según la cantidad de vecinos que tienen de cada color. Conceptos explicados:

let
count
neighbors (topología del toro)
if, ifelse

  • 5) Introducir la ejecución por pasos. Conceptos explicados:
    • Poner el modo de ejecución en `on ticks`.
    • Añadir `tick` al procedimiento anterior.
    • Poner un procedimiento como `setup`.
    • Añadir botones para facilitar la ejecución.
    • Explicar el botón `forever`.
  • 6) Igual, pero ahora haciendo uso de listas de color de cambio. Conceptos explicados:

item

  • 7) Crear listas de valores. Conceptos explicados:

n-values

  • 8) Utilizando las listas, vamos a hacer el mismo procedimiento, pero ahora haciendo uso de una lista (regla) generada al azar.
  • 9) Variables globales. Hasta ahora la regla de cambio es distinta en cada ejecución, así que vamos a introducir el concepto de variable global. Conceptos explicados:

globals [ ... ]

Se pasa la generación de la regla a una función propia: `crea-regla`.

  • 10) Hablar del Paralelismo. En realidad, los patches ejecutan las cosas secuencialmente... vamos a implementar un comportamiento que sea igual que el paralelismo. Añadir nuevas propiedades a los patches. Conceptos explicados:

patches-own [ ... ]

  • 11) Añadir el centro como parte del vecindario.
  • 12) Enriquecer el interfaz de usuario. Añadir un monitor para mostrar la regla-global. Añadir un plot para contar cuántos hay negros.
  • 13) Las reglas dependen de la situación del patch. Modificar todo para dar un comportamiento distinto dependiendo de si el patch está vivo o muerto:

to Reglas-GoL
  set regla-negros [white white black black white white white white white]
  set regla-blancos [white white white black white white white white white]
end

  • 14) Autómatas con más colores (estados).
  • 15) Saltar a 1D. Explicar la notación 0/1, y las reglas numeradas.

Lo más leído

1. Aprendizaje Supervisado y No Supervisado (58120 vistas)
2. Aprendizaje Inductivo: Árboles de Decisión (32647 vistas)
3. Redes Neuronales: una visión superficial (32364 vistas)
4. Introducción a la Lógica Difusa (31289 vistas)
5. Algoritmos de hormigas y el problema del viajante (30237 vistas)
6. Introducción al Aprendizaje Automático (26443 vistas)
7. Sistemas Complejos, Sistemas Dinámicos y Redes Complejas (23097 vistas)
8. Entrenamiento de Redes Neuronales: mejorando el Gradiente Descendente (22830 vistas)
9. Una introducción a Prolog (21454 vistas)
10. PSO: Optimización por enjambres de partículas (21309 vistas)

Contacto

Dpto. Ciencias de la Computación e Inteligencia Artificial, Universidad de Sevilla.

Dirección:E.T.S.I.I.
Av. Reina Mercedes, s/n. 41012, Sevilla

Tfno: (+ 34) 954556979,
Fax: (+34) 954556599
Despacho: H1.48
e-mail: fsancho en us(.)es

Magazine Theme for PivotX by Windmill Web Work in 2009, released under the Simple Public License.