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*/

?- induce([train],P),test(P,[test],LL,AUCROC,ROC,AUCPR,PR). ?- induce([rand_train],P),test(P,[rand_test],LL,AUCROC,ROC,AUCPR,PR). */

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