Files
stree_datasets/data/tanveer/trains/trains.supplement
2020-11-20 11:23:40 +01:00

409 lines
15 KiB
Plaintext
Executable File
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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.
================================================================================