Received: from ai.iit.nrc.ca by paris.ics.uci.edu id aa25214; 9 Apr 96 6:03 PDT
Received: from ksl0j.ai.iit.nrc.ca by deeitis1.ai.iit.nrc.ca (SMI-8.6/SMI-SVR4)
	id JAA07371; Tue, 9 Apr 1996 09:04:08 -0400
Received: by ksl0j.ai.iit.nrc.ca (5.x/SMI-SVR4)
	id AA17463; Tue, 9 Apr 1996 08:03:52 -0500
Date: Tue, 9 Apr 1996 08:03:52 -0500
From: Peter Turney <peter@ai.iit.nrc.ca>
Message-Id: <9604091303.AA17463@ksl0j.ai.iit.nrc.ca>
To: cmerz@saanen.ICS.UCI.EDU
Subject: Re: UCI repository news
Cc: peter@ai.iit.nrc.ca
X-Sun-Charset: US-ASCII

*** EOOH ***
Date: Tue, 9 Apr 1996 08:03:52 -0500
From: Peter Turney <peter@ai.iit.nrc.ca>
To: cmerz@saanen.ICS.UCI.EDU
Subject: Re: UCI repository news
Cc: peter@ai.iit.nrc.ca
X-Sun-Charset: US-ASCII


Dear Chris:

> This message is to announce that I will be taking over the duties of
> the UCI Machine Learning Database Repository coordinator. At this time
> I'd like to thank the previous coordinator, Pat Murphy, for his
> efforts to improve upon the repository, and I invite new ideas from
> those of you using the repository so that I may do the same. This
> includes constructive criticism as well as new databases!

This is intended to supplement the "trains" data in
"ftp://ftp.ics.uci.edu/pub/machine-learning-databases/trains/".

When I donated the material relating to the "East-West Challenge",
for the ML Repository, I neglected to mention that Donald Michie
held another train contest. This later contest involved 24 trains,
12 eastbound and 12 westbound. Below is some information on this
contest. You might like to include this information in the ML Repository.

Best wishes,
Peter.



================================================================================


	24 TRAINS: THE PROBLEM
	----------------------

From: fred4@cse.unsw.edu.au
To: peter@ai.iit.nrc.ca
Date: Thu, 24 Nov 94 11:12:43 +1100
Subject: Trains


Dear Peter

David Page sent me a copy of your email to him. I would be very interested
in seeing a copy of your draft paper for IJCAI-95.

You may want to know of a 12 versus 12 trains-discrimination problem that I
published on 18th November for brains-only entrants from the readers of
Computing magazine. Yesterday I sent copies of the problem to Bernhard
Pfahringer and to Ryszard Michalski's group, from both of which I had
received expressions of interest. There is a secret rule for the OK
property, which will be used as default oracle in judging my brains-only
entrants. This time I will be mildly surprised if ILP treatment yields
anything simpler from this material than this "official rule", but
immensely interested if such an improved rule is found. The problem is as
follows:

:-not_OK([c(1,u_shaped,short,not_double,none,2,l(triangle,1)),
          c(2,bucket,short,not_double,none,2,l(circle,1)),
          c(3,rectangle,short,not_double,none,2,l(triangle,1)),
          c(4,u_shaped,short,not_double,none,2,l(circle,1))]).

:-not_OK([c(1,rectangle,long,not_double,jagged,2,l(circle,1)),
          c(2,rectangle,short,double,none,2,l(diamond,1)),
          c(3,rectangle,long,not_double,jagged,2,l(rectangle,1)),
          c(4,rectangle,long,not_double,flat,3,l(rectangle,1))]).

:-not_OK([c(1,u_shaped,short,not_double,none,2,l(circle,1)),
          c(2,bucket,short,not_double,flat,2,l(triangle,1)),
          c(3,u_shaped,short,not_double,none,2,l(circle,1)),
          c(4,u_shaped,short,not_double,none,2,l(rectangle,1))]).

:-not_OK([c(1,ellipse,short,not_double,arc,2,l(rectangle,1)),
          c(2,rectangle,long,not_double,none,3,l(hexagon,2))]).

:-not_OK([c(1,u_shaped,short,not_double,none,2,l(circle,1)),
          c(2,rectangle,short,not_double,none,2,l(triangle,1)),
          c(3,rectangle,long,not_double,none,2,l(rectangle,3)),
          c(4,u_shaped,short,not_double,none,2,l(diamond,1))]).

