]> git.somenet.org - pub/jan/ewbs-dlv.git/blob - c.dl
GITOLITE.txt
[pub/jan/ewbs-dlv.git] / c.dl
1 % control definition.
2 % o1: psh, o2:w, o3:f, o4:s, o5:scharge
3 % und jetzt alle komponenten-maxima-abfragen schön hardcoden -.-
4
5 %windfail: returns c_max(w) if the wind is good, 0 otherwise.
6 c_max_w(Wind,WM) :- c_max(w,WMAX), Wind >= 5, Wind <= 40, WM = WMAX, #int(WM), #int(WMAX), #int(Wind).
7 c_max_w(Wind,WM) :- Wind < 5, WM = 0, #int(WM), #int(WMAX), #int(Wind).
8 c_max_w(Wind,WM) :- Wind > 40, WM = 0, #int(WM), #int(WMAX), #int(Wind).
9
10 %oow: out of water exception: returns c_max(psh) if the waterstate is good, 0 otherwise.
11 c_max_p(State,PM) :- c_max(psh,PMAX), State = full, PM = PMAX, #int(PM), #int(PMAX).
12 c_max_p(State,PM) :- c_max(psh,PMAX), State = half_full, PM = PMAX, #int(PM), #int(PMAX).
13 c_max_p(State,PM) :- State = empty, PM = 0, #int(PM).
14
15 % noop
16 c(C,o1,OP) :- not ab(C), control(C), c(C,i1,Icur), c(C,i2,Idem), c(C,i3,full), Idem <= Icur, OP = 0, #int(OP).
17 c(C,o2,OP) :- not ab(C), control(C), c(C,i1,Icur), c(C,i2,Idem), c(C,i3,full), Idem <= Icur, OP = 0, #int(OP).
18 c(C,o3,OP) :- not ab(C), control(C), c(C,i1,Icur), c(C,i2,Idem), c(C,i3,full), Idem <= Icur, OP = 0, #int(OP).
19 c(C,o4,OP) :- not ab(C), control(C), c(C,i1,Icur), c(C,i2,Idem), c(C,i3,full), Idem <= Icur, OP = 0, #int(OP).
20 c(C,o5,OP) :- not ab(C), control(C), c(C,i1,Icur), c(C,i2,Idem), c(C,i3,full), Idem <= Icur, OP = 0, #int(OP).
21
22 % noop if no demand
23 c(C,o1,OP) :- not ab(C), control(C), c(C,i1,Icur), c(C,i2,Idem), not c(C,i3,full), Idem = Icur, OP = 0, #int(OP).
24 c(C,o2,OP) :- not ab(C), control(C), c(C,i1,Icur), c(C,i2,Idem), not c(C,i3,full), Idem = Icur, OP = 0, #int(OP).
25 c(C,o3,OP) :- not ab(C), control(C), c(C,i1,Icur), c(C,i2,Idem), not c(C,i3,full), Idem = Icur, OP = 0, #int(OP).
26 c(C,o4,OP) :- not ab(C), control(C), c(C,i1,Icur), c(C,i2,Idem), not c(C,i3,full), Idem = Icur, OP = 0, #int(OP).
27 c(C,o5,OP) :- not ab(C), control(C), c(C,i1,Icur), c(C,i2,Idem), not c(C,i3,full), Idem = Icur, OP = 0, #int(OP).
28
29 % charge psh (over max)
30 c(C,o1,charge) :- not ab(C), control(C), c(C,i1,Icur), c(C,i2,Idem), not c(C,i3,full), w_charge(IMAXpc), Idem < Icur.
31 c(C,o2,OP) :- not ab(C), control(C), c(C,i1,Icur), c(C,i2,Idem), not c(C,i3,full), w_charge(IMAXpc), Idem < Icur, OP = 0, #int(OP).
32 c(C,o3,OP) :- not ab(C), control(C), c(C,i1,Icur), c(C,i2,Idem), not c(C,i3,full), w_charge(IMAXpc), Idem < Icur, OP = 0, #int(OP).
33 c(C,o4,OP) :- not ab(C), control(C), c(C,i1,Icur), c(C,i2,Idem), not c(C,i3,full), w_charge(IMAXpc), Idem < Icur, OP = 2, #int(OP).
34 c(C,o5,OP) :- not ab(C), control(C), c(C,i1,Icur), c(C,i2,Idem), not c(C,i3,full), w_charge(IMAXpc), Idem < Icur, Tava = Icur - Idem, Tava <= IMAXpc, OP = Tava, #int(OP).
35 c(C,o5,OP) :- not ab(C), control(C), c(C,i1,Icur), c(C,i2,Idem), not c(C,i3,full), w_charge(IMAXpc), Idem < Icur, Tava = Icur - Idem, Tava > IMAXpc, OP = IMAXpc, #int(OP).
36
37 % Produce energy.
38 c(C,o4,OP) :- not ab(C), control(C), c(C,i1,Icur), c(C,i2,Idem), Idem > Icur, OP = 1, #int(OP).
39 c(C,o5,OP) :- not ab(C), control(C), c(C,i1,Icur), c(C,i2,Idem), Idem > Icur, OP = 0, #int(OP).
40
41
42 % Treq = to request is <= c_max(w). request o2 = Treq.
43 c(C,o2,OP) :- not ab(C), control(C), c(C,i1,Icur), c(C,i2,Idem), c(C,i4,Iw), Idem > Icur, Treq = Idem - Icur, c_max_w(Iw,WMAX), Treq <= WMAX, OP = Treq, #int(OP).
44 c(C,o1,OP) :- not ab(C), control(C), c(C,i1,Icur), c(C,i2,Idem), c(C,i4,Iw), Idem > Icur, Treq = Idem - Icur, c_max_w(Iw,WMAX), Treq <= WMAX, OP = 0, #int(OP).
45 c(C,o3,OP) :- not ab(C), control(C), c(C,i1,Icur), c(C,i2,Idem), c(C,i4,Iw), Idem > Icur, Treq = Idem - Icur, c_max_w(Iw,WMAX), Treq <= WMAX, OP = 0, #int(OP).
46
47 % Treq > c_max(w). request o2 = c_max(w) + other
48 c(C,o2,OP) :- not ab(C), control(C), c(C,i1,Icur), c(C,i2,Idem), c(C,i4,Iw), Idem > Icur, Treq = Idem - Icur, c_max_w(Iw,WMAX), Treq > WMAX, OP = WMAX, #int(OP).
49
50 c(C,o1,OP) :- not ab(C), control(C), c(C,i1,Icur), c(C,i2,Idem), c(C,i4,Iw), Idem > Icur, Treq = Idem - Icur, c_max_w(Iw,WMAX), Treq > WMAX, Treqw = Treq - WMAX,
51               c(C,i3,IS), c_max_p(IS,PMAX), Treqw <= PMAX, OP = Treqw, #int(OP).
52
53 c(C,o3,OP) :- not ab(C), control(C), c(C,i1,Icur), c(C,i2,Idem), c(C,i4,Iw), Idem > Icur, Treq = Idem - Icur, c_max_w(Iw,WMAX), Treq > WMAX, Treqw = Treq - WMAX,
54               c(C,i3,IS), c_max_p(IS,PMAX), Treqw <= PMAX, OP = 0, #int(OP).
55
56 % Treq > c_max(w) + c_max(psh).
57 c(C,o1,OP) :- not ab(C), control(C), c(C,i1,Icur), c(C,i2,Idem), c(C,i4,Iw), Idem > Icur, Treq = Idem - Icur, c_max_w(Iw,WMAX), Treq > WMAX, Treqw = Treq - WMAX,
58               c(C,i3,IS), c_max_p(IS,PMAX), Treqw > PMAX, OP = PMAX, #int(OP).
59
60 c(C,o3,OP) :- not ab(C), control(C), c(C,i1,Icur), c(C,i2,Idem), c(C,i4,Iw), Idem > Icur, Treq = Idem - Icur, c_max_w(Iw,WMAX), Treq > WMAX, Treqw = Treq - WMAX,
61               c(C,i3,IS), c_max_p(IS,PMAX), Treqw > PMAX, Treqwp = Treqw - PMAX, c_max(f,FMAX), Treqwp <= FMAX, OP = Treqwp, #int(OP).
62
63 % Treq hopelessly over our capacity
64 c(C,o3,OP) :- not ab(C), control(C), c(C,i1,Icur), c(C,i2,Idem), c(C,i4,Iw), Idem > Icur, Treq = Idem - Icur, c_max_w(Iw,WMAX), Treq > WMAX, Treqw = Treq - WMAX,
65               c(C,i3,IS), c_max_p(IS,PMAX), Treqw > PMAX, Treqwp = Treqw - PMAX, c_max(f,FMAX), Treqwp > FMAX, OP = FMAX, #int(OP).
66