ai challenge planets
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