:-not_OK([c(1,u_shaped,short,not_double,none,2,l(triangle,1)),
          c(2,rectangle,short,not_double,none,2,l(circle,1)),
          c(3,u_shaped,short,not_double,none,2,l(rectangle,1))]).

:-not_OK([c(1,rectangle,long,not_double,none,2,l(utriangle,1)),
          c(2,u_shaped,short,not_double,flat,2,l(triangle,2)),
          c(3,hexagon,short,not_double,flat,2,l(circle,1))]).

:-not_OK([c(1,bucket,short,not_double,none,2,l(triangle,1)),
          c(2,rectangle,long,not_double,none,2,l(rectangle,1)),
          c(3,u_shaped,short,not_double,none,2,l(triangle,1))]).

:-not_OK([c(1,u_shaped,short,not_double,none,2,l(triangle,1)),
          c(2,u_shaped,short,not_double,none,2,l(circle,1)),
          c(3,u_shaped,short,not_double,none,2,l(triangle,2))]).

:-not_OK([c(1,rectangle,long,not_double,none,3,l(rectangle,3)),
          c(2,hexagon,short,not_double,flat,2,l(diamond,1)),
          c(3,rectangle,short,not_double,none,2,l(triangle,1)),
          c(4,hexagon,short,not_double,flat,2,l(circle,1))]).

:-not_OK([c(1,rectangle,long,not_double,none,2,l(none,0)),
          c(2,rectangle,short,not_double,none,2,l(rectangle,2)),
          c(3,u_shaped,short,not_double,none,2,l(circle,1))]).

:-not_OK([c(1,rectangle,long,not_double,none,2,l(rectangle,1)),
          c(2,u_shaped,short,not_double,flat,2,l(circle,1)),
          c(3,rectangle,long,not_double,none,2,l(rectangle,1)),
          c(4,u_shaped,short,not_double,none,2,l(circle,1))]).

:-OK([c(1,rectangle,long,not_double,flat,3,l(rectangle,1)),
         c(2,rectangle,long,not_double,flat,2,l(none,0)),
         c(3,rectangle,short,double,none,2,l(circle,1)),
         c(4,rectangle,short,not_double,none,2,l(circle,1))]).

:-OK([c(1,rectangle,short,double,none,2,l(circle,1)),
         c(2,u_shaped,short,not_double,none,2,l(circle,1)),
         c(3,bucket,short,not_double,none,2,l(triangle,1))]).

:-OK([c(1,u_shaped,short,not_double,none,2,l(circle,1)),
        c(2,u_shaped,short,not_double,peaked,2,l(rectangle,1)),
        c(3,bucket,short,not_double,none,2,l(diamond,1))]).

:-OK([c(1,rectangle,short,double,none,2,l(circle,1)),
        c(2,rectangle,short,not_double,none,2,l(circle,2))]).

:-OK([c(1,rectangle,long,not_double,flat,3,l(none,0)),
        c(2,rectangle,long,not_double,flat,2,l(rectangle,1)),
        c(3,u_shaped,short,not_double,peaked,2,l(circle,1)),
        c(4,rectangle,short,not_double,none,2,l(circle,1))]).

:-OK([c(1,rectangle,short,double,none,2,l(rectangle,1)),
        c(2,rectangle,short,not_double,peaked,2,l(circle,1))]).

:-OK([c(1,rectangle,long,not_double,jagged,2,l(circle,1)),
        c(2,rectangle,short,not_double,none,2,l(circle,1)),
        c(3,u_shaped,short,not_double,flat,2,l(triangle,1)),
        c(4,rectangle,short,not_double,peaked,2,l(triangle,1))]).

:-OK([c(1,rectangle,long,not_double,jagged,3,l(hexagon,1)),
        c(2,bucket,short,not_double,peaked,2,l(triangle,1)),
        c(3,rectangle,short,not_double,none,2,l(triangle,1)),
        c(4,u_shaped,short,not_double,none,2,l(triangle,1))]).

:-OK([c(1,rectangle,long,not_double,flat,2,l(rectangle,1)),
        c(2,rectangle,long,not_double,flat,2,l(hexagon,1)),
        c(3,rectangle,short,not_double,none,2,l(circle,1)),
        c(4,bucket,short,not_double,none,2,l(circle,1))]).

