Diferencia entre revisiones de «Practicas de Robocode»

De MediaWiki
Ir a la navegación Ir a la búsqueda
 
(No se muestran 21 ediciones intermedias del mismo usuario)
Línea 1: Línea 1:
 
= Introdución =
 
= Introdución =
 +
RoboCode é un simulador de combates entre tanques.
  
 
= Tarefa e obxectivos =
 
= Tarefa e obxectivos =
Línea 13: Línea 14:
 
#: hai que desactivar as actualizacións automáticas desde dentro do propio Robocode!
 
#: hai que desactivar as actualizacións automáticas desde dentro do propio Robocode!
 
#: a versión do compilador pode ser a incluida no entorno de Robocode
 
#: a versión do compilador pode ser a incluida no entorno de Robocode
 +
# Pódese limitar a competición para unha categoría determinada:
 +
#: os tanques se organizan en categorías al estilo del boxeo, por peso.
 +
#: O peso calcúlase nunha "báscula" que mide o código efectivo das clases: codesize.jar
 +
#: Desta forma divídense en:
 +
#:: '''''Nanobots''''': código efectivo menor de 250 bytes
 +
#:: '''''Microbots''''': entre 251 y 750 bytes
 +
#:: '''''Minibots''''': entre 751 y 1500 bytes
 +
#:: '''''Megabots''''': por enriba de 1501 bytes
 
# O robot extenderá da clase ''AdvancedRobot'' para que se poidan usar as mesmas características en todos
 
# O robot extenderá da clase ''AdvancedRobot'' para que se poidan usar as mesmas características en todos
−
# Non se permite utilizar ningún programa nin paquete externo fóra do que incluía o propio Robocode máis o ''runtime de Java'' e as librerías habituales (java.lang, java.util, java.math).  
+
# Non se permite utilizar ningún programa nin paquete externo fóra
 +
#: do que incluía o propio Robocode máis o ''runtime de Java''  
 +
#: e das librerías habituales (java.lang, java.util, java.math).  
 
# Tampouco se permite o uso de ficheiros externos para almacenar información
 
# Tampouco se permite o uso de ficheiros externos para almacenar información
 
#: Todo isto busca evitar diferenzas e vantaxes e facilitar a avaliación
 
#: Todo isto busca evitar diferenzas e vantaxes e facilitar a avaliación
 
# Non se poden usar
 
# Non se poden usar
−
## os métodos que devolven información da contorna e parámetros da batalla (tamaño campo, enfriamento,...),  
+
#: os métodos que devolven información da contorna e parámetros da batalla (tamaño campo, enfriamento,...),  
−
## información sobre os contrincantes (nome)
+
#: información sobre os contrincantes (nome)
−
## información das balas ou morte dos contrincantes,
+
#: información das balas ou morte dos contrincantes,
−
## a posición absoluta (coordenadas X,Y) propia.
+
#: a posición absoluta (coordenadas X,Y) propia.
−
#: A prohibición de usar moitas das funcións ou clases de Robocode é para que sexa o máis aproximado a un problema realista de Intelixencia Artificial...
 
−
#: ..e dificulta que se poidan copiar outros programas para robocode disponibles de competicions en internet ;)
 
  
−
= Enunciado 1 =
+
A prohibición de usar moitas das funcións ou clases de Robocode é ...
 +
... para que sexa o máis aproximado a un problema realista de Intelixencia Artificial...
 +
... e dificultar que se poidan copiar outros programas para robocode disponibles de competicions en internet ;)
 +
 
 +
= Enunciados =
 +
== Enunciado 1 ==
 
PENDENTE
 
PENDENTE
  
−
= Outros enunciados =
+
== Outros enunciados ==
 
PENDENTE
 
PENDENTE
  
 
= Posibles calificacións =
 
= 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.
+
Unha posibilidade e calificar en dúas fases
 +
 
 +
== Primeira fase ==
 +
Na primeira fase cada programa debía vencer (un 90% daas veces), por puntos acumulados ó final dunha batalla de 10 asaltos tipo melee, a tres robots concretos escollidos de entre os que veñen coma ''sample'' en Robocode (un moi débil, outro medio e outro algo máis forte).  
 +
 
 +
Facilítanse valores concretos os parámetros das batallas;
 +
* tamaño de campo
 +
* velocidade de enfriamiento
 +
* tempo inactividade
 +
* ...
 +
 
 +
A superación desta fase implicaba o aprobado.  
 +
 
 +
Aínda que os programas de ''sample'' son fáciles de vencer en condicións normais, coas limitacións e restriccións impostas dificúltase requerindo analizar e indagar máis.  
 +
 
 +
Además, ó valorarse por puntos acumulados poténciase que se optimicen os factores que dan puntos e non necesariamente gañar ou destruir a todos.
 +
 
 +
