ai challenge planets

Upload: jose-manuel-perez-sevilla

Post on 06-Apr-2018

224 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/3/2019 Ai Challenge Planets

    1/26

    G o o g l e A I C h a l l e n g e : P l a n e t W a r s

    G b o r M e l i s

    g m e l i s @ f r a n z . c o m

    F r a n z I n c .

    J a n u a r y , 2 0 1 1

    ( F r a n z I n c . ) G o o g l e A I C h a l l e n g e : P l a n e t W a r s J a n u a r y , 2 0 1 1 1 / 2 6

  • 8/3/2019 Ai Challenge Planets

    2/26

    A b o u t t h i s p r e s e n t a t i o n

    1

    P l a n e t w a r s i n t r o

    2

    I m p l e m e n t a t i o n / A I

    3

    M e t a r a m b l i n g s

    ( F r a n z I n c . ) G o o g l e A I C h a l l e n g e : P l a n e t W a r s J a n u a r y , 2 0 1 1 2 / 2 6

  • 8/3/2019 Ai Challenge Planets

    3/26

    ( - o - ) W i t h p a r e n s i n t o s p a c e w a r ( - o - )

    2 n d G o o g l e A I C h a l l e n g e : P l a n e t W a r s

    ( h t t p : / / a i - c o n t e s t . c o m / )

    C o u p l e o f t h o u s a n d c o n t e s t a n t s

    S e v e r a l s u p p o r t e d p r o g r a m m i n g l a n g u a g e s

    ( C + + , P y t h o n , J a v a , L i s p , G o , e t c )

    S i m p l e r e a l - t i m e s t r a t e g y g a m e

    A g i l e a n d e e c t i v e t o o l s

    a r e n e e d e d .

    ( F r a n z I n c . ) G o o g l e A I C h a l l e n g e : P l a n e t W a r s J a n u a r y , 2 0 1 1 3 / 2 6

    http://ai-contest.com/
  • 8/3/2019 Ai Challenge Planets

    4/26

    P l a n e t W a r s : R u l e s

    e n e m y s h i p s c a n c e l e a c h

    o t h e r o u t i n b a t t l e

    p l a n e t s p r o d u c e s o m e

    s h i p s p e r t u r n

    n e u t r a l p l a n e t s : s h o r t

    t e r m s a c r i c e f o r l o n g

    t e r m g a i n

    ( F r a n z I n c . ) G o o g l e A I C h a l l e n g e : P l a n e t W a r s J a n u a r y , 2 0 1 1 4 / 2 6

  • 8/3/2019 Ai Challenge Planets

    5/26

    P l a n e t W a r s : S t e a l i n g

    T a k i n g o v e r a n e u t r a l p l a n e t

    c o s t s a s m a n y s h i p s a s t h e r e

    a r e d e f e n d e r s .

    ( F r a n z I n c . ) G o o g l e A I C h a l l e n g e : P l a n e t W a r s J a n u a r y , 2 0 1 1 5 / 2 6

  • 8/3/2019 Ai Challenge Planets

    6/26

    P l a n e t W a r s : S t e a l i n g 2

    I t i s a n o f t u s e d t a c t i c t o w a i t

    f o r t h e e n e m y t o t a k e t h e

    n e u t r a l , l o s e s h i p s t o n e u t r a l

    f o r c e s , a n d t h e n t a k e t h e

    p l a n e t f r o m h i m o n t h e n e x t

    t u r n .

    ( F r a n z I n c . ) G o o g l e A I C h a l l e n g e : P l a n e t W a r s J a n u a r y , 2 0 1 1 6 / 2 6

  • 8/3/2019 Ai Challenge Planets

    7/26

    P l a n e t W a r s : R e d i s t r i b u t i o n

    I f s h i p s s t a y p u t u n t i l t h e y a r e

    n e e d e d f o r d e f e n s e o r a t t a c k

    t h e n t h e y m a y b e t o o f a r

    f r o m t h e a c t i o n w h e n t h e y a r e

    n a l l y n e e d e d .

    ( F r a n z I n c . ) G o o g l e A I C h a l l e n g e : P l a n e t W a r s J a n u a r y , 2 0 1 1 7 / 2 6

  • 8/3/2019 Ai Challenge Planets

    8/26

    P l a n e t W a r s : M u l t i - p l a n e t m o v e s

    B y c o m b i n i n g f o r c e s o f

    m u l t i p l e p l a n e t s t h e t a r g e t

    p l a n e t c a n b e t a k e n e a r l i e r o r

    d e f e n d e d l a t e r .

    ( F r a n z I n c . ) G o o g l e A I C h a l l e n g e : P l a n e t W a r s J a n u a r y , 2 0 1 1 8 / 2 6

  • 8/3/2019 Ai Challenge Planets

    9/26

    I m p l e m e n t a t i o n : D i c u l t i e s

    p o s i t i o n e v a l u a t i o n

    p r a c t i c a l l y u n b o u n d e d n u m b e r o f p o s s i b l e m o v e s

    h o w t o t e s t p l a y i n g s t r e n g t h

    ( F r a n z I n c . ) G o o g l e A I C h a l l e n g e : P l a n e t W a r s J a n u a r y , 2 0 1 1 9 / 2 6

  • 8/3/2019 Ai Challenge Planets

    10/26

    I m p l e m e n t a t i o n : F u t u r e

    F u t u r e i s a p o s s i b l e s e q u e n c e o f s t a t e s o f a p l a n e t .

    I n t h e s i m p l e s t c a s e t h e f u t u r e i s c a l c u l a t e d f r o m s h i p s a l r e a d y e n r o u t e i n

    t h e g a m e .

    ;;; A future is a particular sequence of states of a planet. Its;;; represented by an OWNERS and a NSHIPS array.

    (defclassfuture()

    ((planet :initarg:planet:reader planet)

    (owners :initarg:owners:reader owners)

    (nships :initarg:nships:reader nships)

    ;; Number of ships player 2 lost when attacking neutrals minus the

    ;; number of ships player 1 lost when attacking neutrals in this

    ;; future.

    (balance :initarg:balance:reader balance)))

    ( F r a n z I n c . ) G o o g l e A I C h a l l e n g e : P l a n e t W a r s J a n u a r y , 2 0 1 1 1 0 / 2 6

  • 8/3/2019 Ai Challenge Planets

    11/26

    I m p l e m e n t a t i o n : F u t u r e b a s e d e v a l u a t i o n

    s t r e n g t h i s a p i e c e w i s e l i n e a r f u n c t i o n o f t i m e

    a s s u m e t h a t t h e r e a r e n o h i d d e n c h a n g e p o i n t s

    s c o r e : d i e r e n c e o f a c c u m u l a t e d g r o w t h s

    ( F r a n z I n c . ) G o o g l e A I C h a l l e n g e : P l a n e t W a r s J a n u a r y , 2 0 1 1 1 1 / 2 6

  • 8/3/2019 Ai Challenge Planets

    12/26

    I m p l e m e n t a t i o n : F u l l a t t a c k e v a l u a t i o n

    F u l l a t t a c k l e m m a

    A s s u m i n g t h a t t h e r e a r e n o n e u t r a l p l a n e t s a n d P l a y e r 2 c a n t a k e n o n e o f

    t h e p l a n e t s o f P l a y e r 1 w h e n b o t h p l a y e r c o n t i n u o u s l y s e n d a l l p o s s i b l e

    s h i p s t o t h e c o n t e s t e d p l a n e t , t h e n P l a y e r 2 c a n t a k e n o n e o f t h e p l a n e t s o f

    P l a y e r 1 e v e n i f a l l o w e d t o a t t a c k m u l t i p l e p l a n e t s s i m u l t a n e o u s l y i n a n y

    p a t t e r n .

    I s t h i s e v e n t r u e ?

    I n a n y c a s e f u l l a t t a c k f u t u r e b a s e d e v a l u a t i o n i s e x t r e m e l y u s e f u l .

    ( F r a n z I n c . ) G o o g l e A I C h a l l e n g e : P l a n e t W a r s J a n u a r y , 2 0 1 1 1 2 / 2 6

  • 8/3/2019 Ai Challenge Planets

    13/26

    I m p l e m e n t a t i o n : M o v e g e n e r a t i o n

    a s m a l l i s h n u m b e r o f c a n d i d a t e m o v e s m u s t b e s e l e c t e d

    m o v e s a r e a s s e m b l e d f r o m p e r - p l a n e t s t e p s

    a s t e p i s s e t o f o r d e r s t a r g e t i n g t h e s a m e p l a n e t

    ( F r a n z I n c . ) G o o g l e A I C h a l l e n g e : P l a n e t W a r s J a n u a r y , 2 0 1 1 1 3 / 2 6

  • 8/3/2019 Ai Challenge Planets

    14/26

    I m p l e m e n t a t i o n : S t e p s

    t h e n e e d o f a p l a n e t i s t h e n u m b e r o f s h i p s p e r t u r n n e e d e d t o t a k e

    o v e r o r d e f e n d t h a t p l a n e t

    w e t r y t o t o s a t i s f y t h e n e e d o f t h e t a r g e t p l a n e t f r o m t h e s u r p l u s e s o f

    f r i e n d l y p l a n e t s

    o n c e w e h a v e s t e p s f o r a l l p l a n e t s t h e y a r e s c o r e d b y t h e n o r m a l

    e v a l u a t i o n f u n c t i o n a n d t h e m o s t p r o m i s i n g o n e s c o m b i n e d i n t o a

    c o m p o s i t e m o v e ( s u b j e c t t o v a l i d i t y )

    ( F r a n z I n c . ) G o o g l e A I C h a l l e n g e : P l a n e t W a r s J a n u a r y , 2 0 1 1 1 4 / 2 6

  • 8/3/2019 Ai Challenge Planets

    15/26

    I m p l e m e n t a t i o n : S u r p l u s

    t r y t o c o n t r o l n o n - l i n e a r i t y

    m o s t n o t a b l e n o n - l i n e a r i t y i s a t o w n e r s h i p c h a n g e s

    d e n i t i o n o f s u r p l u s :

    T h e s u r p l u s o f p l a y e r P a t p l a n e t A a t t i m e t i s t h e n u m b e r o f s h i p s

    t h a t c a n b e s e n t a w a y o n t h a t t u r n f r o m t h e d e f e n d i n g a r m y w i t h o u t :

    m a k i n g a n y s c h e d u l e d o r d e r f r o m p l a n e t A i n v a l i d

    c a u s i n g t h e p l a n e t t o b e l o s t a n y t i m e a f t e r t h a t ( o b s e r v i n g o n l y t h e

    e e t s a l r e a d y i n s p a c e )

    b r i n g i n g a n i m m i n e n t l o s s c l o s e r i n t i m e

    ( F r a n z I n c . ) G o o g l e A I C h a l l e n g e : P l a n e t W a r s J a n u a r y , 2 0 1 1 1 5 / 2 6

  • 8/3/2019 Ai Challenge Planets

    16/26

    I m p l e m e n t a t i o n : R e d i s t r i b u t i o n

    J u s t a s m a l l t w e a k t o a n e x t r e m e l y s i m p l e s c o r i n g f u n c t i o n :

    ;;; The score of a future (of a planet) is simply the difference of

    ;;; growths captured by the players adjusted by the balance of the

    ;;; future (that is, taking into account the ships lost when capturing

    ;;; neutrals).

    ;;;

    ;;; Give a very slight positional penalty every turn for every enemy;;; ship. When FUTURE is a FULLATTACKFUTURE then this has the effect

    ;;; of preferring positions where the friendly ships are near the

    ;;; enemy.

    (defunscore(future player)

    (let((owners (owners future))

    (nshipsperturn (nships future))

    (growth (growth (planet future)))

    (score (* (playermultiplier player)(balance future)))

    (opponent (opponent player)))

    (dotimes(i (length owners)) (let((owner (aref owners i))

    (nships (aref nshipsperturn i)))

    (cond((= owner player)

    (incf score growth))

    ((= owner opponent)

    (decf score growth)

    (when(= player 1)

    (decf score (* 0.000000000001d0

    ( (the fixnum *nturnstillhorizon*) i)

    nships)))))))

    score))

    ( F r a n z I n c . ) G o o g l e A I C h a l l e n g e : P l a n e t W a r s J a n u a r y , 2 0 1 1 1 6 / 2 6

  • 8/3/2019 Ai Challenge Planets

    17/26

    I m p l e m e n t a t i o n : A l p h a - b e t a ?

    t h e n e u t r a l p l a n e t s a r e t h e b l i n d s p o t o f t h e

    p o s i t i o n e v a l u a t o r

    i f t h e b o t c a n n o t t a k e a n d k e e p a h i g h

    g r o w t h p l a n e t i t m a y g o a n d t a k e a l o w

    g r o w t h o n e l e a v i n g t h e r s t o n e t o t h e

    o p p o n e n t

    t h i s c a n l e a d t o q u i c k l o s s e s

    s o l u t i o n : a l p h a - b e t a

    b u t t h e r e a r e d a n g e r s . . .

    ( F r a n z I n c . ) G o o g l e A I C h a l l e n g e : P l a n e t W a r s J a n u a r y , 2 0 1 1 1 7 / 2 6

  • 8/3/2019 Ai Challenge Planets

    18/26

    Q u e s t i o n s ? ( r s t r o u n d )

    S t a y t u n e d .

    ( F r a n z I n c . ) G o o g l e A I C h a l l e n g e : P l a n e t W a r s J a n u a r y , 2 0 1 1 1 8 / 2 6

  • 8/3/2019 Ai Challenge Planets

    19/26

    M e t a : S e a r c h

    a w a l k o n s t a t e s o f s o l u t i o n s p a c e ( o f t e n n e e d t o r e c o r d s t a t e s t o o )

    g u i d e d b y h e u r i s t i c s i n n o n - t r i v i a l c a s e s

    s t a t e s g e t e v a l u a t e d

    ( F r a n z I n c . ) G o o g l e A I C h a l l e n g e : P l a n e t W a r s J a n u a r y , 2 0 1 1 1 9 / 2 6

  • 8/3/2019 Ai Challenge Planets

    20/26

    M e t a : S o l u t i o n s p a c e

    t h e r e a r e p r a c t i c a l l y i n n i t e p o s s i b l e a c t i o n s t o t a k e

    a v e r y g o o d m o v e g e n e r a t o r i s n e e d e d

    f a s t e v a l u a t i o n o f m o v e s i s n e e d e d

    ( F r a n z I n c . ) G o o g l e A I C h a l l e n g e : P l a n e t W a r s J a n u a r y , 2 0 1 1 2 0 / 2 6

  • 8/3/2019 Ai Challenge Planets

    21/26

    M e t a : D e v e l o p m e n t a s s e a r c h

    B a s i c s

    v e r s i o n c o n t r o l ( g i t )

    u n i t t e s t i n g

    E v a l u a t i o n

    u n d e r s t a n d w h a t a n d w h y t h e b o t d o e s

    h o w m u c h d o e s i t l o s e ?

    t e s t p l a y i n g s t r e n g t h

    x a l l b u g s b e f o r e m o v i n g o n O f t e n h a r d t o d i s t i n g u i s h g e n u i n e b u g s

    f r o m a l g o r i t h m i c w e a k n e s s e s .

    M o v e g e n e r a t o r

    w h y d o e s i t l o s e ?

    a n a l y z e l o t s o f g a m e s

    g r e e d y h e u r i s t i c ( g o o d f o r t e s t i n g )

    ( F r a n z I n c . ) G o o g l e A I C h a l l e n g e : P l a n e t W a r s J a n u a r y , 2 0 1 1 2 1 / 2 6

  • 8/3/2019 Ai Challenge Planets

    22/26

    M e t a : L e v e l s o f d e v e l o p m e n t a s s e a r c h

    W i t h n i t e m e m o r y , i n f o r m a t i o n a b o u t v i s i t e d s t a t e s i s l o s t . D a n g e r o f

    e n d l e s s l o o p s , m a k i n g n o p r o g r e s s .

    1

    t h i n k q u i c k l y j u s t j o t t i n g d o w n m a i n i d e a s i n a f e w w o r d s

    2

    t a l k t o y o u r r u b b e r d u c k

    3

    e x p a n d o n i d e a s u n t i l e x e c u t i n g t h e m i n h e a d

    4

    t h i n k c o d i n g , c o d e t h i n k i n g

    k e e p a r e c o r d o f p r o g r e s s ( o r g - m o d e , v e r s i o n c o n t r o l , e t c )

    ( F r a n z I n c . ) G o o g l e A I C h a l l e n g e : P l a n e t W a r s J a n u a r y , 2 0 1 1 2 2 / 2 6

  • 8/3/2019 Ai Challenge Planets

    23/26

    M e t a : W h y L i s p ?

    c o d e c a n b e r e f a c t o r e d q u i c k l y

    n o r i s k o f h a v i n g t o r e w r i t e i t i n a n o t h e r

    l a n g u a g e t o s p e e d i t u p

    f a s t e r t e s t i n g , d e b u g g i n g i n i n t e r a c t i v e

    d e v e l o p m e n t e n v i r o n m e n t

    t h o s e w h o c a n t e s t m o r e i d e a s h a v e a b i g

    a d v a n t a g e

    a n d a l s o t h o s e w h o c a n p l a c e m o r e u s e f u l

    b u g s i n t h e c o d e

    n o , I h a v e n ' t w r i t t e n a D S L

    ( F r a n z I n c . ) G o o g l e A I C h a l l e n g e : P l a n e t W a r s J a n u a r y , 2 0 1 1 2 3 / 2 6

  • 8/3/2019 Ai Challenge Planets

    24/26

    M e t a : W h a t t o p a c k f o r a s p a c e w a r ?

    m u c h t i m e a n d e n e r g y s o u r c e s

    e e c t i v e t i m e m a n a g e m e n t

    a g o o d n o t e p a d

    o n e p a c k o f m e t a - h e u r i s t i c s

    a h e a p o f p a r e n s

    ( F r a n z I n c . ) G o o g l e A I C h a l l e n g e : P l a n e t W a r s J a n u a r y , 2 0 1 1 2 4 / 2 6

  • 8/3/2019 Ai Challenge Planets

    25/26

    S t i l l h u n g r y f o r m o r e ?

    s o u r c e c o d e r e p o s i t o r y h t t p : / / q u o t e n i l . c o m / g i t / ? p = p l a n e t - w a r s . g i t

    t h e c o d e i s t e s t e d o n L i n u x w i t h t h e s e C o m m o n L i s p i m p l e m e n t a t i o n s :

    A l l e g r o C L ( F r e e E x p r e s s E d i t i o n :

    h t t p : / / w w w . f r a n z . c o m / d o w n l o a d s / c l p / s u r v e y )

    S B C L ( h t t p : / / s b c l . o r g )

    c o n t e s t w e b s i t e : h t t p : / / a i - c o n t e s t . c o m

    ( F r a n z I n c . ) G o o g l e A I C h a l l e n g e : P l a n e t W a r s J a n u a r y , 2 0 1 1 2 5 / 2 6

    http://ai-contest.com/http://sbcl.org/http://www.franz.com/downloads/clp/surveyhttp://quotenil.com/git/?p=planet-wars.git
  • 8/3/2019 Ai Challenge Planets

    26/26

    Q u e s t i o n s ? ( s e c o n d r o u n d )

    ( F r a n z I n c . ) G o o g l e A I C h a l l e n g e : P l a n e t W a r s J a n u a r y , 2 0 1 1 2 6 / 2 6