:-OK([c(1,rectangle,short,double,none,2,l(triangle,1)),
          c(2,u_shaped,short,not_double,none,2,l(triangle,1)),
          c(3,rectangle,short,not_double,none,2,l(triangle,1))]).

:-OK([c(1,rectangle,short,not_double,none,2,l(rectangle,1)),
         c(2,u_shaped,short,not_double,none,2,l(circle,1)),
         c(3,u_shaped,short,not_double,none,2,l(circle,1)),
         c(4,rectangle,short,double,none,2,l(rectangle,2))]).

:-OK([c(1,rectangle,short,double,peaked,2,l(circle,2)),
        c(2,u_shaped,short,not_double,none,2,l(triangle,1)),
        c(3,rectangle,short,not_double,flat,2,l(triangle,1)),
        c(4,rectangle,long,not_double,flat,2,l(rectangle,2))]).

With best wishes


Donald Michie





================================================================================


	24 TRAINS: THE RESULTS
	----------------------


From: fred4@cse.unsw.edu.au
To: peter@ai.iit.nrc.ca
Date: Mon, 5 Dec 94 15:25:46 +1100
Subject: Results on trains


Dear Peter

I emailed today to Computing magazine my  adjudication of the 
new trains competition, and reproduce below the  notes I made 
for it. The results have several points of interest. Your rule 
beat all brains-only creations on Trolog  complexity, and all 
but  the   "official"  rule   (and  its   single-substitution   
lookalike) on Trenglish. The high Trenglish complexity of the 
remarkable Pfahringer4 rule is paralleled by its opacity to 
human comprehension, in turn  attributable to the  nesting of 
one if-then-else  inside  another.  Machine execution  is  no  
problem, but  for  human  execution  such  a  structure  puts  
non-trivial strain on working memory.

A conspicuous feature is that there is still a multiplicity of 
near-optimal solutions. I'll expand the next competition to 16 
versus 16 discrimination. Beyond that, I run into problems with 
the amount of page-space  allotted me by Computing.  But, who 
knows, 32  trains may  represent  a sufficient  combinatorial  
escalation to  thin out chance near misses to  the point  that 
theory-discovery takes  over  from  theory-invention.  I  use  
"discovery" rather than "invention" when only one rule is both 
succinct and consistent with the data.

This Trenglish vehicle has a long way to go.  As a first step 
towards mechanization, I have made it into a DCG grammar, 
perforce once more enhanced  in response to  Pfahringer4. The 
cases where discepancies between the  two complexity measures 
are most  extreme  do seem  to  correlate with  corresponding  
variations in human-intelligibility. So to that extent I feel 
encouraged. My hope is that  it may become a useful  form for 
human-style domain knowledge into which statistical as well as 
logical regularities can be incrementally absorbed.

TOP  BRAINS-ONLY  ENTRIES:  DESCENDING  ORDER   OF  TRENGLISH  
SCORES

Spenceley's rule (Computing magazine entry) in Trenglish:

[If] [a train] [has]
[a] [car] [with] [a peaked roof]
[or] [a sequence of] [cars] [with] [a circular load]
[or] [a sequence of] [three] [cars] [with] [a triangular load]
[then OK] [otherwise not_OK].  Trenglish: 20
                                  Trolog: 35

Spenceley's rule in Trolog follows:

ok(T):- has_car(T,C), arg(5,C,peaked);
  infront(T,C1,C2), infront(T,C2,C3), 
  (has_load0(C1,circle), has_load0(C2,circle);
  has_load0(C1,triangle), has_load0(C2,triangle),                
   has_load0(C3,triangle)).

Pennifold's rule (Computing magazine entry) in Trenglish:

[If] [a train] [has]
[a] [car] [with]
[either] [a peaked roof]
[or] [a triangular load] [and] [a double wall]
[or] [a sequence of] [two] [cars] [with] [a circular load]
[then OK] [otherwise not_OK].  Trenglish: 20
                                  Trolog: 27

Pennifold's rule in Trolog follows:

ok(T):- has_car(T,C), (arg(5,C,peaked);
 has_load0(C,triangle), double(C));
 infront(T,C1,C2), has_load0(C1,circle), hasload0(C2,circle).

Shaw's rule (Computing magazine entry) in Trenglish:

[If] [a train] [has]
[a first] [car] [with] [a double wall]
[or] [a] [car] [with] [a peaked roof]
[or] [a sequence of] [two] [cars] [with] [a circular load]
[then OK] [otherwise not_OK].  Trenglish: 20
                                  Trolog: 27

