/////////////////////////////////////////////////////////////////////////////////
//                                                                             //
//                                                                             //
// RDDL MDP version of Academic Advising instance #05 for IPC 2018 by Thomas   //
// Keller (tho.keller [at] unibas.ch), based on the IPC 2014 domain by Libby   //
// Ferland (libby.knouse [at] uky.edu).                                        //
//                                                                             //
//                                                                             //
// The naive policy that ignores all preconditions and takes courses that are  //
// program requirements until it succeeds is expected to complete the program  //
// after 11.00 steps with an expected reward of -85.20.                        //
//                                                                             //
//                                                                             //
/////////////////////////////////////////////////////////////////////////////////

instance academic-advising_inst_mdp__05 {
    domain = academic-advising_mdp;
    objects {
       course : { c0000, c0001, c0002, c0003, c0004, c0005, c0100, c0101, c0102, c0103, c0104, c0200, c0201, c0202, c0203, c0204, c0300, c0301, c0302, c0303, c0304, c0400, c0401, c0402, c0403 };
    };

    non-fluents {
        COURSES_PER_SEMESTER = 2;

        // PRIOR PROBS
        PRIOR_PROB_PASS_NO_PREREQ(c0000) = 0.47;
        PRIOR_PROB_PASS_NO_PREREQ(c0001) = 0.88;
        PRIOR_PROB_PASS_NO_PREREQ(c0002) = 0.43;
        PRIOR_PROB_PASS_NO_PREREQ(c0003) = 0.81;
        PRIOR_PROB_PASS_NO_PREREQ(c0004) = 0.79;
        PRIOR_PROB_PASS_NO_PREREQ(c0005) = 0.78;
        PRIOR_PROB_PASS(c0100) = 0.13;
        PRIOR_PROB_PASS(c0101) = 0.07;
        PRIOR_PROB_PASS(c0102) = 0.31;
        PRIOR_PROB_PASS(c0103) = 0.24;
        PRIOR_PROB_PASS(c0104) = 0.09;
        PRIOR_PROB_PASS(c0200) = 0.38;
        PRIOR_PROB_PASS(c0201) = 0.32;
        PRIOR_PROB_PASS(c0202) = 0.25;
        PRIOR_PROB_PASS(c0203) = 0.21;
        PRIOR_PROB_PASS(c0204) = 0.42;
        PRIOR_PROB_PASS(c0300) = 0.10;
        PRIOR_PROB_PASS(c0301) = 0.10;
        PRIOR_PROB_PASS(c0302) = 0.40;
        PRIOR_PROB_PASS(c0303) = 0.10;
        PRIOR_PROB_PASS(c0304) = 0.18;
        PRIOR_PROB_PASS(c0400) = 0.17;
        PRIOR_PROB_PASS(c0401) = 0.41;
        PRIOR_PROB_PASS(c0402) = 0.36;
        PRIOR_PROB_PASS(c0403) = 0.14;

        // PREREQ
        PREREQ(c0002, c0100);
        PREREQ(c0001, c0100);
        PREREQ(c0003, c0101);
        PREREQ(c0000, c0101);
        PREREQ(c0003, c0102);
        PREREQ(c0002, c0103);
        PREREQ(c0004, c0103);
        PREREQ(c0005, c0104);
        PREREQ(c0004, c0104);
        PREREQ(c0001, c0104);
        PREREQ(c0100, c0200);
        PREREQ(c0104, c0200);
        PREREQ(c0004, c0201);
        PREREQ(c0104, c0201);
        PREREQ(c0003, c0202);
        PREREQ(c0104, c0202);
        PREREQ(c0102, c0202);
        PREREQ(c0004, c0203);
        PREREQ(c0002, c0203);
        PREREQ(c0000, c0204);
        PREREQ(c0100, c0204);
        PREREQ(c0203, c0300);
        PREREQ(c0003, c0301);
        PREREQ(c0200, c0301);
        PREREQ(c0200, c0302);
        PREREQ(c0005, c0302);
        PREREQ(c0201, c0303);
        PREREQ(c0100, c0303);
        PREREQ(c0104, c0304);
        PREREQ(c0100, c0304);
        PREREQ(c0200, c0304);
        PREREQ(c0201, c0400);
        PREREQ(c0303, c0400);
        PREREQ(c0101, c0401);
        PREREQ(c0102, c0401);
        PREREQ(c0304, c0402);
        PREREQ(c0103, c0402);
        PREREQ(c0203, c0403);
        PREREQ(c0301, c0403);

        // PROGRAM REQUIREMENT
        PROGRAM_REQUIREMENT(c0400);
        PROGRAM_REQUIREMENT(c0401);
        PROGRAM_REQUIREMENT(c0004);
        PROGRAM_REQUIREMENT(c0001);
        PROGRAM_REQUIREMENT(c0005);
        PROGRAM_REQUIREMENT(c0201);
        PROGRAM_REQUIREMENT(c0102);

        // COURSE COSTS
        COURSE_COST = -1;
        COURSE_RETAKE_COST = -2;

    };

    init-state {
        ~passed(c0000);
    };

    horizon  = 20;

    discount = 1.0;
}