-
Notifications
You must be signed in to change notification settings - Fork 0
/
00_allthetemplate.clp
executable file
·198 lines (161 loc) · 4.49 KB
/
00_allthetemplate.clp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
(defmodule INITIALIZE
(export defclass MODULE)
(export defclass MODULEPREQ)
(export defclass MODULETAKEN)
(export defclass REQUIREMENT)
(export defclass ELIGIBLEMODULE)
(export defclass ALLMODULE)
(export defclass CANDIDATEMODULE)
(export defclass ELIGIBLEMODULECANSCHEDULE)
(export defclass FOCUSAREA)
(export defclass SPECIALPREREQMODULE)
(export defclass REQUIREDCOREMODULE)
(export defclass MODULEPRECLUDE)
(export defclass ALREADYPRECLUDE)
)
(defmodule AFTERINITIALIZE
(import INITIALIZE defclass ?ALL)
)
(defmodule CLEANING
(import INITIALIZE defclass ?ALL)
)
(defmodule MODULESELECTION
(import INITIALIZE defclass ?ALL)
)
(defmodule TIMETABLE
(import INITIALIZE defclass ?ALL)
)
(defclass INITIALIZE::INTERESTEDTAG
(is-a USER)
(slot tag(create-accessor read-write))
)
(defclass INITIALIZE::INTERESTEDMODULE
(is-a USER)
(slot moduleid )
)
(defclass INITIALIZE::REQUIREDCOREMODULE
(is-a USER)
(slot moduleid )
)
(defclass INITIALIZE::NOTINTERESTEDMODULE
(is-a USER)
(slot moduleid )
)
; Combination of ModuleTaken and CandidateModule
(defclass INITIALIZE::ALLMODULE
(is-a USER)
(slot moduleid (create-accessor read-write))
)
; intermediate staging area before selection to candidate module
(defclass INITIALIZE::ELIGIBLEMODULE
(is-a USER)
(slot moduleid )
(slot moduletagscore (type NUMBER))
(slot modulelevel (type NUMBER))
(slot desirable (default YES))
(multislot moduletype)
(slot sacrificable)
)
; pre-requisite that cannot be done using normal rule matching
(defclass INITIALIZE::SPECIALPREREQMODULE
(is-a USER)
(slot moduleid)
)
(defclass INITIALIZE::MODULETAKEN
(is-a USER)
(slot moduleid (create-accessor read-write))
)
(defclass INITIALIZE::CANDIDATEMODULE
(is-a USER)
(slot moduleid )
(slot moduletagscore (type NUMBER))
(slot location)
)
(defclass INITIALIZE::MODULE
(is-a USER)
(slot moduleid)
(slot moduledescription)
(slot mc (type NUMBER))
(slot modulepriority)
(slot modulelevel)
(multislot moduletype)
(slot desirable (default YES) (create-accessor read-write))
(slot moduletagscore (type NUMBER)(default 0) (create-accessor read-write) )
)
(defclass INITIALIZE::MODULEPREQ
(is-a USER)
(slot moduleid)
(multislot modulepreq)
)
(defclass INITIALIZE::MODULEPRECLUDE
(is-a USER)
(slot moduleid)
(slot moduleidpreclusion)
)
; to store preclude list so that it won't be taken during eligible module
(defclass INITIALIZE::ALREADYPRECLUDE
(is-a USER)
(slot moduleid)
)
(defclass INITIALIZE::MODULETAG
(is-a USER)
(slot moduleid)
(slot moduletag)
(slot moduletagscore (type NUMBER))
)
(defclass TIMETABLE::MODULETIME
(is-a USER)
(slot moduleid)
(slot day)
(slot starttime (type NUMBER))
(slot endtime (type NUMBER))
(slot semester (type NUMBER))
(slot moduleoption )
(slot lecturetype )
)
(defclass INITIALIZE::REQUIREMENT
(is-a USER)
(slot username)
(slot UE (create-accessor read-write))
(slot SS (create-accessor read-write))
(slot breadth (create-accessor read-write))
(slot GEM (create-accessor read-write))
(slot focusarea (create-accessor read-write))
(slot focusareamodule (default 3))
(slot focusarealevel4 (default 3))
(slot focusareamc (default 24))
(slot modulepersem (create-accessor read-write))
(slot graduatefrom (create-accessor read-write))
(slot cohort (create-accessor read-write))
(slot science (default 12)(create-accessor read-write))
(slot takeFYP (create-accessor read-write) (default NO))
(slot takeFYPlevel4 (default 3) (create-accessor read-write))
(slot level1mc (create-accessor read-write) (default 0) )
)
(defclass INITIALIZE::FOCUSAREA
(is-a USER)
(slot moduleid)
(slot type)
(slot check (default NO))
)
(defclass INITIALIZE::SCORE
(is-a USER)
(slot focusscoreprimary)
(slot focussecondary)
(slot interestedmodule)
(slot notinterestedmodule (default 50))
(slot level1additionalscore (default 20))
(slot level2additionalscore (default 15))
(slot level3additionalscore (default 10))
(slot csscore (default 30))
)
(defclass TIMETABLE::EXAM
(is-a USER)
(slot moduleid)
(slot exam-date)
(slot exam-time)
)
; pauline
(defclass INITIALIZE::ELIGIBLEMODULECANSCHEDULE
(is-a USER)
(slot moduleid))