Shaw's rule in Trolog follows:

ok(T):- arg(1,T,C), double(C);
 has_car(T,C), arg(5,C,peaked);
 infront(T,C1,C2), has_load0(C1,circle), has_load0(C2,circle).

"Official rule" in Trenglish (Computing magazine entry from N. 
Howell was equivalent):

[If] [a train] [has]
[a] [car] [with] [a peaked.roof]
[or]  [a  sequence  of] [short] [cars] [with] [the sameload_shape]
[then OK] [otherwise not_OK].  Trenglish 15
                                  Trolog 25

Official rule in Trolog follows:

ok(T):- has_car(T,C), arg(5,C,peaked);
 infront(T,C1,C2), short(C1),  short(C2), has_load0(C1,Shape),  
 has_load0(C2,Shape).

One Computing magazine entry, from G.  Little, was equivalent 
to the  above  rule  with  "open"  substituted  for  "short",  
yielding an equally complete and correct solution.

PROGRAM-GENERATED SOLUTIONS: DESCENDING ORDER OF TROLOG SCORES

Pfahringer1 rule in Trenglish:

[If] [a train] [has] 
[a first car] [with]
[either] [a double wall]
[or] [a flat roof]
[or] [a short body] [and] [a rectangle shape]
[or] [a] [successor] [with] [a peaked roof]
[then OK] [otherwise not_OK].  Trenglish 20
                                  Trolog 25

Pfahringer1 rule in Trolog follows:

ok([X|L]):- (double(X);
  arg(5,X,flat);
  short(X), rectangle(X);
  has_car(L,Y), arg(5,Y,peaked)).

Turney1 rule in Trenglish:

[If] [a train] [has]
[a] [car] [with]
[either] [a peaked roof]
[or] [a double wall] [and] [a non_][diamond load]
[or] [a hexagonal load] [and] [a closed form]
[then OK] [otherwise not_OK].  Trenglish 19
                                  Trolog 23

Turney1 rule in Trolog follows:

ok(T):- has_car(T,C), (arg(5,C,peaked);
 double(C), not has_load0(C,diamond);
 has_load0(C,hexagon), closed(C)).

Pfahringer2 rule in Trenglish:

[If] [a train] [has]
[a first]  [car]  [with] [either]  [a  short  body] [and]
 [a rectangle shape]
[or] [a flat roof]
[or] [a] [successor] [with] [a peaked roof]
[then OK] [otherwise not_OK].  Trenglish 19
                                  Trolog 22

Pfahringer2 rule in Trolog follows:

ok([X|L]):- short(X), rectangle(X);
  arg(5,X,flat);
  has_car(L,Y), arg(5,Y,peaked).

Pfahringer3 rule in Trenglish:

[If] [a train] [has]
[a first]  [car]  [with] [either]  [a  short  body] [and]  [a  
rectangle shape]
[or] [either] [a closed form] 
[or] [a sequence of] [successors] [with] [a non_first]
[car] [with] [a bucket shape]
[then OK] [otherwise not_OK].  Trenglish 23
                                  Trolog 21

Pfahringer3 rule in Trolog follows:

ok(X|L):- short(X), rectangle(X);
  infront(L,_,Z), short(Z), (bucket(Z);closed (X)).

Pfahringer4  rule   in   pseudo-Trenglish  (ad   hoc   syntax   
extension):

[If] [a train] [has]
[a diamond load] [then] [if] [it has] [exactly] [three] [cars]
[then OK] [otherwise not_OK]
[otherwise if] [it has] [a] [rectangular] [first] [car] [with]
[either] [a short body]
[or] [a closed form]
[then OK] [otherwise not_OK].  Trenglish 25
                                  Trolog 20

Pfahringer rule in Trolog follows:

ok([X|L]):- has_load1(L,diamond) ->  len1(L,2); rectangle(X), 
  (short(X); closed(X)).

I am  very  delighted that  you  tried  your system  on  this  
material, and hope  you will  again next  time round. As  the 
combinatorial space increases it is unclear to me whether this 
will preferentially favour your system or  Pfahringer's. I am 
fairly, but not absolutely, certain that it will disfavour the 
unaided brains of Computing's readers. We shall see.

I hope within the next few days to send you some comments on your 
interesting paper.

Best wishes

Donald Michie.


================================================================================