== Segunda fase ==
 +
O resto da calificación obtíñase na segunda fase que era onde se realizaba a competición.
 +
 
 +
Enfréntanse en varias batallas un número variable de programas de estudiantes xunto con outros programas descoñecidos (dos de ''sample'' ou algún outro público).
 +
 
 +
As condicións e parámetros (tamaño campo, número contrincantes, enfriamiento, etc.) eran variables e aleatorias dentro duns rangos en cada batalla.
 +
 
 +
Nesta fase íanse acumulando os puntos obtidos en cada batalla mediante un sistema de puntos tipo ELO (coma os do xadrez) para obter unha puntuación final que logo se escalaba proporcionalmente para a calificación.
  
−
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.
+
A complexidade da segunda fase era derivada do elevado número de estudiantes matriculados na asignatura na UNED que facía moi difícil evaluar equitativamente
  
−
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.
+
Para o noso CIFP, pódense facer directamente unhas cantas batallas de todos contra todos e sumar os puntos obtidos en cada batalla.  
 +
 
 +
O engadir algúns robots extra fáciles de vencer axuda a que os estudantes que fixeran algo por enriba do mínimo saquen máis nota na 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.
 
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.
 +
 +
== Rúbrica ==
 +
{| class="wikitable
 +
! Condición
 +
! Resultado
 +
! Puntuación
 +
! Observacións
 +
|-
 +
! colspan="4" | Fase 1 (máx 4 puntos)
 +
|-
 +
|-
 +
| Compila?
 +
| Si / Non
 +
| [0-1]
 +
|
 +
|-
 +
| Cumple coas restriccións?
 +
| Si / Non
 +
| [0-1]
 +
|
 +
|-
 +
| Case gaña nas condicións impostas en fase 1?
 +
| Si / Non
 +
| [0-1]
 +
|
 +
|-
 +
| Gaña nas condicións impostas en fase 1?
 +
| Si / Non
 +
| [0-1]
 +
|
 +
|-
 +
! colspan="4" | Fase 2 (máx 4 puntos)
 +
|-
 +
| Puntaxe segundo clasificación ELO
 +
| Baremación
 +
| [0-4]
 +
|
 +
|-
 +
! colspan="4" | Outras consideracións
 +
|-
 +
| Bo traballo en equipo e uso dos foros
 +
| Baremación
 +
| [0-1]
 +
|
 +
|-
 +
| Memoria presentada
 +
| Baremación
 +
| [0-1]
 +
|
 +
|}
  
 
= Entrega =
 
= Entrega =
Línea 47: Línea 137:
  
 
= Referencias =
 
= Referencias =
 +
<div style="column-count:2;-moz-column-count:2;-webkit-column-count:2">
 
