[Toss-devel-svn] SF.net SVN: toss:[1356] trunk/Toss
Status: Beta
Brought to you by:
lukaszkaiser
|
From: <luk...@us...> - 2011-03-13 00:10:01
|
Revision: 1356
http://toss.svn.sourceforge.net/toss/?rev=1356&view=rev
Author: lukaszkaiser
Date: 2011-03-13 00:09:53 +0000 (Sun, 13 Mar 2011)
Log Message:
-----------
Corrections to web sites, rename rules in pawn whopping.
Modified Paths:
--------------
trunk/Toss/Arena/Arena.mli
trunk/Toss/GGP/GDL.ml
trunk/Toss/Play/Heuristic.ml
trunk/Toss/Server/Server.ml
trunk/Toss/WebClient/Handler.py
trunk/Toss/WebClient/Main.js
trunk/Toss/WebClient/Style.css
trunk/Toss/WebClient/Wrapper.py
trunk/Toss/WebClient/contact.html
trunk/Toss/examples/Pawn-Whopping.toss
trunk/Toss/www/contact.xml
trunk/Toss/www/create.xml
trunk/Toss/www/docs.xml
trunk/Toss/www/ideas.xml
trunk/Toss/www/index.xml
Modified: trunk/Toss/Arena/Arena.mli
===================================================================
--- trunk/Toss/Arena/Arena.mli 2011-03-12 19:24:32 UTC (rev 1355)
+++ trunk/Toss/Arena/Arena.mli 2011-03-13 00:09:53 UTC (rev 1356)
@@ -110,8 +110,9 @@
val map_to_formulas : (Formula.formula -> Formula.formula) -> game -> game
-(** ------------------ REQUESTS TO THE ARENA USED IN OPERATION --------------- *)
+(** {2 Requests to the Arena used in Operation} *)
+
(** Location of a structure: either arena or left or right-hand side of a rule *)
type struct_loc = Struct | Left of string | Right of string
Modified: trunk/Toss/GGP/GDL.ml
===================================================================
--- trunk/Toss/GGP/GDL.ml 2011-03-12 19:24:32 UTC (rev 1355)
+++ trunk/Toss/GGP/GDL.ml 2011-03-13 00:09:53 UTC (rev 1356)
@@ -3713,7 +3713,6 @@
game_description := game_descr;
let pterms = [|Const "WHITE"; Const "RED"|] in
let noops = [|Some (Const "NOOP"); Some (Const "NOOP")|] in
- Heuristic.use_monotonic := false;
let (* effort, horizon, heur_adv_ratio *) params =
10, 100, 4.0 in
pterms, noops, state, Some params
@@ -3849,36 +3848,36 @@
match actions with
| [Func ("MOVE", [Const x1; Const y1; Const x2; Const y2]);
Const "NOOP"] when x1 = x2 && (s2i y2) - (s2i y1) = 1 ->
- "WhiteStraight",
+ "WhiteMove",
["a1", Structure.board_coords_name (s2i x1, s2i y1);
"a2", Structure.board_coords_name (s2i x2, s2i y2)]
| [Func ("MOVE", [Const x1; Const y1; Const x2; Const y2]);
Const "NOOP"] when x1 = x2 && (s2i y2) - (s2i y1) = 2 ->
- "WhiteStraightTwo",
+ "WhiteMoveTwo",
["a1", Structure.board_coords_name (s2i x1, s2i y1);
"a2", Structure.board_coords_name (s2i x1, (s2i y1) + 1);
"a3", Structure.board_coords_name (s2i x2, s2i y2)]
| [Func ("CAPTURE", [Const x1; Const y1; Const x2; Const y2]);
Const "NOOP"] ->
- "WhiteDiag",
+ "WhiteBeat",
["a", Structure.board_coords_name (s2i x1, s2i y1);
"b", Structure.board_coords_name (s2i x2, s2i y2)]
| [Const "NOOP";
Func ("MOVE", [Const x1; Const y1; Const x2; Const y2])]
when x1 = x2 && (s2i y1) - (s2i y2) = 1 ->
- "BlackStraight",
+ "BlackMove",
["a2", Structure.board_coords_name (s2i x1, s2i y1);
"a1", Structure.board_coords_name (s2i x2, s2i y2)]
| [Const "NOOP";
Func ("MOVE", [Const x1; Const y1; Const x2; Const y2])]
when x1 = x2 && (s2i y1) - (s2i y2) = 2 ->
- "BlackStraightTwo",
+ "BlackMoveTwo",
["a3", Structure.board_coords_name (s2i x1, s2i y1);
"a2", Structure.board_coords_name (s2i x1, (s2i y1) - 1);
"a1", Structure.board_coords_name (s2i x2, s2i y2)]
| [Const "NOOP";
Func ("CAPTURE", [Const x1; Const y1; Const x2; Const y2])] ->
- "BlackDiag",
+ "BlackBeat",
["a", Structure.board_coords_name (s2i x1, s2i y1);
"b", Structure.board_coords_name (s2i x2, s2i y2)]
| _ -> assert false
Modified: trunk/Toss/Play/Heuristic.ml
===================================================================
--- trunk/Toss/Play/Heuristic.ml 2011-03-12 19:24:32 UTC (rev 1355)
+++ trunk/Toss/Play/Heuristic.ml 2011-03-13 00:09:53 UTC (rev 1356)
@@ -959,7 +959,10 @@
List.map (fun r -> (snd r).ContinuousRule.compiled) rules in
let fluents = Aux.concat_map DiscreteRule.fluents drules in
let frels = Aux.strings_of_list fluents in
- let monotonic = !use_monotonic &&
+ let free_pre r =
+ let pre = (snd r).ContinuousRule.discrete.DiscreteRule.pre in
+ FormulaOps.free_vars pre = [] in
+ let monotonic = !use_monotonic && List.for_all free_pre rules &&
List.for_all DiscreteRule.monotonic drules in
let advr =
match advr with Some r -> r | None ->
Modified: trunk/Toss/Server/Server.ml
===================================================================
--- trunk/Toss/Server/Server.ml 2011-03-12 19:24:32 UTC (rev 1355)
+++ trunk/Toss/Server/Server.ml 2011-03-13 00:09:53 UTC (rev 1356)
@@ -205,9 +205,10 @@
let heur = match !game_modified, !g_heur with
| false, Some h -> h
| true, _ | _, None ->
+ let adr = match advr with Some a -> a | None -> 4. in
g_heur := Some (Heuristic.default_heuristic
~struc:(snd !state).Arena.struc
- ~advr:4. (fst !state));
+ ~advr:adr (fst !state));
Aux.unsome !g_heur in
let (move, _) = Play.maximax_unfold_choose effort
(fst !state) (snd !state) heur in
Modified: trunk/Toss/WebClient/Handler.py
===================================================================
--- trunk/Toss/WebClient/Handler.py 2011-03-12 19:24:32 UTC (rev 1355)
+++ trunk/Toss/WebClient/Handler.py 2011-03-13 00:09:53 UTC (rev 1356)
@@ -256,9 +256,9 @@
client.set_cur_loc (loc)
#depth = client.get_data ("depth")
#if depth == "none": depth = 2
- #adv_ratio = client.get_data ("adv_ratio")
- #if adv_ratio == "none": adv_ratio = 2
- return (client.suggest (offset))
+ adv_ratio = client.get_data ("adv_ratio")
+ if adv_ratio == "none": adv_ratio = 4
+ return (client.suggest (offset, adv_ratio))
def suggest (db, client, g, p1, p2, pid, m):
return (suggest_offset (5, db, client, g, p1, p2, pid, m))
Modified: trunk/Toss/WebClient/Main.js
===================================================================
--- trunk/Toss/WebClient/Main.js 2011-03-12 19:24:32 UTC (rev 1355)
+++ trunk/Toss/WebClient/Main.js 2011-03-13 00:09:53 UTC (rev 1356)
@@ -55,6 +55,16 @@
svg_e.parentNode.removeChild (svg_e);
}
+// Substitute players for 0 and 1 in a payoff string.
+function subst_pl (s) {
+ var s1 = s.replace (/0:/g, disp_name(PLAYS[CUR_PLAY_I][0]) + ":");
+ var s2 = s1.replace (/1:/g, disp_name(PLAYS[CUR_PLAY_I][1]) + ":");
+ var s3 = s2.replace (/1.,/g, "1,");
+ var s4 = s3.replace (/0.,/g, "0,");
+ var s5 = s4.replace (/1.$/g, "1");
+ return (s5.replace (/0.$/g, "0"));
+}
+
// Full redraw.
function full_redraw () {
clear_svg ();
@@ -67,7 +77,7 @@
document.getElementById('cur-move').innerHTML = "none";
} else {
document.getElementById('movebt').innerHTML = "Payoffs:";
- document.getElementById('cur-move').innerHTML = PAYOFF_STR;
+ document.getElementById('cur-move').innerHTML = subst_pl(PAYOFF_STR);
}
document.getElementById("working").style.display = "none";
}
Modified: trunk/Toss/WebClient/Style.css
===================================================================
--- trunk/Toss/WebClient/Style.css 2011-03-12 19:24:32 UTC (rev 1355)
+++ trunk/Toss/WebClient/Style.css 2011-03-13 00:09:53 UTC (rev 1356)
@@ -712,7 +712,8 @@
stroke-width: 3px;
}
-.chessW .chess-path-A {
+.Game-Chess .chessW .chess-path-A, .Game-Pawn-Whopping .chessW .chess-path-A,
+ .Game-Checkers .chessB .chess-path-A {
opacity: 1;
fill: #fff1d4;
fill-opacity: 1;
@@ -727,7 +728,8 @@
stroke-opacity: 1;
}
-.chessB .chess-path-A {
+.Game-Chess .chessB .chess-path-A, .Game-Pawn-Whopping .chessB .chess-path-A,
+ .Game-Checkers .chessW .chess-path-A {
opacity: 1;
fill: #400827;
fill-opacity: 1;
@@ -742,7 +744,8 @@
stroke-opacity: 1;
}
-.chessW .chess-path-B {
+.Game-Chess .chessW .chess-path-B, .Game-Pawn-Whopping .chessW .chess-path-B,
+ .Game-Checkers .chessB .chess-path-B {
opacity: 1;
fill: #fff1d4;
fill-opacity: 1;
@@ -756,7 +759,8 @@
stroke-opacity: 1;
}
-.chessB .chess-path-B {
+.Game-Chess .chessB .chess-path-B, .Game-Pawn-Whopping .chessB .chess-path-B,
+ .Game-Checkers .chessW .chess-path-B {
opacity: 1;
fill: #400827;
fill-opacity: 1;
@@ -770,7 +774,9 @@
stroke-opacity: 1;
}
-.chessW .chess-path-Bx {
+
+.Game-Chess .chessW .chess-path-Bx, .Game-Pawn-Whopping .chessW .chess-path-Bx,
+ .Game-Checkers .chessB .chess-path-Bx {
opacity: 1;
fill: #fff1d4;
fill-opacity: 1;
@@ -784,7 +790,8 @@
stroke-opacity: 1;
}
-.chessB .chess-path-Bx {
+.Game-Chess .chessB .chess-path-Bx, .Game-Pawn-Whopping .chessB .chess-path-Bx,
+ .Game-Checkers .chessW .chess-path-Bx {
opacity: 1;
fill: #fff1d4;
fill-opacity: 1;
@@ -798,7 +805,8 @@
stroke-opacity: 1;
}
-.chessW .chess-path-C {
+.Game-Chess .chessW .chess-path-C, .Game-Pawn-Whopping .chessW .chess-path-C,
+ .Game-Checkers .chessB .chess-path-C {
opacity: 1;
fill: #400827;
fill-opacity: 1;
@@ -811,7 +819,8 @@
stroke-opacity: 1;
}
-.chessB .chess-path-C {
+.Game-Chess .chessB .chess-path-C, .Game-Pawn-Whopping .chessB .chess-path-C,
+ .Game-Checkers .chessW .chess-path-C {
opacity:1;
fill: #fff1d4;
fill-opacity: 1;
@@ -824,7 +833,8 @@
stroke-opacity: 1;
}
-.chessW .chess-path-D {
+.Game-Chess .chessW .chess-path-D, .Game-Pawn-Whopping .chessW .chess-path-D,
+ .Game-Checkers .chessB .chess-path-D {
fill: #fff1d4;
fill-opacity: 0.75;
fill-rule: evenodd;
@@ -837,7 +847,8 @@
stroke-opacity: 1;
}
-.chessB .chess-path-D {
+.Game-Chess .chessB .chess-path-D, .Game-Pawn-Whopping .chessB .chess-path-D,
+ .Game-Checkers .chessW .chess-path-D {
fill: #400827;
fill-opacity: 0.75;
fill-rule: evenodd;
Modified: trunk/Toss/WebClient/Wrapper.py
===================================================================
--- trunk/Toss/WebClient/Wrapper.py 2011-03-12 19:24:32 UTC (rev 1355)
+++ trunk/Toss/WebClient/Wrapper.py 2011-03-13 00:09:53 UTC (rev 1356)
@@ -218,10 +218,10 @@
t = [s.strip() for s in m.split('/')]
return ((float(t[0]), float(t[1])))
- def suggest (self, timeout):
+ def suggest (self, timeout, advr):
loc = self.get_cur_loc ()
(ts, t) = self.get_time ()
- m = self.msg ("EVAL LOC MOVES 4.0 " + str(loc) +
+ m = self.msg ("EVAL LOC MOVES " + str(advr) + ".0 " + str(loc) +
" TIMEOUT "+ str(timeout) + " 55500 alpha_beta_ord")
self.set_time (ts, t)
msg = [s.strip() for s in m.split(';')]
Modified: trunk/Toss/WebClient/contact.html
===================================================================
--- trunk/Toss/WebClient/contact.html 2011-03-12 19:24:32 UTC (rev 1355)
+++ trunk/Toss/WebClient/contact.html 2011-03-13 00:09:53 UTC (rev 1356)
@@ -32,7 +32,8 @@
<ul>
<li><a class="ta" href="http://toss.sourceforge.net/">Toss Homepage</a></li>
<li><a class="ta" href="http://www.playok.com/">Online games on PlayOK</a></li>
-<li><a class="ta" href="http://apronus.com/chess/index.htm">Chess on Apronus</a></li>
+<li><a class="ta" href="http://www.apronus.com/chess/wbeditor.php">Chess
+ on Apronus</a></li>
</ul>
</div>
Modified: trunk/Toss/examples/Pawn-Whopping.toss
===================================================================
--- trunk/Toss/examples/Pawn-Whopping.toss 2011-03-12 19:24:32 UTC (rev 1355)
+++ trunk/Toss/examples/Pawn-Whopping.toss 2011-03-13 00:09:53 UTC (rev 1356)
@@ -8,10 +8,10 @@
REL IsSeventh(x) = ex y (C(x, y) and IsEight(y))
REL WhiteEnds() = (ex x (wP(x) and not ex y C(x, y))) or (not ex z bP(z))
REL BlackEnds() = (ex x (bP(x) and not ex y C(y, x))) or (not ex z wP(z))
-RULE WhiteDiag:
+RULE WhiteBeat:
[ a, b | wP { a }; bP { b } | - ] -> [ a, b | wP { b } | - ] emb wP, bP
pre DiagW(a, b) and not BlackEnds()
-RULE WhiteStraight:
+RULE WhiteMove:
[ | bP:1 {}; R:2 {} | ] "
.
@@ -23,7 +23,7 @@
.
" emb wP, bP pre not BlackEnds()
-RULE WhiteStraightTwo:
+RULE WhiteMoveTwo:
[ | bP:1 {}; R:2 {} | ] "
.
@@ -39,7 +39,7 @@
.
" emb wP, bP pre IsSecond(a1) and not BlackEnds()
-RULE WhitePawnRightDbl:
+RULE WhiteRightPassant:
[ | | ] "
...
?..-bP
@@ -55,7 +55,7 @@
...
....
" emb wP, bP pre not BlackEnds()
-RULE WhitePawnLeftDbl:
+RULE WhiteLeftPassant:
[ | | ] "
...
-bP?
@@ -71,10 +71,10 @@
...
....
" emb wP, bP pre not BlackEnds()
-RULE BlackDiag:
+RULE BlackBeat:
[ a, b | bP { a }; wP { b } | - ] -> [ a, b | bP { b } | - ] emb wP, bP
pre DiagB(a, b) and not WhiteEnds()
-RULE BlackStraight:
+RULE BlackMove:
[ | R:2 {}; wP:1 {} | ] "
bP
@@ -86,7 +86,7 @@
bP
" emb wP, bP pre not WhiteEnds()
-RULE BlackStraightTwo:
+RULE BlackMoveTwo:
[ | R:2 {}; wP:1 {} | ] "
bP
@@ -102,7 +102,7 @@
bP
" emb wP, bP pre IsSeventh(a3) and not WhiteEnds()
-RULE BlackPawnRightDbl:
+RULE BlackRightPassant:
[ | | ] "
...
bP.wP
@@ -118,7 +118,7 @@
...
?...
" emb wP, bP pre not WhiteEnds()
-RULE BlackPawnLeftDbl:
+RULE BlackLeftPassant:
[ | | ] "
...
wP.bP
@@ -140,7 +140,8 @@
1: :(WhiteEnds()) - :(BlackEnds());
2: :(BlackEnds()) - :(WhiteEnds())
}
- MOVES [WhiteDiag -> 1]; [WhiteStraight -> 1]; [WhiteStraightTwo -> 1]
+ MOVES [WhiteBeat -> 1]; [WhiteMove -> 1]; [WhiteMoveTwo -> 1];
+ [WhiteRightPassant -> 1]; [WhiteLeftPassant -> 1]
}
LOC 1 {
PLAYER 2
@@ -148,7 +149,8 @@
1: :(WhiteEnds()) - :(BlackEnds());
2: :(BlackEnds()) - :(WhiteEnds())
}
- MOVES [BlackDiag -> 0]; [BlackStraight -> 0]; [BlackStraightTwo -> 0]
+ MOVES [BlackBeat -> 0]; [BlackMove -> 0]; [BlackMoveTwo -> 0];
+ [BlackRightPassant -> 0]; [BlackLeftPassant -> 0]
}
MODEL [ | | ] "
... ... ... ...
Modified: trunk/Toss/www/contact.xml
===================================================================
--- trunk/Toss/www/contact.xml 2011-03-12 19:24:32 UTC (rev 1355)
+++ trunk/Toss/www/contact.xml 2011-03-13 00:09:53 UTC (rev 1356)
@@ -32,46 +32,57 @@
<section title="Game Playing Links">
- <par><a href="http://www.dozingcatsoftware.com/Gridlock/">Gridlock</a><br/>
- Gridlock is a collection of open-source board games. It is nice to play
- but is does not allow you to change the game in any easy way.</par>
+ <itemize>
+ <item><a href="http://www.apronus.com/chess/wbeditor.php">Apronus Chess
+ Board Editor</a> is our favorite site for simple chess boards.
+ </item>
- <par><br/><a href="http://www.zillions-of-games.com/">Zillions of Games</a><br/>
- Zillions of Games is a language for defining games together with a
- simulator and a large library of games. It is very nice but unluckily
- not open source.</par>
+ <item><a href="http://www.dozingcatsoftware.com/Gridlock/">Gridlock</a>
+ is a collection of open-source board games. It is nice to play
+ but is does not allow you to change the game in any easy way.
+ </item>
- <par><br/><a href="http://www.kurnik.pl/">Kurnik</a><br/>
- Kurnik is a polish site on which you can play various games.</par>
+ <item><a href="http://www.zillions-of-games.com/">Zillions of Games</a>
+ is a language for defining games together with a simulator and a large
+ library of games. It is very nice but unluckily not open source.
+ </item>
- <par><br/><a href="http://abstractstrategy.com/main.html">Abstract Strategy
- Games</a><br/> Abstract Strategy Games site allows you to learn and
- play such games.</par>
+ <item><a href="http://www.kurnik.pl/">Kurnik</a>
+ is a polish site on which you can play various games.</item>
- <par><br/><a href="http://www.yourturnmyturn.com/">Your Turn My Turn</a><br/>
- On Your-Turn-My-Turn you can play various board games online.</par>
+ <item><a href="http://abstractstrategy.com/main.html">Abstract
+ Strategy Games</a> site allows you to learn and play such games.
+ </item>
+
+ <item><a href="http://www.yourturnmyturn.com/">Your Turn My
+ Turn</a> allows you to play various board games online.</item>
+ </itemize>
</section>
<section title="Modelling Links">
- <par><a href="http://edu.kde.org/step/">Step</a><br/>
- Step is an open-source physics simulator, a part of the KDE Education
- Project. It can be used for simulation of systems with continuous
- dynamics.</par>
+ <itemize>
+ <item><a href="http://edu.kde.org/step/">Step</a>
+ is an open-source physics simulator, a part of the KDE Education
+ Project. It can be used for simulation of systems with continuous
+ dynamics.
+ </item>
- <par><br/><a href="http://www.iseesystems.com/softwares/Education/StellaSoftware.aspx">STELLA</a><br/>
- STELLA is a commercial simulator allowing both continuous and discrete
- dynamics.</par>
+ <item><a href="http://www.iseesystems.com/softwares/Education/StellaSoftware.aspx">STELLA</a> is a commercial simulator allowing both continuous
+ and discrete dynamics.
+ </item>
- <par><br/><a href="http://ptolemy.eecs.berkeley.edu/">Ptolemy</a><br/>
- The Ptolemy project studies modelling, simulation, and design of
- concurrent, real-time, embedded systems. This advanced project
- allows to use various models of computation that govern
- the interactions between components.</par>
+ <item><a href="http://ptolemy.eecs.berkeley.edu/">Ptolemy</a> project
+ studies modelling, simulation, and design of concurrent, real-time,
+ embedded systems. This advanced project allows to use various models
+ of computation that govern the interactions between components.
+ </item>
- <par><br/><a href="http://www.microsoft.com/esp/about_esp/overview.htm"
- >Microsoft ESP</a><br/>ESP is a visual simulation platform
- that applies game-based technology to some more complex problems.</par>
+ <item><a href="http://www.microsoft.com/esp/about_esp/overview.htm"
+ >Microsoft ESP</a> is a visual simulation platform
+ that applies game-based technology to some more complex problems.
+ </item>
+ </itemize>
</section>
<section title="Team">
@@ -85,7 +96,7 @@
<item>Michał Wójcik</item>
</itemize>
- <par>Friends who helped us a lot with dicussion and code.</par>
+ <par>Friends who helped us a lot with discussion and code.</par>
<itemize>
<item>Dietmar Berwanger</item>
<item>Matko Botincan</item>
Modified: trunk/Toss/www/create.xml
===================================================================
--- trunk/Toss/www/create.xml 2011-03-12 19:24:32 UTC (rev 1355)
+++ trunk/Toss/www/create.xml 2011-03-13 00:09:53 UTC (rev 1356)
@@ -20,7 +20,7 @@
</itemize>
If you plan to make small changes or an easy experiment, the GUI might
be the better option. For larger or completely new games, it is more
- convenient to edit the files in your favourite text editor.
+ convenient to edit the files in your favorite text editor.
</section>
<section title="Creating Games in Toss GUI">
@@ -28,7 +28,7 @@
<itemize>
<item><em>Download</em> Toss from the
<a href="http://sourceforge.net/project/showfiles.php?group_id=115606">
- Sourceforge Download Page</a>.</item>
+ SourceForge Download Page</a>.</item>
<item><em>Run Toss</em> by clicking <em>Toss.py</em>.
You can start by opening a file from the <em>examples</em>
directory.</item>
@@ -47,7 +47,7 @@
form than from the GUI. To understand the meaning of the fields
in the text file, you should probably first be acquainted with
Toss (e.g. go through the tutorial above) and at least skim through
- the <a href="reference/reference.pdf">referece.pdf</a> file, look
+ the <a href="reference/reference.pdf">reference.pdf</a> file, look
at our <a href="docs.html">documentation</a>. After this, you can
simply edit the .toss file, maybe starting with one of these.
</par>
Modified: trunk/Toss/www/docs.xml
===================================================================
--- trunk/Toss/www/docs.xml 2011-03-12 19:24:32 UTC (rev 1355)
+++ trunk/Toss/www/docs.xml 2011-03-13 00:09:53 UTC (rev 1356)
@@ -5,7 +5,7 @@
<personal>
<title lang="en">Documentation</title>
- <title lang="de">Dokumantation</title>
+ <title lang="de">Dokumentation</title>
<history>
<link id="docs" href="/docs.html">Documentation</link>
</history>
Modified: trunk/Toss/www/ideas.xml
===================================================================
--- trunk/Toss/www/ideas.xml 2011-03-12 19:24:32 UTC (rev 1355)
+++ trunk/Toss/www/ideas.xml 2011-03-13 00:09:53 UTC (rev 1356)
@@ -81,8 +81,8 @@
project, but it can become very interesting in the last phase!
<br/><br/></par>
<par><em>Possible Mentors (in order of preference):</em>
- Łukasz Stafiniak, Łukasz Kaiser,
- Michał Wójcik, Tobias Ganzow
+ Michał Wójcik, Tobias Ganzow,
+ Łukasz Stafiniak, Łukasz Kaiser
</par>
</section>
@@ -204,8 +204,8 @@
defined in GDL, the Game Description Language used in GGP Competitions,
to the Toss format. This allows to compete against GGP players, and we
even won quite a few games already! But the GGP translation is not
- complete and some games are translated to very inefficient variants,
- on which it is almost impossible to play well. The idea is to improve
+ complete, games with recursive definitions cannot be translated yet,
+ and some translated definitions can be large. The idea is to improve
this, but also to cooperate with the GGP guys, especially with the
<a href="http://code.google.com/p/ggp-galaxy/">GGP Galaxy Project</a>,
to make General Game Playing truly accessible for everyone!
@@ -238,4 +238,76 @@
</section>
+ <section title="Idea: Feature Learning">
+ <par><em>Description and Goals.</em>
+ Currently, Toss generates functions for position evaluation form
+ the payoffs and rules of the game in one way, fixed in the code.
+ It would be better to use a weighted mix of various evaluation functions
+ or their parts (which we call <em>features</em>) and learn
+ the appropriate weights by playing them against each other.
+ We expect that this will improve Toss strength significantly.
+ <br/><br/></par>
+ <par><em>Deliverables.</em>
+ By mid-term the basic framework for feature learning should be present,
+ and demonstrated e.g. by learning weights for pieces in chess. By the
+ end, the goals is to replace the default play mode of Toss by one which
+ uses feature learning.
+ <br/><br/></par>
+ <par><em>Modules (in planned construction order).</em>
+ <enumerate>
+ <item>Implement weighted mixing of heuristics (easy)</item>
+ <item>Hook up multi-dimensional optimization (medium, use GSL?)</item>
+ <item>Test weight learning, minimize needed playouts (easy)</item>
+ <item>Create features from various game parts (hard)</item>
+ <item>Memorize learned weights, replace default playout (medium)</item>
+ </enumerate>
+ <br/></par>
+ <par><em>Needed Skills and Difficulty.</em>
+ This is a medium to hard project – a lot depends how many
+ features will be generated and how, but even using just a few should
+ already improve playing strength. OCaml experience is required.
+ <br/><br/></par>
+ <par><em>Possible Mentors (in order of preference):</em>
+ Łukasz Stafiniak, Łukasz Kaiser
+ </par>
+ </section>
+
+ <section title="Idea: Games with Imperfect Information">
+ <par><em>Description and Goals.</em>
+ At present Toss only allows to define games with perfect information,
+ i.e. the complete state is known to all players. The idea to extend
+ Toss to imperfect information games is based on <em>views</em>, which
+ are tuples of formulas which convert the true state into a new structure,
+ which the player sees. Such extension should allow to define some well
+ know games with imperfect information such as a card game or Minesweeper.
+ <br/><br/></par>
+ <par><em>Deliverables.</em>
+ To add views it is necessary to extend the core game definition in Arena,
+ and to adapt many things which rely on this. Such extension, together
+ with a toy example and of course preserving the current functionality
+ should be ready by mid-term. After that, it will be necessary to adapt
+ automatic playing algorithms to take imperfect information into account,
+ and at least one full game with imperfect information should be defined
+ by the end of the project.
+ <br/><br/></par>
+ <par><em>Modules (in planned construction order).</em>
+ <enumerate>
+ <item>Add views to Arena, update everything (medium)</item>
+ <item>Adapt interfaces to account for views (medium)</item>
+ <item>Testing, a toy imperfect information game (easy)</item>
+ <item>Generalize automatic play to imperfect information (hard)</item>
+ <item>Define a full game with imperfect information (medium)</item>
+ </enumerate>
+ <br/></par>
+ <par><em>Needed Skills and Difficulty.</em>
+ Good knowledge of OCaml and some understanding of games with
+ imperfect information will be necessary. This project is medium
+ to hard, depending on how much effort one makes to adapt automatic play.
+ <br/><br/></par>
+ <par><em>Possible Mentors (in order of preference):</em>
+ Łukasz Kaiser, Dietmar Berwanger, Tobias Ganzow
+ </par>
+ </section>
+
+
</personal>
Modified: trunk/Toss/www/index.xml
===================================================================
--- trunk/Toss/www/index.xml 2011-03-12 19:24:32 UTC (rev 1355)
+++ trunk/Toss/www/index.xml 2011-03-13 00:09:53 UTC (rev 1356)
@@ -14,7 +14,7 @@
For example, did you ever wonder how your favorite game would feel
if you removed the middle of the board? With Toss, it is easy to
experiment! And after your game is ready, you can play it online
- and compete with friends!
+ against a computer or compete with your friends!
</par>
</section>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|