1/*
    2The task is to decide whether a machine should be fixed, sent back or is ok.
    3Machines dataset from The ACE Data Mining System User's Manual
    4https://dtai.cs.kuleuven.be/ACE/doc/ACEuser-1.2.16.pdf
    5
    6Downloaded from
    7https://dtai.cs.kuleuven.be/static/ACE/doc/
    8*/

?- in(P),test(P,[all],LL,AUCROC,ROC,AUCPR,PR). */

   13:-use_module(library(slipcover)).   14
   15:- if(current_predicate(use_rendering/1)).   16:- use_rendering(c3).   17:- use_rendering(lpad).   18:- endif.   19
   20:-sc.   21
   22:- set_sc(depth_bound,false).   23:- set_sc(neg_ex,given).   24:- set_sc(megaex_bottom,15).   25:- set_sc(max_iter,10).   26:- set_sc(max_iter_structure,50).   27:- set_sc(verbosity,1).   28
   29
   30:- begin_in.   31class(sendback):-
   32  sendback.
   33
   34class(fix):-
   35  \+ sendback,
   36  fix.
   37
   38class(ok):-
   39  \+ sendback,
   40  \+ fix.
   41
   42sendback:-
   43  worn(_A), 
   44  not_replaceable(_B), 
   45  not_replaceable(C), 
   46  worn(C).
   47
   48fix:-
   49  worn(_A).
   50
   51:- end_in.   52
   53:- begin_bg.   54component(C):-
   55  replaceable(C).
   56component(C):-
   57  not_replaceable(C).
   58replaceable(gear).
   59replaceable(wheel).
   60replaceable(chain).
   61not_replaceable(engine).
   62not_replaceable(control_unit).
   63not_worn(C):-
   64  component(C),
   65  \+ worn(C).
   66one_worn:-
   67  worn(_).
   68none_worn:-
   69  \+ one_worn.
   70:- end_bg.   71
   72fold(train,[1,2,3,4,5,6,7,8,9,10]).
   73
   74fold(test,[11,12,13,14,15]).
   75
   76fold(all,F):-
   77  fold(train,FTr),
   78  fold(test,FTe),
   79  append(FTr,FTe,F).
   80
   81:- fold(all,F),
   82   sample(10,F,FTr,FTe),
   83   assert(fold(rand_train,FTr)),
   84   assert(fold(rand_test,FTe)).   85
   86output(class/1).
   87
   88input_cw(replaceable/1).
   89input_cw(not_replaceable/1).
   90input_cw(worn/1).
   91input_cw(not_worn/1).
   92input_cw(none_worn/0).
   93
   94
   95
   96begin(model(1)).
   97testnr(1).
   98class(sendback).
   99neg(class(fix)).
  100neg(class(ok)).
  101worn(gear).
  102worn(engine).
  103end(model(1)).
  104
  105begin(model(2)).
  106testnr(2).
  107class(ok).
  108neg(class(sendback)).
  109neg(class(fix)).
  110end(model(2)).
  111
  112begin(model(3)).
  113testnr(3).
  114class(fix).
  115neg(class(sendback)).
  116neg(class(ok)).
  117worn(gear).
  118end(model(3)).
  119
  120begin(model(4)).
  121testnr(4).
  122class(sendback).
  123neg(class(fix)).
  124neg(class(ok)).
  125worn(engine).
  126end(model(4)).
  127
  128begin(model(5)).
  129testnr(5).
  130class(fix).
  131neg(class(sendback)).
  132neg(class(ok)).
  133worn(gear).
  134worn(chain).
  135end(model(5)).
  136
  137begin(model(6)).
  138testnr(6).
  139class(fix).
  140neg(class(sendback)).
  141neg(class(ok)).
  142worn(wheel).
  143end(model(6)).
  144
  145begin(model(7)).
  146testnr(7).
  147class(sendback).
  148neg(class(fix)).
  149neg(class(ok)).
  150worn(wheel).
  151worn(control_unit).
  152end(model(7)).
  153
  154begin(model(8)).
  155testnr(8).
  156class(ok).
  157neg(class(sendback)).
  158neg(class(fix)).
  159end(model(8)).
  160
  161begin(model(9)).
  162testnr(9).
  163class(fix).
  164neg(class(sendback)).
  165neg(class(ok)).
  166worn(wheel).
  167worn(chain).
  168end(model(9)).
  169
  170begin(model(10)).
  171testnr(10).
  172class(sendback).
  173neg(class(fix)).
  174neg(class(ok)).
  175worn(engine).
  176worn(chain).
  177end(model(10)).
  178
  179begin(model(11)).
  180testnr(11).
  181class(sendback).
  182neg(class(fix)).
  183neg(class(ok)).
  184worn(engine).
  185worn(control_unit).
  186end(model(11)).
  187
  188begin(model(12)).
  189testnr(12).
  190class(fix).
  191neg(class(sendback)).
  192neg(class(ok)).
  193worn(chain).
  194worn(wheel).
  195worn(gear).
  196end(model(12)).
  197
  198begin(model(13)).
  199testnr(13).
  200class(sendback).
  201neg(class(fix)).
  202neg(class(ok)).
  203worn(chain).
  204worn(wheel).
  205worn(gear).
  206worn(engine).
  207end(model(13)).
  208
  209begin(model(14)).
  210testnr(14).
  211class(ok).
  212neg(class(sendback)).
  213neg(class(fix)).
  214end(model(14)).
  215
  216begin(model(15)).
  217testnr(15).
  218class(fix).
  219neg(class(sendback)).
  220neg(class(ok)).
  221worn(wheel).
  222worn(gear).
  223end(model(15))