* [https://robocode.sourceforge.io/ Robocode en sourceforge]  
 
* [https://robocode.sourceforge.io/ Robocode en sourceforge]  
 
* [https://robowiki.net/ Robowiki]
 
* [https://robowiki.net/ Robowiki]
 +
* [https://www.genbeta.com/desarrollo/robocode-diviertete-y-aprende-java-o-net Robocode en genbeta.com]
 +
* [https://robowiki.net/wiki/Robocode/My_First_Robot My first robot tutorial]
 +
* [http://www.it.uc3m.es/jvillena/irc/practicas/04-05/9mem.pdf Robocode: ¿Un robot inteligente?]
 +
* [https://bricolabs.cc/wiki/guias/robocode Guía de Robocode]
 +
</div>
 +
 +
== Repositorios ==
 +
<div style="column-count:2;-moz-column-count:2;-webkit-column-count:2">
 +
* [https://github.com/d-r-q/rc-repo-mirror Rc Repo Mirror on github.com]
 +
* [http://robocode-archive.strangeautomata.com/robots/ Other repository]
 +
</div>
  
 
= Créditos =
 
= Créditos =
 
Os meus coñecementos de Robocode xurden da miña primeira etapa como alumno en Sistemas Informáticos II da [[https://www.uned.es/ UNED]] na antigua enxeñaría informática.
 
Os meus coñecementos de Robocode xurden da miña primeira etapa como alumno en Sistemas Informáticos II da [[https://www.uned.es/ 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.
+
Tras contactar co profesor [https://orcid.org/0000-0001-5659-6841 Jose Ramon Álvarez-Sanchez] facilitou reseñas de cales eran os enunciados que se utilizaban; e desa información xurde este artigo.
 +
 
 +
{{LicenciaCC|usuario=joselv|nomeeapelidos=José López Villar|modulo=Programación|nivelgrao=superior|nomegrao=Desenvolvemento de Aplicacións Web / Multiplataforma}}

Revisión actual del 19:40 17 may 2021

Introdución

RoboCode é un simulador de combates entre tanques.

Tarefa e obxectivos

Escribir un programa para controlar un robot simulado en Robocode para competir contra outros.

Os obxectivos pedagóxicos 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

  1. 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!
    a versión do compilador pode ser a incluida no entorno de Robocode
  2. Pódese limitar a competición para unha categoría determinada:
    os tanques se organizan en categorías al estilo del boxeo, por peso.
    O peso calcúlase nunha "báscula" que mide o código efectivo das clases: codesize.jar
    Desta forma divídense en:
    Nanobots: código efectivo menor de 250 bytes
    Microbots: entre 251 y 750 bytes
    Minibots: entre 751 y 1500 bytes
    Megabots: por enriba de 1501 bytes
  3. O robot extenderá da clase AdvancedRobot para que se poidan usar as mesmas características en todos
  4. Non se permite utilizar ningún programa nin paquete externo fóra
    do que incluía o propio Robocode máis o runtime de Java
    e das librerías habituales (java.lang, java.util, java.math).
  5. Tampouco se permite o uso de ficheiros externos para almacenar información
    Todo isto busca evitar diferenzas e vantaxes e facilitar a avaliación
  6. Non se poden usar
    os métodos que devolven información da contorna e parámetros da batalla (tamaño campo, enfriamento,...),
    información sobre os contrincantes (nome)
    información das balas ou morte dos contrincantes,
    a posición absoluta (coordenadas X,Y) propia.
A prohibición de usar moitas das funcións ou clases de Robocode é ...
... para que sexa o máis aproximado a un problema realista de Intelixencia Artificial...
... e dificultar que se poidan copiar outros programas para robocode disponibles de competicions en internet ;)

Enunciados

Enunciado 1

PENDENTE

Outros enunciados

PENDENTE

Posibles calificacións

Unha posibilidade e calificar en dúas fases

Primeira fase

Na primeira fase cada programa debía vencer (un 90% daas veces), por puntos acumulados ó final dunha batalla de 10 asaltos tipo melee, a tres robots concretos escollidos de entre os que veñen coma sample en Robocode (un moi débil, outro medio e outro algo máis forte).

Facilítanse valores concretos os parámetros das batallas;

  • tamaño de campo
  • velocidade de enfriamiento
  • tempo inactividade
  • ...

A superación desta fase implicaba o aprobado.

Aínda que os programas de sample son fáciles de vencer en condicións normais, coas limitacións e restriccións impostas dificúltase requerindo analizar e indagar máis.

Además, ó valorarse por puntos acumulados poténciase que se optimicen os factores que dan puntos e non necesariamente gañar ou destruir a todos.

Segunda fase

O resto da calificación obtíñase na segunda fase que era onde se realizaba a competición.

Enfréntanse en varias batallas un número variable de programas de estudiantes xunto con outros programas descoñecidos (dos de sample ou algún outro público).

As condicións e parámetros (tamaño campo, número contrincantes, enfriamiento, etc.) eran variables e aleatorias dentro duns rangos en cada batalla.

Nesta fase íanse acumulando os puntos obtidos en cada batalla mediante un sistema de puntos tipo ELO (coma os do xadrez) para obter unha puntuación final que logo se escalaba proporcionalmente para a calificación.

A complexidade da segunda fase era derivada do elevado número de estudiantes matriculados na asignatura na UNED que facía moi difícil evaluar equitativamente

Para o noso CIFP, pódense facer directamente unhas cantas batallas de todos contra todos e sumar os puntos obtidos en cada batalla.

O engadir algúns robots extra fáciles de vencer axuda a que os estudantes que fixeran algo por enriba do mínimo saquen máis nota na 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.

Rúbrica

Condición Resultado Puntuación Observacións
Fase 1 (máx 4 puntos)
Compila? Si / Non [0-1]
Cumple coas restriccións? Si / Non [0-1]
Case gaña nas condicións impostas en fase 1? Si / Non [0-1]
Gaña nas condicións impostas en fase 1? Si / Non [0-1]
Fase 2 (máx 4 puntos)
Puntaxe segundo clasificación ELO Baremación [0-4]
Outras consideracións
Bo traballo en equipo e uso dos foros Baremación [0-1]
Memoria presentada Baremación [0-1]

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

Repositorios

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 facilitou reseñas de cales eran os enunciados que se utilizaban; e desa información xurde este artigo.


88x31.png


Estes apuntes foron creados para o módulo profesional Programación do ciclo de grao superior Desenvolvemento de Aplicacións Web / Multiplataforma. Creados e editados por José López Villar baixo a licenza Creative Commons 3.0:

  • Copiar, distribuír e comunicar publicamente a obra, sempre mencionando ós autores.
  • Uso non comercial.
  • Compartir as modificacións baixo a mesma licenza.