Bibliografía opcional — Clase 1

Estas lecturas son opcionales: no constituyen un requisito para las próximas clases ni serán evaluadas directamente. Se incluyen para quienes quieran profundizar en la formulación de problemas de optimización, la evaluación de caja negra y el uso de tipos para representar conceptos e invariantes del dominio.

No es necesario leerlas todas. La ruta corta recomendada reúne tres recursos que complementan las ideas principales de la clase desde el modelado matemático, la optimización de caja negra y el diseño de software.

Ruta corta recomendada

1. Del problema informal al modelo de optimización

Referencia Libro
Talbi, E.-G. (2009). Metaheuristics: From design to implementation. Wiley.
Puede requerir acceso institucional

Qué revisar

Capítulo 1, en particular las secciones 1.1–1.3 sobre modelos y métodos de optimización.

Pregunta guía

¿Qué partes de una implementación deberían permanecer iguales al sustituir un algoritmo de búsqueda por otro?

¿De qué trata?

Presenta los elementos utilizados para describir formalmente un problema de optimización y distingue esa descripción de los métodos usados para buscar soluciones.

¿Por qué es pertinente para el curso?

Complementa la distinción entre el problema y el algoritmo de búsqueda: representación, espacio, objetivo, restricciones y preferencia describen el primero; la generación y selección de candidatas pertenecen al segundo.

2. Qué observa un algoritmo de caja negra

Referencia Capítulo de libro
Audet, C., & Hare, W. (2026). Introduction: Tools and challenges in derivative-free and blackbox optimization. En Derivative-free and blackbox optimization (2.ª ed., pp. 3–18). Springer.
Puede requerir acceso institucional

Qué revisar

Capítulo introductorio, con énfasis en la definición del problema y la información disponible para el algoritmo.

Pregunta guía

¿Qué métodos dejan de ser directamente aplicables cuando la interfaz solo permite consultar valores de la función?

¿De qué trata?

Introduce problemas en los que la función objetivo puede consultarse, pero sus derivadas u otros detalles internos no están disponibles, no son confiables o son imprácticos.

¿Por qué es pertinente para el curso?

Fundamenta el contrato observable de la clase: el algoritmo propone una candidata y recibe un valor; el método de búsqueda depende de la interfaz, no de la implementación interna del evaluador.

3. Representar conceptos e invariantes mediante tipos

Referencia Libro
Wlaschin, S. (2018). Domain modeling made functional: Tackle software complexity with domain-driven design and F#. Pragmatic Bookshelf.
Puede requerir acceso institucional

Qué revisar

Las secciones sobre tipos, modelado del dominio e integridad de los valores. La presentación del autor es una alternativa accesible.

Pregunta guía

¿Qué estados no deseados puede impedir el tipo Point antes de evaluar siquiera una solución candidata?

¿De qué trata?

Explica cómo un modelo de software puede usar nombres y tipos específicos del dominio e incorporar reglas e invariantes en la construcción de valores.

¿Por qué es pertinente para el curso?

Ayuda a comprender la transición desde List<Double> hacia Point, que expresa intención y controla su construcción. Aunque utiliza F#, el principio se aplica a Kotlin y otros lenguajes estáticos.

Referencia técnica de Kotlin

4. Mecanismos del lenguaje utilizados en el modelo

La implementación de la clase utiliza mecanismos generales de Kotlin para expresar conceptos del dominio, restringir la construcción de valores y definir contratos reutilizables.

  • Inline value classes

    Explica cómo crear un tipo específico del dominio que envuelve un valor y se mantiene distinto de su representación subyacente.

    Consultar value classes
  • Generics: in, out, where

    Introduce covarianza y contravarianza para interpretar SearchSpace<in T> y Evaluation<out C, out V>.

    Consultar genéricos y varianza
  • Functional interfaces

    Describe las interfaces SAM y la conversión que permite implementarlas mediante expresiones lambda.

    Consultar fun interfaces
  • Operator overloading

    Documenta convenciones como candidate in space, traducida a space.contains(candidate).

    Consultar operadores
  • Data classes

    Explica las clases cuyo propósito principal es conservar datos y las operaciones generadas por el compilador.

    Consultar data classes

Pregunta guía

¿Qué parte del diseño corresponde a una abstracción del dominio y qué parte corresponde solamente a una forma idiomática de expresarla en Kotlin?

Funciones de prueba y benchmarking

5. La función de la esfera dentro de una suite de pruebas

Referencia Informe técnico
Hansen, N., Finck, S., Ros, R., & Auger, A. (2009). Real-parameter black-box optimization benchmarking 2009: Noiseless functions definitions. Research Report RR-6829, INRIA.
Acceso abierto

Qué revisar

La introducción de la suite y la sección 1.1 dedicada a Sphere.

Pregunta guía

¿Qué propiedad verificamos con Sphere: la calidad general del algoritmo o la coherencia básica del modelo y su implementación?

¿De qué trata?

Define una suite de funciones para estudiar optimizadores continuos en condiciones controladas. Sphere permite observar el comportamiento básico sin multimodalidad u otras dificultades.

¿Por qué es pertinente para el curso?

En el curso usamos Sphere para verificar que representación, espacio de búsqueda y evaluador estén conectados correctamente; su simplicidad no demuestra rendimiento general sobre otros paisajes.

Lectura avanzada

6. Panorama de la optimización sin derivadas

Referencia Artículo académico
Larson, J., Menickelly, M., & Wild, S. M. (2019). Derivative-free optimization methods. Acta Numerica, 28, 287–404.
Acceso abierto

Qué revisar

Para esta clase basta con el resumen y la introducción; el resto puede retomarse después de estudiar familias de métodos.

Pregunta guía

¿Qué supuestos adicionales permiten diseñar métodos más especializados que proponer y evaluar candidatas?

¿De qué trata?

Revisa métodos para problemas cuyas funciones se observan mediante simulación o un evaluador que no entrega derivadas.

¿Por qué es pertinente para el curso?

Amplía la idea de que caja negra no describe una sola clase de funciones: el evaluador puede ser determinista o estocástico, suave o no suave, económico o costoso.

Ruta de lectura sugerida

Una progresión posible para abordar estas lecturas:

  1. Talbi: distinguir el modelo de optimización del método de búsqueda.
  2. Audet y Hare: interpretar la caja negra como una interfaz de información.
  3. Wlaschin: representar conceptos e invariantes del modelo mediante tipos.
  4. Documentación de Kotlin: consultar los mecanismos concretos mientras se implementa el modelo.
  5. Hansen et al.: comprender el papel de Sphere en una evaluación controlada.
  6. Larson et al.: ampliar la perspectiva hacia la optimización sin derivadas.