Practicas de Robocode
Sumario
Introdución
Tarefa e obxectivos
Escribir un programa para controlar un robot simulado en Robocode para competir contra outros.
Os obxectivos poden ser:
- a iniciación en certas linguaxes de programación (Java e .NET)
- comprender algúns dos principios dos Sistemas Basados no Coñecemento en Intelixencia Artificial, mediante o uso ilustrativo dalgúns métodos
Posibles restricións
- A versión de Robocode e de compilador de java a utilizar para a práctica será fixada
- isto é para evitar que posibles cambios entre versións poidan supoñer vantaxe ou desvantaxe na competición
- hai que desactivar as actualizacións automáticas desde dentro do propio Robocode
- versión do compilador pode ser a incluida no entorno de Robocode
- También se pedía que fuese extensión de la clase "AdvancedRobot" para que se pudieran usar las mismas características en todos.
- Para evitar diferencias y ventajas (y también facilitar la evaluación), no se permitía utilizar ningún programa ni paquete externo fuera de lo que incluía el propio Robocode más el runtime de Java, y las librerías habituales (java.lang, java.util, java.math). Tampoco se permitía usar ficheros externos para almacenar información.
- Para que fuese lo más aproximado a un problema realista de Inteligencia Artificial se prohibía usar muchas de las funciones o clases de Robocode. No se podían usar las que devolvieran información del entorno y parámetros de la batalla (tamaño campo, enfriamiento), ni información sobre los contrincantes (nombre), ni información de las balas o muerte de contrincantes, tampoco la posición absoluta (coordenadas X,Y) propia, etc. Esto además dificultaba que se pudieran copiar directamente otros programas para robocode disponibles de competiciones en internet, ya que la mayoría de ellos utilizan información de coordenadas absolutas, etc.
Enunciado 1
PENDENTE
Outros enunciados
PENDENTE
Posibles calificacións
La calificación de la práctica tenía dos partes o fases. En la primera fase (después de verificar que compila y cumple las restricciones) cada programa debía vencer (un 90% de las veces), por puntos acumulados al final de una batalla de 10 asaltos tipo melee, a tres robots concretos elegidos de entre los que vienen como "sample" en Robocode (uno muy flojo, otro medio y otro algo más fuerte). También se daban valores concretos a los parámetros de las batallas (tamaño de campo, velocidad de enfriamiento, tiempo inactividad, etc.). La superación de esta fase implicaba el aprobado. Aunque los programas de "sample" son fáciles de vencer en condiciones normales, al tener limitaciones y restricciones se dificulta algo y requiere analizar e indagar más. Además, al ser por puntos acumulados se potencia que se optimicen los factores que dan puntos, no necesariamente ganar o destruir a todos.
El resto de la calificación se obtenía en la segunda fase que era donde se realizaba la competición. Se iban enfrentando en varias batallas un número variable de programas de estudiantes, junto con otros programas desconocidos (normalmente también eran algunos de los de sample y algún otro adicional público). Las condiciones y parámetros (tamaño campo, número contrincantes, enfriamiento, etc.) eran variables y aleatorias dentro de unos rangos en cada batalla. En esta fase se iban acumulando los puntos obtenidos en cada batalla mediante un sistema de puntos tipo ELO (como los de ajedrez) para obtener una puntuación final que luego se escalaba proporcionalmente para la calificación.
La complejidad de la segunda fase era derivada del elevado número de estudiantes matriculados en la asignatura que hacía muy difícil evaluar equitativamente, pero si el número no fuese tan alto se pueden hacer directamente unas cuantas batallas de todos contra todos y sumar los puntos obtenidos en cada batalla. El añadir algunos robots extra fáciles de vencer ayuda a que los estudiantes que han hecho algo por encima del mínimo saquen más nota en la segunda fase.
Espero que esta información te sirva de ayuda para preparar una práctica que sin duda tus estudiantes agradecerán y encontrarán divertida y estimulante, y quizá les anime a participar en alguna de las competiciones de internet.
Entrega
Esixirase:
- un nome fixo específico para o nome do robot
- un nome de grupo (cartafol) co DNI do estudante
- así facilítase a automatización de parte dos procesos de extracción, revisión e competición na avaliación.
Referencias
Créditos
Os meus coñecementos de Robocode xurden da miña primeira etapa como alumno en Sistemas Informáticos II da [UNED] na antigua enxeñaría informática.
Tras contactar co profesor [Jose Ramon Álvarez-Sanchez https://orcid.org/0000-0001-5659-6841] facilitou reseñas de cales eran os enunciados que se utilizaban; e desa información xurde este artigo.