**IAIC 2024-25**
Códigos y Ejemplos
En esta página puedes encontrar los archivos correspondientes a las librerías, ejemplos de código y prácticas del curso.
!!!warn:Importante...
El objetivo de las librerías desarrolladas para el curso es el de facilitar el acceso a los algoritmos y técnicas que se explican en los diversos temas, por lo que es posible (y probable) que contengan errores, no contemplen todas las casuísticas, y no ofrezcan los niveles de calidad y optimización necesarios para ser usados en un entorno real de resolución de problemas.
En todo caso, el carácter didáctico de los códigos implementados justifica la opción de mantener un estilo que favorezca la comprensión al precio de perder eficacia y completitud.
!!!side:1
Basta pulsar con el botón derecho y seleccionar `Guardar enlace como...`.
!!!note:Librerías vs. Paquetes...
Algunas librerías necesitan paquetes adicionales de la distribución de Julia que deben ser instalados individualmente. En cada tema se indican las necesidades específicas para poder ejecutar las librerías, los ejemplos y realizar las prácticas correspondientes.
Las librerías propias del curso se deben cargar antes de ser usadas, y bastará que estén en la misma carpeta que los códigos de ejemplo y prácticas que las usan. Según las necesidades de las soluciones presentadas en ellos, también pueden necesitar de paquetes adicionales para ejecutarse (un ejemplo típico es el paquete `Plots`, que no es necesario para ninguna librería, pero se usa en muchas prácticas para reprensentar visualmente las soluciones).
Las librerías se descargan por medio de los enlaces que se ofrecen en esta página $^1$, mientras que los paquetes se instalan por medio del sistema de mantenimiento de paquetes de Julia, `Pkg` (ver nota $^2$ más abajo). La instalación de los paquetes es necesaria solo la primera vez que se usa en un entorno (ver [Paquetes y Entornos en Julia](http://127.0.0.1:5500/Practicas/PkgEnv.md.html) para más información).
*************************************
* *
* .---------. using *
* +Prácticas+--------------. *
* '-----+---' | *
* | | *
* |include | *
* v v *
* .----+----. .---+----. *
* |Librerías+-------->|Paquetes+ *
* '---------' using '--------' *
*************************************
!!!ejemplo:Sobre los Ejercicios Propuestos...
La mayoría de los [Ejercicios Propuestos](..\Compl\Ejercicios) en la relación general del curso pueden ser resueltos usando distintas técnicas y diversas representaciones, por tanto, pueden servir como ejercicios complementarios de prácticas a lo largo de todo el curso y volveremos comúnmente a ellos (por ejemplo, el **Problema de la $N$ Reinas**).
!!!side:2
```Julia
using Pkg
Pkg.add("Satisfiability")
Pkg.add("ConstraintSolver")
Pkg.add("Printf")
Pkg.add("JuMP")
Pkg.add("Plots")
Pkg.add("GraphRecipes")
Pkg.add("DataStructures")
Pkg.add("Random")
```
!!!side:3
Descomprime el ZIP en una carpeta. Junto a los Julia notebooks, lLeva incluidos los ficheros `Manifest.toml` y `Project.toml` que indican qué librerías deben instalarse. La primer celda de cada uno de los notebooks ejecuta las intrucciones para preparar el entorno de ejecución adecuado (son muchos paquetes de Julia, así que la primera vez que se ejecute una de estas celdas puede tardar en instalar todo lo necesario; en sucesivas ejecuciones solo se activará este entorno). Una vez instalado el entorno, basta ejecutar cada celda como es habitual en los notebooks de Jupyter.
Tema | Paquetes
Adicionales $^2$| Librería
IAIC $24$-$25$ | Ejemplos
Ejercicios
:---------------------------------|:----------------------------|:-----------------------------:|:----------------------:
**➀ Representación, Búsqueda y Optimización**| | |
$1$. Lógica |`Satisfiability` |`Logic.jl` |`Logica.jl`
$2$. Satisfacción de Restricciones|`ConstraintSolver`
`Printf, JuMP`| |`CSP.jl`
$3$. Espacios de Estados |`Plots`
`DataStructures` |`Search.jl`|`Busquedas.jl`
$4$. Optimización |`Plots, Random`
`GraphRecipes`|`Opt.jl` |`Optimizacion.jl`
$5$. Incertidumbre | |`MCTS.jl`|`Incertidumbre.jl`
**➁ Machine Learning** | | |
$1$. Fundamentos de ML | | |
$1$. Flujo Trabajo ML | Leer nota $^3$ | |`TutorialML.zip`
$2$. Redes Neuronales |`Random, CSV, MLJ`
`DataFrames, Plots`|`NN.jl`|`Redes.jl`
$3$. Clustering |`DataFrames`
`CSV, Plots`| |`Clust.jl`
$4$. Árboles de Decisión |`DataFrames, CSV`
`StatsBase, Random`
`Plots, Statistics`|`ID3.jl`|`Decision.jl`