-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathOptiFlow_equations.inc
612 lines (474 loc) · 52.8 KB
/
OptiFlow_equations.inc
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
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
* "Objective function value assuming weighted objectives values technique"
* ihoursinst: done in QINDICQUANT
QOBJW..
VOBJW =E=
* BB4: SUM(Y$IY411(Y)
SUM((FLOWINDIC),VFLOWINDICVALUES(FLOWINDIC)*INDICLIMGOAL(FLOWINDIC,'INDICWEIGHT')
* Investment costs !! TODO: shall it be here, or e.g. in VFLOWINDICVALUES , or in ..
- SUM((IA,PROC)$IAPROCKAPNEW(IA,PROC),
IOF1000000*PROCDATA(PROC,'PROCINVCOST')*INDICLIMGOAL(FLOWINDIC,'INDICWEIGHT')*VPROCKAPNEW(IA,PROC)*(RateOfReturn/(1-((1+RateOfReturn)**(-PROCDATA(PROC,'PROCLIFETIME'))))))
- SUM((IA,PROC,FLOW,IFLOWINOUT)$(PROCKAPDATA(PROC,FLOW,IFLOWINOUT) AND (IAPROCKAPNEW(IA,PROC) OR IPROCKAPFX(IA,PROC))),
PROCDATA(PROC,'PROCFIXCOST')*INDICLIMGOAL(FLOWINDIC,'INDICWEIGHT')*
(VPROCKAPNEW(IA,PROC)$(IAPROCKAPNEW(IA,PROC))+IPROCKAPFX(IA,PROC)$(NOT PROCKAPDECOM(PROC))+IPROCKAPFX(IA,PROC)*VPROCKAPDEC_U(IA,PROC)$(PROCKAPDECOM(PROC)))))
* Addon for discrete zise investments
$ifi %APKNdisc%==yes $include "..\addons\OptiFlow\apkndisc\apkndiscaddqobj.inc";
$ifi %useQNODEslack%==yes -SUM((IA,PROC,IFLOWIN,IFLOWOUT,IPLUSMINUS)$(IPROCINOUTFLOW_Y_set(IA,PROC,IFLOWIN,IFLOWOUT) AND (IPRIOVARIOUTSUM_Y(IA,PROC,IFLOWIN,IFLOWOUT) LE 1) AND (IPRIOVARIINSUM_Y(IA,PROC,IFLOWIN,IFLOWOUT) LE 1) AND (NOT PROCSTORAGE(PROC)) AND (NOT PROCSTORAGE_Y(PROC))), !! directly as QNODEBALNCE
$ifi %useQNODEslack%==yes (SUM((IS3,T),IPENALTYQ*VQNODEBALANCE(IA,PROC,IFLOWIN,IFLOWOUT,IS3,T,IPLUSMINUS))))
$ifi %useSSBslack%==yes -(IPENALTYQ*SUM((IA,PROCSOURCE,FLOW,IPLUSMINUS)$(SUM(ILOUPFXSET$SOSIBUBOUND(IA,PROCSOURCE,FLOW,ILOUPFXSET),1)), SUM((IS3,T), VQSOURCEBALANCE(IA,PROCSOURCE,FLOW,IS3,T,IPLUSMINUS)))) !! $(SUM(ILOUPFXSET$SOSIBUBOUND(IA,PROCSOURCE,FLOW,ILOUPFXSET),1)) is for limitation only
$ifi %useSSBslack%==yes -(IPENALTYQ*SUM((IA,PROCSINK,FLOW,IPLUSMINUS)$(SUM(ILOUPFXSET$SOSIBUBOUND(IA,PROCSINK,FLOW,ILOUPFXSET),1)), SUM((IS3,T), VQSINKBALANCE(IA,PROCSINK,FLOW,IS3,T,IPLUSMINUS))))
$ifi %useSSBslack%==yes -(IPENALTYQ*SUM((IA,PROCBUFFER,FLOW,IPLUSMINUS)$(SUM(ILOUPFXSET$SOSIBUBOUND(IA,PROCBUFFER,FLOW,ILOUPFXSET),1)), SUM((IS3,T), VQBUFFERBALANCE(IA,PROCBUFFER,FLOW,IS3,T,IPLUSMINUS))))
$ifi %useShareSlack%==yes -(IPENALTYQ*SUM((IA,PROC,IFLOWIN,IFLOWOUT,S,ITWWT,ILOUPFXSET,IPLUSMINUS)$(IPROCINOUTFLOW_Y_set(IA,PROC,IFLOWIN,IFLOWOUT) AND IPROCINOUTFLOW_Y(IA,PROC,IFLOWIN,IFLOWOUT,"IONEMANY")), VQFLOWSHAREOUT2INLO(IA,PROC,IFLOWIN,IFLOWOUT,S,ITWWT,'ILOUPFX_LO','IPLUS') ))
$ifi %useShareSlack%==yes -(IPENALTYQ*SUM((IA,PROC,IFLOWIN,IFLOWOUT,S,ITWWT,ILOUPFXSET,IPLUSMINUS)$(IPROCINOUTFLOW_Y_set(IA,PROC,IFLOWIN,IFLOWOUT) AND IPROCINOUTFLOW_Y(IA,PROC,IFLOWIN,IFLOWOUT,"IONEMANY")), VQFLOWSHAREOUT2INUP(IA,PROC,IFLOWIN,IFLOWOUT,S,ITWWT,'ILOUPFX_UP','IMINUS')))
$ifi %useShareSlack%==yes -(IPENALTYQ*SUM((IA,PROC,IFLOWIN,IFLOWOUT,S,ITWWT,ILOUPFXSET,IPLUSMINUS)$(IPROCINOUTFLOW_Y_set(IA,PROC,IFLOWIN,IFLOWOUT) AND IPROCINOUTFLOW_Y(IA,PROC,IFLOWIN,IFLOWOUT,"IONEMANY")), (VQFLOWSHAREOUT2INFX(IA,PROC,IFLOWIN,IFLOWOUT,S,ITWWT,'ILOUPFX_FX','IMINUS') + VQFLOWSHAREOUT2INFX(IA,PROC,IFLOWIN,IFLOWOUT,S,ITWWT,'ILOUPFX_FX','IPLUS'))))
$ifi %uniquesol%==yes +1E-4*(
$ifi %uniquesol%==yes -SUM((IA,IPROCFROM,IPROCTO,FLOW,S,T)$IFLOWFROMTOPROC_Y(IA,IPROCFROM,IPROCTO,FLOW),VFLOW(IA,IPROCFROM,IPROCTO,FLOW,S,T)*VFLOW(IA,IPROCFROM,IPROCTO,FLOW,S,T))
$ifi %uniquesol%==yes -SUM((IA,PROCSOURCE,FLOW,S,T),VFLOWSOURCE(IA,PROCSOURCE,FLOW,S,T)*VFLOWSOURCE(IA,PROCSOURCE,FLOW,S,T))
$ifi %uniquesol%==yes -SUM((IA,PROCSINK,FLOW,S,T),VFLOWSINK(IA,PROCSINK,FLOW,S,T)*VFLOWSINK(IA,PROCSINK,FLOW,S,T))
$ifi %uniquesol%==yes -SUM((IA,PROCBUFFER,FLOW,S,T),VFLOWBUFFER(IA,PROCBUFFER,FLOW,S,T)*VFLOWBUFFER(IA,PROCBUFFER,FLOW,S,T))
$ifi %uniquesol%==yes -SUM((IAE,IAI,FLOW,S,T)$TRANSDIST(PROC,IAE,IAI),VFLOWTRANS(IAE,IAI,FLOW,S,T)*VFLOWTRANS(IAE,IAI,FLOW,S,T))
$ifi %uniquesol%==yes )
;
* Flows from SOSIBU and EXIM in units [U/h] are indic-weighted, time-weighted and summarized.
QINDICQUANT(FLOWINDIC)..
VFLOWINDICVALUES(FLOWINDIC) =E=
* SoSiBu processes in PROC_T:
SUM((IS3,T), IHOURSINST(IS3,T)*(
SUM((IA,PROCSOURCE,FLOW)$(PROC_T(PROCSOURCE) AND ISOSIBU2INDIC(PROCSOURCE,FLOW,FLOWINDIC)), VFLOWSOURCE(IA,PROCSOURCE,FLOW,IS3,T)$(SUM(IPROCTO,IFLOWFROMTOPROC_Y(IA,PROCSOURCE,IPROCTO,FLOW)))* ISOSIBU2INDIC(PROCSOURCE,FLOW,FLOWINDIC))
+ SUM((IA,PROCSOURCE,FLOW)$(PROC_T(PROCSOURCE) AND SOSIBU2INDIC_A(IA,PROCSOURCE,FLOW,FLOWINDIC)), VFLOWSOURCE(IA,PROCSOURCE,FLOW,IS3,T)$(SUM(IPROCTO,IFLOWFROMTOPROC_Y(IA,PROCSOURCE,IPROCTO,FLOW)))* SOSIBU2INDIC_A(IA,PROCSOURCE,FLOW,FLOWINDIC))
+ SUM((IA,PROCSOURCE,FLOW)$(PROC_T(PROCSOURCE) AND SOSIBU2INDIC_AS(IA,PROCSOURCE,FLOW,FLOWINDIC,IS3)), VFLOWSOURCE(IA,PROCSOURCE,FLOW,IS3,T)$(SUM(IPROCTO,IFLOWFROMTOPROC_Y(IA,PROCSOURCE,IPROCTO,FLOW)))* SOSIBU2INDIC_AS(IA,PROCSOURCE,FLOW,FLOWINDIC,IS3))
+ SUM((IA,PROCSOURCE,FLOW)$(PROC_T(PROCSOURCE) AND SOSIBU2INDIC_AST(IA,PROCSOURCE,FLOW,FLOWINDIC,IS3,T)), VFLOWSOURCE(IA,PROCSOURCE,FLOW,IS3,T)$(SUM(IPROCTO,IFLOWFROMTOPROC_Y(IA,PROCSOURCE,IPROCTO,FLOW)))* SOSIBU2INDIC_AST(IA,PROCSOURCE,FLOW,FLOWINDIC,IS3,T))
+ SUM((IR,IA)$RRRAAA(IR,IA), SUM((PROCSOURCE,FLOW)$(PROC_T(PROCSOURCE) AND SOSIBU2INDIC_RST(IR,PROCSOURCE,FLOW,FLOWINDIC,IS3,T)), VFLOWSOURCE(IA,PROCSOURCE,FLOW,IS3,T)$(SUM(IPROCTO,IFLOWFROMTOPROC_Y(IA,PROCSOURCE,IPROCTO,FLOW))) * SOSIBU2INDIC_RST(IR,PROCSOURCE,FLOW,FLOWINDIC,IS3,T)))
+ SUM((IA,PROCSINK,FLOW)$(PROC_T(PROCSINK) AND ISOSIBU2INDIC(PROCSINK,FLOW,FLOWINDIC)), VFLOWSINK(IA,PROCSINK,FLOW,IS3,T)$(SUM(IPROCFROM,IFLOWFROMTOPROC_Y(IA,IPROCFROM,PROCSINK,FLOW)))* ISOSIBU2INDIC(PROCSINK,FLOW,FLOWINDIC))
+ SUM((IA,PROCSINK,FLOW)$(PROC_T(PROCSINK) AND SOSIBU2INDIC_A(IA,PROCSINK,FLOW,FLOWINDIC)), VFLOWSINK(IA,PROCSINK,FLOW,IS3,T)$(SUM(IPROCFROM,IFLOWFROMTOPROC_Y(IA,IPROCFROM,PROCSINK,FLOW))) * SOSIBU2INDIC_A(IA,PROCSINK,FLOW,FLOWINDIC))
+ SUM((IA,PROCSINK,FLOW)$(PROC_T(PROCSINK) AND SOSIBU2INDIC_AS(IA,PROCSINK,FLOW,FLOWINDIC,IS3)), VFLOWSINK(IA,PROCSINK,FLOW,IS3,T)$(SUM(IPROCFROM,IFLOWFROMTOPROC_Y(IA,IPROCFROM,PROCSINK,FLOW))) * SOSIBU2INDIC_AS(IA,PROCSINK,FLOW,FLOWINDIC,IS3))
+ SUM((IA,PROCSINK,FLOW)$(PROC_T(PROCSINK) AND SOSIBU2INDIC_AST(IA,PROCSINK,FLOW,FLOWINDIC,IS3,T)), VFLOWSINK(IA,PROCSINK,FLOW,IS3,T)$(SUM(IPROCFROM,IFLOWFROMTOPROC_Y(IA,IPROCFROM,PROCSINK,FLOW))) * SOSIBU2INDIC_AST(IA,PROCSINK,FLOW,FLOWINDIC,IS3,T))
+ SUM((IR,IA)$RRRAAA(IR,IA), SUM((PROCSINK,FLOW)$(PROC_T(PROCSINK) AND SOSIBU2INDIC_RST(IR,PROCSINK,FLOW,FLOWINDIC,IS3,T)), VFLOWSINK(IA,PROCSINK,FLOW,IS3,T)$(SUM(IPROCFROM,IFLOWFROMTOPROC_Y(IA,IPROCFROM,PROCSINK,FLOW))) * SOSIBU2INDIC_RST(IR,PROCSINK,FLOW,FLOWINDIC,IS3,T)))
+ SUM((IA,PROCBUFFER,FLOW)$(PROC_T(PROCBUFFER)AND ISOSIBU2INDIC(PROCBUFFER,FLOW,FLOWINDIC) AND(SUM((IPROCFROM)$IFLOWFROMTOPROC_Y(IA,IPROCFROM,PROCBUFFER,FLOW),1) OR SUM((IPROCTO)$IFLOWFROMTOPROC_Y(IA,PROCBUFFER,IPROCTO,FLOW),1))), VFLOWBUFFER(IA,PROCBUFFER,FLOW,IS3,T) * ISOSIBU2INDIC(PROCBUFFER,FLOW,FLOWINDIC)) !! Reconsider sign and generality; note that VBUFFER is free
+ SUM((IA,PROCBUFFER,FLOW)$(PROC_T(PROCBUFFER) AND SOSIBU2INDIC_A(IA,PROCBUFFER,FLOW,FLOWINDIC) AND(SUM((IPROCFROM)$IFLOWFROMTOPROC_Y(IA,IPROCFROM,PROCBUFFER,FLOW),1) OR SUM((IPROCTO)$IFLOWFROMTOPROC_Y(IA,PROCBUFFER,IPROCTO,FLOW),1))), VFLOWBUFFER(IA,PROCBUFFER,FLOW,IS3,T) * SOSIBU2INDIC_A(IA,PROCBUFFER,FLOW,FLOWINDIC))
+ SUM((IA,PROCBUFFER,FLOW)$(PROC_T(PROCBUFFER) AND SOSIBU2INDIC_AS(IA,PROCBUFFER,FLOW,FLOWINDIC,IS3) AND(SUM((IPROCFROM)$IFLOWFROMTOPROC_Y(IA,IPROCFROM,PROCBUFFER,FLOW),1) OR SUM((IPROCTO)$IFLOWFROMTOPROC_Y(IA,PROCBUFFER,IPROCTO,FLOW),1))), VFLOWBUFFER(IA,PROCBUFFER,FLOW,IS3,T) * SOSIBU2INDIC_AS(IA,PROCBUFFER,FLOW,FLOWINDIC,IS3))
+ SUM((IA,PROCBUFFER,FLOW)$(PROC_T(PROCBUFFER) AND SOSIBU2INDIC_AST(IA,PROCBUFFER,FLOW,FLOWINDIC,IS3,T) AND(SUM((IPROCFROM)$IFLOWFROMTOPROC_Y(IA,IPROCFROM,PROCBUFFER,FLOW),1) OR SUM((IPROCTO)$IFLOWFROMTOPROC_Y(IA,PROCBUFFER,IPROCTO,FLOW),1))), VFLOWBUFFER(IA,PROCBUFFER,FLOW,IS3,T) * SOSIBU2INDIC_AST(IA,PROCBUFFER,FLOW,FLOWINDIC,IS3,T)) !! Reconsider sign and generality; note that VBUFFER is free
+ SUM((IR,IA)$RRRAAA(IR,IA), SUM((PROCBUFFER,FLOW)$(PROC_T(PROCBUFFER) AND SOSIBU2INDIC_RST(IR,PROCBUFFER,FLOW,FLOWINDIC,IS3,T) AND(SUM((IPROCFROM)$IFLOWFROMTOPROC_Y(IA,IPROCFROM,PROCBUFFER,FLOW),1) OR SUM((IPROCTO)$IFLOWFROMTOPROC_Y(IA,PROCBUFFER,IPROCTO,FLOW),1))), VFLOWBUFFER(IA,PROCBUFFER,FLOW,IS3,T) * SOSIBU2INDIC_RST(IR,PROCBUFFER,FLOW,FLOWINDIC,IS3,T))) !! Reconsider sign and generality; note that VBUFFER is free
* TODO: why use $(TRANSDIST(IAE,IAI) NE NA), why not use $TRANSDIST(IAE,IAI) (see data table) ?
+ SUM((IAE,IAI,PROCEXIM,IFLOWEXIM)$(TRANSDIST(PROCEXIM,IAE,IAI) AND (PROC_T(PROCEXIM)) AND IPROCINOUTFLOW_Y(IAE,PROCEXIM,IFLOWEXIM,IFLOWEXIM,"IONEONE")), ((TRANSDIST(PROCEXIM,IAE,IAI)*TRANSCOST('TCDMONEYDISTFLOW','ITRANSDWDISTWEIGHT',PROCEXIM,FLOWINDIC)
+TRANSCOST('TCDMONEYFLOW','ITRANSDWWEIGHT',PROCEXIM,FLOWINDIC))*VFLOWTRANS(IAE,IAI,PROCEXIM,IFLOWEXIM,IS3,T))$(NOT TRANSFLOWMAX(IAE,IAI,PROCEXIM,IFLOWEXIM)))
))
* SoSiBu processes not in PROC_T:
+ SUM((IS3,ITWWT), IHOURSINST(IS3,ITWWT)*( !! Hans 20141030: ITWWT -> T :
*+ SUM((IS3,T), IHOURSINST(IS3,T)*(
SUM(T, !! Acts as a selector of the single element in ITWWT
SUM((IA,PROCSOURCE,FLOW)$(NOT PROC_T(PROCSOURCE) AND ISOSIBU2INDIC(PROCSOURCE,FLOW,FLOWINDIC)), VFLOWSOURCE(IA,PROCSOURCE,FLOW,IS3,ITWWT) $(SUM(IPROCTO,IFLOWFROMTOPROC_Y(IA,PROCSOURCE,IPROCTO,FLOW)))* ISOSIBU2INDIC(PROCSOURCE,FLOW,FLOWINDIC))
+ SUM((IA,PROCSOURCE,FLOW)$(NOT PROC_T(PROCSOURCE)AND SOSIBU2INDIC_A(IA,PROCSOURCE,FLOW,FLOWINDIC)), VFLOWSOURCE(IA,PROCSOURCE,FLOW,IS3,ITWWT) $(SUM(IPROCTO,IFLOWFROMTOPROC_Y(IA,PROCSOURCE,IPROCTO,FLOW)))* SOSIBU2INDIC_A(IA,PROCSOURCE,FLOW,FLOWINDIC))
+ SUM((IA,PROCSOURCE,FLOW)$(NOT PROC_T(PROCSOURCE)AND SOSIBU2INDIC_AS(IA,PROCSOURCE,FLOW,FLOWINDIC,IS3)), VFLOWSOURCE(IA,PROCSOURCE,FLOW,IS3,ITWWT) $(SUM(IPROCTO,IFLOWFROMTOPROC_Y(IA,PROCSOURCE,IPROCTO,FLOW)))* SOSIBU2INDIC_AS(IA,PROCSOURCE,FLOW,FLOWINDIC,IS3))
+ SUM((IA,PROCSOURCE,FLOW)$(NOT PROC_T(PROCSOURCE) AND SOSIBU2INDIC_AST(IA,PROCSOURCE,FLOW,FLOWINDIC,IS3,ITWWT)), VFLOWSOURCE(IA,PROCSOURCE,FLOW,IS3,ITWWT) $(SUM(IPROCTO,IFLOWFROMTOPROC_Y(IA,PROCSOURCE,IPROCTO,FLOW)))* SOSIBU2INDIC_AST(IA,PROCSOURCE,FLOW,FLOWINDIC,IS3,ITWWT))
+ SUM((IR,IA)$RRRAAA(IR,IA), SUM((PROCSOURCE,FLOW)$(NOT PROC_T(PROCSOURCE) AND SOSIBU2INDIC_RST(IR,PROCSOURCE,FLOW,FLOWINDIC,IS3,ITWWT)), VFLOWSOURCE(IA,PROCSOURCE,FLOW,IS3,ITWWT) $(SUM(IPROCTO,IFLOWFROMTOPROC_Y(IA,PROCSOURCE,IPROCTO,FLOW)))* SOSIBU2INDIC_RST(IR,PROCSOURCE,FLOW,FLOWINDIC,IS3,ITWWT)))
+ SUM((IA,PROCSINK,FLOW)$(NOT PROC_T(PROCSINK) AND ISOSIBU2INDIC(PROCSINK,FLOW,FLOWINDIC)), VFLOWSINK(IA,PROCSINK,FLOW,IS3,ITWWT)$(SUM(IPROCFROM,IFLOWFROMTOPROC_Y(IA,IPROCFROM,PROCSINK,FLOW)))* ISOSIBU2INDIC(PROCSINK,FLOW,FLOWINDIC))
+ SUM((IA,PROCSINK,FLOW)$(NOT PROC_T(PROCSINK) AND SOSIBU2INDIC_A(IA,PROCSINK,FLOW,FLOWINDIC)), VFLOWSINK(IA,PROCSINK,FLOW,IS3,ITWWT)$(SUM(IPROCFROM,IFLOWFROMTOPROC_Y(IA,IPROCFROM,PROCSINK,FLOW))) * SOSIBU2INDIC_A(IA,PROCSINK,FLOW,FLOWINDIC))
+ SUM((IA,PROCSINK,FLOW)$(NOT PROC_T(PROCSINK) AND SOSIBU2INDIC_AS(IA,PROCSINK,FLOW,FLOWINDIC,IS3)), VFLOWSINK(IA,PROCSINK,FLOW,IS3,ITWWT)$(SUM(IPROCFROM,IFLOWFROMTOPROC_Y(IA,IPROCFROM,PROCSINK,FLOW))) * SOSIBU2INDIC_AS(IA,PROCSINK,FLOW,FLOWINDIC,IS3))
+ SUM((IA,PROCSINK,FLOW)$(NOT PROC_T(PROCSINK) AND SOSIBU2INDIC_AST(IA,PROCSINK,FLOW,FLOWINDIC,IS3,ITWWT)), VFLOWSINK(IA,PROCSINK,FLOW,IS3,ITWWT)$(SUM(IPROCFROM,IFLOWFROMTOPROC_Y(IA,IPROCFROM,PROCSINK,FLOW))) * SOSIBU2INDIC_AST(IA,PROCSINK,FLOW,FLOWINDIC,IS3,ITWWT))
+ SUM((IR,IA)$RRRAAA(IR,IA), SUM((PROCSINK,FLOW)$(NOT PROC_T(PROCSINK) AND SOSIBU2INDIC_RST(IR,PROCSINK,FLOW,FLOWINDIC,IS3,ITWWT)), VFLOWSINK(IA,PROCSINK,FLOW,IS3,ITWWT) $(SUM(IPROCFROM,IFLOWFROMTOPROC_Y(IA,IPROCFROM,PROCSINK,FLOW)))* SOSIBU2INDIC_RST(IR,PROCSINK,FLOW,FLOWINDIC,IS3,ITWWT)))
+ SUM((IA,PROCBUFFER,FLOW)$(NOT PROC_T(PROCBUFFER) AND ISOSIBU2INDIC(PROCBUFFER,FLOW,FLOWINDIC) AND(SUM((IPROCFROM)$IFLOWFROMTOPROC_Y(IA,IPROCFROM,PROCBUFFER,FLOW),1) OR SUM((IPROCTO)$IFLOWFROMTOPROC_Y(IA,PROCBUFFER,IPROCTO,FLOW),1))), VFLOWBUFFER(IA,PROCBUFFER,FLOW,IS3,ITWWT) * ISOSIBU2INDIC(PROCBUFFER,FLOW,FLOWINDIC))
+ SUM((IA,PROCBUFFER,FLOW)$(NOT PROC_T(PROCBUFFER) AND SOSIBU2INDIC_A(IA,PROCBUFFER,FLOW,FLOWINDIC) AND(SUM((IPROCFROM)$IFLOWFROMTOPROC_Y(IA,IPROCFROM,PROCBUFFER,FLOW),1) OR SUM((IPROCTO)$IFLOWFROMTOPROC_Y(IA,PROCBUFFER,IPROCTO,FLOW),1))), VFLOWBUFFER(IA,PROCBUFFER,FLOW,IS3,ITWWT) * SOSIBU2INDIC_A(IA,PROCBUFFER,FLOW,FLOWINDIC)) !! Reconsider sign and generality; note that VBUFFER is free
+ SUM((IA,PROCBUFFER,FLOW)$(NOT PROC_T(PROCBUFFER) AND SOSIBU2INDIC_AS(IA,PROCBUFFER,FLOW,FLOWINDIC,IS3) AND(SUM((IPROCFROM)$IFLOWFROMTOPROC_Y(IA,IPROCFROM,PROCBUFFER,FLOW),1) OR SUM((IPROCTO)$IFLOWFROMTOPROC_Y(IA,PROCBUFFER,IPROCTO,FLOW),1))), VFLOWBUFFER(IA,PROCBUFFER,FLOW,IS3,ITWWT) * SOSIBU2INDIC_AS(IA,PROCBUFFER,FLOW,FLOWINDIC,IS3)) !! Reconsider sign and generality; note that VBUFFER is free
+ SUM((IA,PROCBUFFER,FLOW)$(NOT PROC_T(PROCBUFFER) AND SOSIBU2INDIC_AST(IA,PROCBUFFER,FLOW,FLOWINDIC,IS3,ITWWT) AND(SUM((IPROCFROM)$IFLOWFROMTOPROC_Y(IA,IPROCFROM,PROCBUFFER,FLOW),1) OR SUM((IPROCTO)$IFLOWFROMTOPROC_Y(IA,PROCBUFFER,IPROCTO,FLOW),1))), VFLOWBUFFER(IA,PROCBUFFER,FLOW,IS3,ITWWT) * SOSIBU2INDIC_AST(IA,PROCBUFFER,FLOW,FLOWINDIC,IS3,ITWWT)) !! Reconsider sign and generality; note that VBUFFER is free
+ SUM((IR,IA)$RRRAAA(IR,IA), SUM((PROCBUFFER,FLOW)$(NOT PROC_T(PROCBUFFER) AND SOSIBU2INDIC_RST(IR,PROCBUFFER,FLOW,FLOWINDIC,IS3,ITWWT) AND(SUM((IPROCFROM)$IFLOWFROMTOPROC_Y(IA,IPROCFROM,PROCBUFFER,FLOW),1) OR SUM((IPROCTO)$IFLOWFROMTOPROC_Y(IA,PROCBUFFER,IPROCTO,FLOW),1))), VFLOWBUFFER(IA,PROCBUFFER,FLOW,IS3,ITWWT) * SOSIBU2INDIC_RST(IR,PROCBUFFER,FLOW,FLOWINDIC,IS3,ITWWT))) !! Reconsider sign and generality; note that VBUFFER is free
* TODO: why use $(TRANSDIST(IAE,IAI) NE NA), why not use $TRANSDIST(IAE,IAI) (see data table) ?
+ SUM((IAE,IAI,PROCEXIM,IFLOWEXIM)$(TRANSDIST(PROCEXIM,IAE,IAI) AND (NOT PROC_T(PROCEXIM)) AND IPROCINOUTFLOW_Y(IAE,PROCEXIM,IFLOWEXIM,IFLOWEXIM,"IONEONE")), ((TRANSDIST(PROCEXIM,IAE,IAI)*TRANSCOST('TCDMONEYDISTFLOW','ITRANSDWDISTWEIGHT',PROCEXIM,FLOWINDIC)+TRANSCOST('TCDMONEYFLOW','ITRANSDWWEIGHT',PROCEXIM,FLOWINDIC))*VFLOWTRANS(IAE,IAI,PROCEXIM,IFLOWEXIM,IS3,ITWWT))$(NOT TRANSFLOWMAX(IAE,IAI,PROCEXIM,IFLOWEXIM)))
)))
;
* "Objective function value assuming parameterised quantities technique"
* ihoursinst todo
QOBJQ..
VOBJQ =E= 1; !! Essentially Rubbish - this functionality is sketched only
* "Objective function value assuming weighted objectives values and parameterised quantities technique"
* ihoursinst todo
QOBJWQ ..
VOBJWQ =E=1; !! Essentially Rubbish - this functionality is sketched only
* Interpretation info:
* Debug info: In the Column listing for VFLOW in the GAMS list file the coefficient shown for QNODEBALANCE is normally (except:...) positive for the NODE that VFLOW enters and negative for the NODE from which VFLOW leaves .
* Note: the input (left hand) side is more complex than the output side, mainly because PROCINOUTFLOW is multiplied to the input side.
* Note: the SUM acts as selector rather than summation except where noted.
QNODEBALANCE(IA,PROC,IFLOWIN,IFLOWOUT,S,T)$(IPROCINOUTFLOW_Y_set(IA,PROC,IFLOWIN,IFLOWOUT)
AND (IPRIOVARIOUTSUM_Y(IA,PROC,IFLOWIN,IFLOWOUT) LE 1)
AND (IPRIOVARIINSUM_Y(IA,PROC,IFLOWIN,IFLOWOUT) LE 1)
AND (NOT (PROCSTORAGE(PROC) AND IPROCINOUTFLOW_Y_set(IA,PROC,IFLOWIN,IFLOWOUT)$SAMEAS(IFLOWIN,IFLOWOUT)))
AND (NOT (PROCSTORAGE_Y(PROC) AND IPROCINOUTFLOW_Y_set(IA,PROC,IFLOWIN,IFLOWOUT)$SAMEAS(IFLOWIN,IFLOWOUT)))
AND (NOT (PROCSTORAGE_YT(PROC) AND IPROCINOUTFLOW_Y_set(IA,PROC,IFLOWIN,IFLOWOUT)$SAMEAS(IFLOWIN,IFLOWOUT)))
AND IPROCTIMESETS(PROC,T))
..
* FLOW into PROC:
* One or two inFLOW in fixed propotions:
+ SUM(IPROCFROM$(IFLOWFROMTOPROC_Y(IA,IPROCFROM,PROC,IFLOWIN) AND (IPRIOVARIINSUM_Y(IA,PROC,IFLOWIN,IFLOWOUT) EQ 0) AND (IPRIOVARIOUTSUM_Y(IA,PROC,IFLOWIN,IFLOWOUT) EQ 0)),
* One inFLOW with fixed relation to one FLOW:
+ (VFLOW(IA,IPROCFROM,PROC,IFLOWIN,S,T)*IPROCINOUTFLOW_Y(IA,PROC,IFLOWIN,IFLOWOUT,"IONEONE"))$((NOT INEGPROCININFLOW_Y(IA,PROC,IFLOWIN,IFLOWOUT)) AND IPROCINOUTFLOW_Y(IA,PROC,IFLOWIN,IFLOWOUT,"IONEONE"))
+ (VFLOW(IA,IPROCFROM,PROC,IFLOWIN,S,T)) $((NOT INEGPROCININFLOW_Y(IA,PROC,IFLOWIN,IFLOWOUT)) AND IPROCINOUTFLOW_Y(IA,PROC,IFLOWIN,IFLOWOUT,"IONEONEREC"))
* Two inFLOW (both FLOWIN are FLOWOUT are entering PROC in fixed proportions (nothing will be entered on the other side of =E=)):
- (VFLOW(IA,IPROCFROM,PROC,IFLOWIN,S,T)*IPROCINOUTFLOW_Y(IA,PROC,IFLOWIN,IFLOWOUT,"IONEONE"))$( INEGPROCININFLOW_Y(IA,PROC,IFLOWIN,IFLOWOUT))
- SUM(IPROCFROM2$(IFLOWFROMTOPROC_Y(IA,IPROCFROM2,PROC,IFLOWOUT) AND INEGPROCININFLOW_Y(IA,PROC,IFLOWIN,IFLOWOUT)), VFLOW(IA,IPROCFROM2,PROC,IFLOWOUT,S,T))
)
* The single inFLOW that is split on two or more outFLOW with IONEMANY:
+ SUM(IPROCFROM$(IFLOWFROMTOPROC_Y(IA,IPROCFROM,PROC,IFLOWIN) AND IPROCINOUTFLOW_Y(IA,PROC,IFLOWIN,IFLOWOUT,"IONEMANY")), VFLOW(IA,IPROCFROM,PROC,IFLOWIN,S,T)) !!IPRIOVARIOUTSUM_Y som ovenfor
* The multiple inFLOW that are summarized into a single outFLOW (SUM acts as summation):
+ SUM((IPROCFROM,FLOW)$(IFLOWFROMTOPROC_Y(IA,IPROCFROM,PROC, FLOW) AND (IPROCINOUTFLOW_Y(IA,PROC, FLOW,IFLOWOUT,"IMANYONE"))),
VFLOW(IA,IPROCFROM,PROC, FLOW,S,T)*IPROCINOUTFLOW_Y(IA,PROC, FLOW,IFLOWOUT,"IMANYONE"))
* Import from other areas:
+ SUM(IAE$ITRANSFROMTO(IAE,IA),VFLOWTRANS(IAE,IA,PROC,IFLOWIN,S,T)$(NOT TRANSFLOWMAX(IAE,IA,PROC,IFLOWIN)))$PROCEXIM(PROC)
=E=
* FLOW out from PROC:
* One or two outFLOW in fixed proportions:
+ SUM(IPROCTO$(IFLOWFROMTOPROC_Y(IA,PROC,IPROCTO,IFLOWOUT) AND (IPRIOVARIINSUM_Y(IA,PROC,IFLOWIN,IFLOWOUT) EQ 0) AND (IPRIOVARIOUTSUM_Y(IA,PROC,IFLOWIN,IFLOWOUT) EQ 0)),
* One outFLOW with fixed relation to one FLOW:
VFLOW(IA,PROC,IPROCTO,IFLOWOUT,S,T) $(NOT INEGPROCOUTOUTFLOW_Y(IA,PROC,IFLOWIN,IFLOWOUT) AND IPROCINOUTFLOW_Y(IA,PROC,IFLOWIN,IFLOWOUT,"IONEONE"))
+ (VFLOW(IA,PROC,IPROCTO,IFLOWOUT,S,T)*IPROCINOUTFLOW_Y(IA,PROC,IFLOWIN,IFLOWOUT,"IONEONEREC"))$(NOT INEGPROCOUTOUTFLOW_Y(IA,PROC,IFLOWIN,IFLOWOUT) AND IPROCINOUTFLOW_Y(IA,PROC,IFLOWIN,IFLOWOUT,"IONEONEREC"))
* Two outFLOW (both FLOWIN are FLOWOUT are leaving PROC in fixed proportions (nothing will be entered on the other side of =E=)):
+ VFLOW(IA,PROC,IPROCTO,IFLOWOUT,S,T)$INEGPROCOUTOUTFLOW_Y(IA,PROC,IFLOWIN,IFLOWOUT)
+ SUM(IPROCTO2$(IFLOWFROMTOPROC_Y(IA,PROC,IPROCTO2,IFLOWIN) AND INEGPROCOUTOUTFLOW_Y(IA,PROC,IFLOWIN,IFLOWOUT)),
VFLOW(IA,PROC,IPROCTO2,IFLOWIN,S,T)*IPROCINOUTFLOW_Y(IA,PROC,IFLOWIN,IFLOWOUT,"IONEONE") )
)
* The single outFLOW that is summarized from two or more inFLOW with IMANYONE:
+ SUM(IPROCTO$(IFLOWFROMTOPROC_Y(IA,PROC,IPROCTO,IFLOWOUT) AND (IPROCINOUTFLOW_Y(IA,PROC,IFLOWIN,IFLOWOUT,"IMANYONE"))), VFLOW(IA,PROC,IPROCTO,IFLOWOUT,S,T)*IPROCINOUTFLOW_Y(IA,PROC,IFLOWIN,IFLOWOUT,"IMANYONE"))
* The multiple outFLOW that are coming from a single inFLOW (SUM acts as summation):
+ SUM((IPROCTO,FLOW)$(IFLOWFROMTOPROC_Y(IA,PROC,IPROCTO,FLOW) AND (IPROCINOUTFLOW_Y(IA,PROC,IFLOWIN,FLOW,"IONEMANY"))), !!TODO: compare §§ above: why different
VFLOW(IA,PROC,IPROCTO,FLOW,S,T)*IPROCINOUTFLOW_Y(IA,PROC,IFLOWIN,FLOW,"IONEMANY"))
* Export to other areas:
+ SUM(IAI$(ITRANSFROMTO(IA,IAI)),VFLOWTRANS(IA,IAI,PROC,IFLOWOUT,S,T)$(NOT TRANSFLOWMAX(IA,IAI,PROC,IFLOWOUT)))$PROCEXIM(PROC)
* Slack:
$ifi %useQNODEslack%==yes +(VQNODEBALANCE(IA,PROC,IFLOWIN,IFLOWOUT,S,T,'IMINUS')-VQNODEBALANCE(IA,PROC,IFLOWIN,IFLOWOUT,S,T,'IPLUS'))$(IPROCINOUTFLOW_Y_set(IA,PROC,IFLOWIN,IFLOWOUT))
;
QFLOWTBALANCE(IA,IPROCFROM,IPROCTO,IFLOW_T,S,T)$(IFLOWFROMTOPROC_Y(IA,IPROCFROM,IPROCTO,IFLOW_T) AND ((NOT PROC_T(IPROCFROM)) OR (NOT PROC_T(IPROCTO))))..
VFLOW(IA,IPROCFROM,IPROCTO,IFLOW_T,S,T)=E=SUM(ITWWT,VFLOW(IA,IPROCFROM,IPROCTO,IFLOW_T,S,ITWWT));
** Observe: if no FLOW is brought from a Source then VSOURCE is equated to zero.
* Note: the SUM(TWWT,...) serves as a selector of the single time element TWWT.
QSOURCENODEBALANCE(IA,PROCSOURCE,FLOW,S,T)$((SUM(IPROCTO$IFLOWFROMTOPROC_Y(IA,PROCSOURCE,IPROCTO,FLOW),1)) AND IPROCTIMESETS(PROCSOURCE,T))..
VFLOWSOURCE(IA,PROCSOURCE,FLOW,S,T)$PROC_T(PROCSOURCE)
+SUM(ITWWT, VFLOWSOURCE(IA,PROCSOURCE,FLOW,S,ITWWT))$(NOT PROC_T(PROCSOURCE))
=E=
SUM(IPROCTO$(IFLOWFROMTOPROC_Y(IA,PROCSOURCE,IPROCTO,FLOW) AND (NOT PROC_T(IPROCTO))), SUM(ITWWT, VFLOW(IA,PROCSOURCE,IPROCTO,FLOW,S,ITWWT)))
+SUM(IPROCTO$(IFLOWFROMTOPROC_Y(IA,PROCSOURCE,IPROCTO,FLOW) AND (PROC_T(IPROCTO))), VFLOW(IA,PROCSOURCE,IPROCTO,FLOW,S,T))
$ifi %useSSBslack%==yes +SUM(ILOUPFXSET$SOSIBUBOUND(IA,PROCSOURCE,FLOW,ILOUPFXSET),VQSOURCEBALANCE(IA,PROCSOURCE,FLOW,S,T,'IMINUS') - VQSOURCEBALANCE(IA,PROCSOURCE,FLOW,S,T,'IPLUS'))
;
* further development of Amalia - Have a look at this comments, I think most of these issues have already been solved, if a PROC_T process is linked to a
*non PROC_T process, the flow of the PROC_T process linked, has to be defined as IFLOW_T
* Comments: 0. here assued that procsink may be in either proc_t or not proc_t
* 1. by assumption (and checked in error2.inc) two proc that are linked must both be in proc_t of both not in proc_t
* 2. Even if IPROCFROM is PROCSTORAGE then this is not to be reflected here (cf. qnodebalance, and note that PROCSINK is not PROCSTORAGE)
* 3. A consequence is that e.g. procbuffer GHG has to be split into GHG and GHG_T, and linked to appropriate internal processes?
* More general comment/todo: Implement code such that PROCSTORAGE may be in either proc_t or not proc_t?
* Observe: if no FLOW is brougt to a Sink then VSINK is equated to zero.
QSINKNODEBALANCE(IA,PROCSINK,FLOW,S,T)$((SUM(IPROCFROM$IFLOWFROMTOPROC_Y(IA,IPROCFROM,PROCSINK,FLOW),1)) AND IPROCTIMESETS(PROCSINK,T))..
SUM(IPROCFROM$(IFLOWFROMTOPROC_Y(IA,IPROCFROM,PROCSINK,FLOW) AND (PROC_T(IPROCFROM))), VFLOW(IA,IPROCFROM,PROCSINK,FLOW,S,T))
+SUM(IPROCFROM$(IFLOWFROMTOPROC_Y(IA,IPROCFROM,PROCSINK,FLOW) AND (NOT PROC_T(IPROCFROM))), SUM(ITWWT, VFLOW(IA,IPROCFROM,PROCSINK,FLOW,S,ITWWT)))
=E=
VFLOWSINK(IA,PROCSINK,FLOW,S,T)$PROC_T(PROCSINK)
+SUM(ITWWT,VFLOWSINK(IA,PROCSINK,FLOW,S,ITWWT))$(NOT PROC_T(PROCSINK))
$ifi %useSSBslack%==yes -SUM(ILOUPFXSET$SOSIBUBOUND(IA,PROCSINK,FLOW,ILOUPFXSET),VQSINKBALANCE(IA,PROCSINK,FLOW,S,T,'IPLUS') - VQSINKBALANCE(IA,PROCSINK,FLOW,S,T,'IMINUS'))
;
QBUFFERNODEBALANCE(IA,PROCBUFFER,FLOW,S,T)$(IPROCTIMESETS(PROCBUFFER,T) AND (SUM(IPROCFROM$IFLOWFROMTOPROC_Y(IA,IPROCFROM,PROCBUFFER,FLOW),1) OR SUM((IPROCTO)$IFLOWFROMTOPROC_Y(IA,PROCBUFFER,IPROCTO,FLOW),1)))..
+SUM(IPROCFROM$(IFLOWFROMTOPROC_Y(IA,IPROCFROM,PROCBUFFER,FLOW)), VFLOW(IA,IPROCFROM,PROCBUFFER,FLOW,S,T))
-SUM(IPROCTO$(IFLOWFROMTOPROC_Y(IA,PROCBUFFER,IPROCTO,FLOW)), VFLOW(IA,PROCBUFFER,IPROCTO,FLOW,S,T))
=E=
VFLOWBUFFER(IA,PROCBUFFER,FLOW,S,T)
$ifi %useSSBslack%==yes +SUM(ILOUPFXSET$SOSIBUBOUND(IA,PROCBUFFER,FLOW,ILOUPFXSET),VQBUFFERBALANCE(IA,PROCBUFFER,FLOW,S,T,'IMINUS')-VQBUFFERBALANCE(IA,PROCBUFFER,FLOW,S,T,'IPLUS')) !! Sign?? TODO !!
;
* Note: the leaving and entering flows are of same quality, therefore sufficient with "$(SUM(IPROCFROM$IFLOWFROMTOPROC_Y(IA,IPROCFROM,PROCSTORAGE,FLOW),1))"
QSTORAGEBALANCE(IA,PROCSTORAGE,FLOW,S,T)$((SUM(IPROCFROM$IFLOWFROMTOPROC_Y(IA,IPROCFROM,PROCSTORAGE,FLOW),1))
AND IPROCINOUTFLOW_Y_set(IA,PROCSTORAGE,FLOW,FLOW))..
VSTORAGEVOL(IA,PROCSTORAGE,FLOW,S,T++1)
=E=
VSTORAGEVOL(IA,PROCSTORAGE,FLOW,S,T)
* Entering Flow (indexed over time segments (S,ITWWT)):
+SUM(IPROCFROM$(IFLOWFROMTOPROC_Y(IA,IPROCFROM,PROCSTORAGE,FLOW) AND (NOT PROC_T(IPROCFROM))),
SUM(ITWWT,VFLOW(IA,IPROCFROM,PROCSTORAGE,FLOW,S,ITWWT)*IPROCINOUTFLOW_Y(IA,PROCSTORAGE,FLOW,FLOW,'IONEONE'))*(IHOURSINST(S,T)*(CARD(S)/CARD(SSS))*(1/CYCLES(T))) )
* Entering Flow (indexed over time segments (S,T)):
+SUM(IPROCFROM$(IFLOWFROMTOPROC_Y(IA,IPROCFROM,PROCSTORAGE,FLOW) AND (PROC_T(IPROCFROM))),
VFLOW(IA,IPROCFROM,PROCSTORAGE,FLOW,S,T)*IPROCINOUTFLOW_Y(IA,PROCSTORAGE,FLOW,FLOW,'IONEONE')*(IHOURSINST(S,T)*(CARD(S)/CARD(SSS))*(1/CYCLES(T))))
* Leaving FLOW (indexed over time segments (S,ITWWT)):
-SUM(IPROCTO$(IFLOWFROMTOPROC_Y(IA,PROCSTORAGE,IPROCTO,FLOW) AND (NOT PROC_T(IPROCTO))),
SUM(ITWWT,VFLOW(IA,PROCSTORAGE,IPROCTO,FLOW,S,ITWWT))*(IHOURSINST(S,T)*(CARD(S)/CARD(SSS))*(1/CYCLES(T))))
* Leaving FLOW (indexed over time segments (S,T)):
-SUM(IPROCTO$(IFLOWFROMTOPROC_Y(IA,PROCSTORAGE,IPROCTO,FLOW) AND (PROC_T(IPROCTO))),
VFLOW(IA,PROCSTORAGE,IPROCTO,FLOW,S,T)*(IHOURSINST(S,T)*(CARD(S)/CARD(SSS))*(1/CYCLES(T))))
;
QSTORAGEBALANCE_Y(IA,PROCSTORAGE_Y,FLOW,S)$((SUM(IPROCFROM$IFLOWFROMTOPROC_Y(IA,IPROCFROM,PROCSTORAGE_Y,FLOW),1))
AND IPROCINOUTFLOW_Y_set(IA,PROCSTORAGE_Y,FLOW,FLOW))..
VSTORAGEVOL_Y(IA,PROCSTORAGE_Y,FLOW,S++1)
=E=
VSTORAGEVOL_Y(IA,PROCSTORAGE_Y,FLOW,S)
* Entering Flow (indexed over time segments (S,ITWWT)):
+SUM(IPROCFROM$(IFLOWFROMTOPROC_Y(IA,IPROCFROM,PROCSTORAGE_Y,FLOW) AND (NOT PROC_T(IPROCFROM))),
SUM(ITWWT,VFLOW(IA,IPROCFROM,PROCSTORAGE_Y,FLOW,S,ITWWT)*IPROCINOUTFLOW_Y(IA,PROCSTORAGE_Y,FLOW,FLOW,'IONEONE')*IHOURSINSTWWT(S,ITWWT)))
* Entering Flow (indexed over time segments (S,T)):
+SUM(IPROCFROM$(IFLOWFROMTOPROC_Y(IA,IPROCFROM,PROCSTORAGE_Y,FLOW) AND (PROC_T(IPROCFROM))),
SUM(T,VFLOW(IA,IPROCFROM,PROCSTORAGE_Y,FLOW,S,T)*IPROCINOUTFLOW_Y(IA,PROCSTORAGE_Y,FLOW,FLOW,'IONEONE')*IHOURSINST(S,T)))
* Leaving FLOW (indexed over time segments (S,ITWWT)):
-SUM(IPROCTO$(IFLOWFROMTOPROC_Y(IA,PROCSTORAGE_Y,IPROCTO,FLOW) AND (NOT PROC_T(IPROCTO))), SUM(ITWWT,VFLOW(IA,PROCSTORAGE_Y,IPROCTO,FLOW,S,ITWWT)*IHOURSINSTWWT(S,ITWWT)))
* Leaving FLOW (indexed over time segments (S,T)):
-SUM(IPROCTO$(IFLOWFROMTOPROC_Y(IA,PROCSTORAGE_Y,IPROCTO,FLOW) AND (PROC_T(IPROCTO))),SUM(T,VFLOW(IA,PROCSTORAGE_Y,IPROCTO,FLOW,S,T)*IHOURSINST(S,T)))
;
QSTORAGEBALANCE_YT(IA,PROCSTORAGE_YT,FLOW,S,T)$((SUM(IPROCFROM$IFLOWFROMTOPROC_Y(IA,IPROCFROM,PROCSTORAGE_YT,FLOW),1))
AND IPROCINOUTFLOW_Y_set(IA,PROCSTORAGE_YT,FLOW,FLOW))..
VSTORAGEVOL_ST(IA,PROCSTORAGE_YT,FLOW,S,T+1)+SUM(ITALIAS$(ORD(ITALIAS) EQ 1),VSTORAGEVOL_ST(IA,PROCSTORAGE_YT,FLOW,S++1,ITALIAS)$(ORD(T) EQ CARD(T)))
=E=
VSTORAGEVOL_ST(IA,PROCSTORAGE_YT,FLOW,S,T)
* Entering Flow (indexed over time segments (S,T)):
+SUM(IPROCFROM$IFLOWFROMTOPROC_Y(IA,IPROCFROM,PROCSTORAGE_YT,FLOW),
VFLOW(IA,IPROCFROM,PROCSTORAGE_YT,FLOW,S,T)*IPROCINOUTFLOW_Y(IA,PROCSTORAGE_YT,FLOW,FLOW,'IONEONE')*(IHOURSINST(S,T)*(CARD(S)/CARD(SSS))*(1/CYCLES(T))))
* Leaving FLOW (indexed over time segments (S,T)):
-SUM(IPROCTO$IFLOWFROMTOPROC_Y(IA,PROCSTORAGE_YT,IPROCTO,FLOW),
VFLOW(IA,PROCSTORAGE_YT,IPROCTO,FLOW,S,T)*(IHOURSINST(S,T)*(CARD(S)/CARD(SSS))*(1/CYCLES(T))))
;
* TODO: apparently this assumes that PROCEXIM is not in PROC_T! Is this OK?
QTRANSITNODEBALANCE(AAATRANSIT,PROCEXIM,IFLOWEXIM,S,ITWWT)..
SUM(IAE$ITRANSFLOWFROMTO(IAE,AAATRANSIT,IFLOWEXIM), VFLOWTRANS(IAE,AAATRANSIT,PROCEXIM,IFLOWEXIM,S,ITWWT)$(NOT TRANSFLOWMAX(IAE,AAATRANSIT,PROCEXIM,IFLOWEXIM)))
=E=
SUM(IAI$ITRANSFLOWFROMTO(AAATRANSIT,IAI,IFLOWEXIM), VFLOWTRANS(AAATRANSIT,IAI,PROCEXIM,IFLOWEXIM,S,ITWWT)$(NOT TRANSFLOWMAX(AAATRANSIT,IAI,PROCEXIM,IFLOWEXIM)) )
;
**This equation should be written in a better way, but at least it works :( Amalia (2015-06-23)
QFLOWSHAREOUT2OUTLO(IA,PROC,IFLOWIN,IFLOWOUT,IFLOWOUT2,S,T)$(IPROCINOUTFLOW_Y_set(IA,PROC,IFLOWIN,IFLOWOUT) AND
IPROCINOUTFLOW_Y_set(IA,PROC,IFLOWIN,IFLOWOUT2) AND
IPROCINOUTFLOW_Y(IA,PROC,IFLOWIN,IFLOWOUT,"IONEMANY") AND
IPROCINOUTFLOW_Y(IA,PROC,IFLOWIN,IFLOWOUT2,"IONEMANY") AND
IFLOWSHAREOUT2OUT_Y(IA,PROC,IFLOWIN,IFLOWOUT,IFLOWOUT2,'ILOUPFX_LO')
AND IPROCTIMESETS(PROC,T))..
SUM(IPROCTO$(IFLOWFROMTOPROC_Y(IA,PROC,IPROCTO,IFLOWOUT) AND IPROCINOUTFLOW_Y(IA,PROC,IFLOWIN,IFLOWOUT,"IONEMANY")),
VFLOW(IA,PROC,IPROCTO,IFLOWOUT,S,T))
=L=
SUM(IPROCTO$(IFLOWFROMTOPROC_Y(IA,PROC,IPROCTO,IFLOWOUT2) AND IPROCINOUTFLOW_Y(IA,PROC,IFLOWIN,IFLOWOUT2,"IONEMANY")),
VFLOW(IA,PROC,IPROCTO,IFLOWOUT2,S,T)) * IFLOWSHAREOUT2OUT_Y(IA,PROC,IFLOWIN,IFLOWOUT,IFLOWOUT2,'ILOUPFX_LO')
;
QFLOWSHAREOUT2OUTUP(IA,PROC,IFLOWIN,IFLOWOUT,IFLOWOUT2,S,T)$(IPROCINOUTFLOW_Y_set(IA,PROC,IFLOWIN,IFLOWOUT) AND
IPROCINOUTFLOW_Y_set(IA,PROC,IFLOWIN,IFLOWOUT2) AND
IPROCINOUTFLOW_Y(IA,PROC,IFLOWIN,IFLOWOUT,"IONEMANY") AND
IPROCINOUTFLOW_Y(IA,PROC,IFLOWIN,IFLOWOUT2,"IONEMANY") AND
IFLOWSHAREOUT2OUT_Y(IA,PROC,IFLOWIN,IFLOWOUT,IFLOWOUT2,'ILOUPFX_UP')
AND IPROCTIMESETS(PROC,T))..
SUM(IPROCTO$(IFLOWFROMTOPROC_Y(IA,PROC,IPROCTO,IFLOWOUT) AND IPROCINOUTFLOW_Y(IA,PROC,IFLOWIN,IFLOWOUT,"IONEMANY")),
VFLOW(IA,PROC,IPROCTO,IFLOWOUT,S,T))
=G=
SUM(IPROCTO$(IFLOWFROMTOPROC_Y(IA,PROC,IPROCTO,IFLOWOUT2) AND IPROCINOUTFLOW_Y(IA,PROC,IFLOWIN,IFLOWOUT2,"IONEMANY")),
VFLOW(IA,PROC,IPROCTO,IFLOWOUT2,S,T)) * IFLOWSHAREOUT2OUT_Y(IA,PROC,IFLOWIN,IFLOWOUT,IFLOWOUT2,'ILOUPFX_UP')
;
QFLOWSHAREOUT2OUTFX(IA,PROC,IFLOWIN,IFLOWOUT,IFLOWOUT2,S,T)$(IPROCINOUTFLOW_Y_set(IA,PROC,IFLOWIN,IFLOWOUT) AND
IPROCINOUTFLOW_Y_set(IA,PROC,IFLOWIN,IFLOWOUT2) AND
IPROCINOUTFLOW_Y(IA,PROC,IFLOWIN,IFLOWOUT,"IONEMANY") AND
IPROCINOUTFLOW_Y(IA,PROC,IFLOWIN,IFLOWOUT2,"IONEMANY") AND
IFLOWSHAREOUT2OUT_Y(IA,PROC,IFLOWIN,IFLOWOUT,IFLOWOUT2,'ILOUPFX_FX')
AND IPROCTIMESETS(PROC,T))..
SUM(IPROCTO$(IFLOWFROMTOPROC_Y(IA,PROC,IPROCTO,IFLOWOUT) AND IPROCINOUTFLOW_Y(IA,PROC,IFLOWIN,IFLOWOUT,"IONEMANY")),
VFLOW(IA,PROC,IPROCTO,IFLOWOUT,S,T))
=E=
SUM(IPROCTO$(IFLOWFROMTOPROC_Y(IA,PROC,IPROCTO,IFLOWOUT2) AND IPROCINOUTFLOW_Y(IA,PROC,IFLOWIN,IFLOWOUT2,"IONEMANY")),
VFLOW(IA,PROC,IPROCTO,IFLOWOUT2,S,T)) * IFLOWSHAREOUT2OUT_Y(IA,PROC,IFLOWIN,IFLOWOUT,IFLOWOUT2,'ILOUPFX_FX')
;
QFLOWSHAREOUT2INLO(IA,PROC,IFLOWIN,IFLOWOUT,S,T)$(IPROCINOUTFLOW_Y_set(IA,PROC,IFLOWIN,IFLOWOUT) AND
IPROCINOUTFLOW_Y(IA,PROC,IFLOWIN,IFLOWOUT,"IONEMANY") AND
SUM(IPROCTO$(IFLOWFROMTOPROC_Y(IA,PROC,IPROCTO,IFLOWOUT) AND IFLOWSHAREOUT2IN_Y(IA,PROC,IPROCTO,IFLOWOUT,'ILOUPFX_LO')),1) !! Note: the part in /**/ is not needed, appears above; cf. also two eqns below
AND IPROCTIMESETS(PROC,T))..
* Left hand side FLOW: a split outFLOW that is coming from a single inFLOW:
+SUM(IPROCTO$(IFLOWFROMTOPROC_Y(IA,PROC,IPROCTO,IFLOWOUT) AND IPROCINOUTFLOW_Y(IA,PROC,IFLOWIN,IFLOWOUT,"IONEMANY") AND IFLOWSHAREOUT2IN_Y(IA,PROC,IPROCTO,IFLOWOUT,'ILOUPFX_LO')), VFLOW(IA,PROC,IPROCTO,IFLOWOUT,S,T))
=G=
* Right hand side FLOW: the single inFLOW that is split on two out more outFLOW with IONEMANY:
+SUM(IPROCFROM$(IFLOWFROMTOPROC_Y(IA,IPROCFROM,PROC,IFLOWIN) ), VFLOW(IA,IPROCFROM,PROC,IFLOWIN,S,T)
* (SUM(IPROCTO$(IFLOWFROMTOPROC_Y(IA,PROC,IPROCTO,IFLOWOUT) AND IPROCINOUTFLOW_Y(IA,PROC,IFLOWIN,IFLOWOUT,"IONEMANY") AND IFLOWSHAREOUT2IN_Y(IA,PROC,IPROCTO,IFLOWOUT,'ILOUPFX_LO')),IFLOWSHAREOUT2IN_Y(IA,PROC,IPROCTO,IFLOWOUT,'ILOUPFX_LO'))))
$ifi %useShareSlack%==yes - VQFLOWSHAREOUT2INLO(IA,PROC,IFLOWIN,IFLOWOUT,S,T,'ILOUPFX_LO','IPLUS')
;
QFLOWSHAREOUT2INUP(IA,PROC,IFLOWIN,IFLOWOUT,S,T)$(IPROCINOUTFLOW_Y_set(IA,PROC,IFLOWIN,IFLOWOUT) AND IPROCINOUTFLOW_Y(IA,PROC,IFLOWIN,IFLOWOUT,"IONEMANY") AND
SUM(IPROCTO$(IFLOWFROMTOPROC_Y(IA,PROC,IPROCTO,IFLOWOUT) AND IFLOWSHAREOUT2IN_Y(IA,PROC,IPROCTO,IFLOWOUT,'ILOUPFX_UP')),1)
AND IPROCTIMESETS(PROC,T))..
* Left hand side FLOW: a split outFLOW that is coming from a single inFLOW:
+SUM(IPROCTO$(IFLOWFROMTOPROC_Y(IA,PROC,IPROCTO,IFLOWOUT) AND IPROCINOUTFLOW_Y(IA,PROC,IFLOWIN,IFLOWOUT,"IONEMANY") AND IFLOWSHAREOUT2IN_Y(IA,PROC,IPROCTO,IFLOWOUT,'ILOUPFX_UP')), VFLOW(IA,PROC,IPROCTO,IFLOWOUT,S,T))
=L=
* Right hand side FLOW: the single inFLOW that is split on two out more outFLOW with IONEMANY:
+SUM(IPROCFROM$(IFLOWFROMTOPROC_Y(IA,IPROCFROM,PROC,IFLOWIN) ), VFLOW(IA,IPROCFROM,PROC,IFLOWIN,S,T)
* (SUM(IPROCTO$(IFLOWFROMTOPROC_Y(IA,PROC,IPROCTO,IFLOWOUT) AND IPROCINOUTFLOW_Y(IA,PROC,IFLOWIN,IFLOWOUT,"IONEMANY") AND IFLOWSHAREOUT2IN_Y(IA,PROC,IPROCTO,IFLOWOUT,'ILOUPFX_UP')),IFLOWSHAREOUT2IN_Y(IA,PROC,IPROCTO,IFLOWOUT,'ILOUPFX_UP'))))
$ifi %useShareSlack%==yes + VQFLOWSHAREOUT2INUP(IA,PROC,IFLOWIN,IFLOWOUT,S,T,'ILOUPFX_UP','IMINUS')
;
QFLOWSHAREOUT2INFX(IA,PROC,IFLOWIN,IFLOWOUT,S,T)$(IPROCINOUTFLOW_Y_set(IA,PROC,IFLOWIN,IFLOWOUT) AND IPROCINOUTFLOW_Y(IA,PROC,IFLOWIN,IFLOWOUT,"IONEMANY") AND
SUM(IPROCTO$(IFLOWFROMTOPROC_Y(IA,PROC,IPROCTO,IFLOWOUT) AND IFLOWSHAREOUT2IN_Y(IA,PROC,IPROCTO,IFLOWOUT,'ILOUPFX_FX')),1)
AND IPROCTIMESETS(PROC,T))..
* Left hand side FLOW: a split outFLOW that is coming from a single inFLOW:
+SUM(IPROCTO$(IFLOWFROMTOPROC_Y(IA,PROC,IPROCTO,IFLOWOUT) AND IPROCINOUTFLOW_Y(IA,PROC,IFLOWIN,IFLOWOUT,"IONEMANY") AND IFLOWSHAREOUT2IN_Y(IA,PROC,IPROCTO,IFLOWOUT,'ILOUPFX_FX')), VFLOW(IA,PROC,IPROCTO,IFLOWOUT,S,T))
=E=
* Right hand side FLOW: the single inFLOW that is split on two out more outFLOW with IONEMANY:
+SUM(IPROCFROM$(IFLOWFROMTOPROC_Y(IA,IPROCFROM,PROC,IFLOWIN) ), VFLOW(IA,IPROCFROM,PROC,IFLOWIN,S,T)
* (SUM(IPROCTO$(IFLOWFROMTOPROC_Y(IA,PROC,IPROCTO,IFLOWOUT) AND IPROCINOUTFLOW_Y(IA,PROC,IFLOWIN,IFLOWOUT,"IONEMANY") AND IFLOWSHAREOUT2IN_Y(IA,PROC,IPROCTO,IFLOWOUT,'ILOUPFX_FX')),IFLOWSHAREOUT2IN_Y(IA,PROC,IPROCTO,IFLOWOUT,'ILOUPFX_FX'))))
$ifi %useShareSlack%==yes + VQFLOWSHAREOUT2INFX(IA,PROC,IFLOWIN,IFLOWOUT,S,T,'ILOUPFX_FX','IMINUS')
$ifi %useShareSlack%==yes - VQFLOWSHAREOUT2INFX(IA,PROC,IFLOWIN,IFLOWOUT,S,ITW,'ILOUPFX_FX','IPLUS')
;
QFLOWSHAREIN2INLO(IA,IPROCFROM,IPROCFROM2,PROC,IFLOWIN,IFLOWIN2,S,T)$(
IFLOWFROMTOPROC_Y(IA,IPROCFROM,PROC,IFLOWIN) AND IFLOWFROMTOPROC_Y(IA,IPROCFROM2,PROC,IFLOWIN2)
AND IFLOWSHAREIN2IN_Y(IA,PROC,IFLOWIN,IFLOWIN2,'ILOUPFX_LO')
AND IPROCTIMESETS(PROC,T))..
VFLOW(IA,IPROCFROM,PROC,IFLOWIN,S,T)
=G=
VFLOW(IA,IPROCFROM2,PROC,IFLOWIN2,S,T)*IFLOWSHAREIN2IN_Y(IA,PROC,IFLOWIN,IFLOWIN2,'ILOUPFX_LO');
QFLOWSHAREIN2INFX(IA,IPROCFROM,IPROCFROM2,PROC,IFLOWIN,IFLOWIN2,S,T)$(
IFLOWFROMTOPROC_Y(IA,IPROCFROM,PROC,IFLOWIN) AND IFLOWFROMTOPROC_Y(IA,IPROCFROM2,PROC,IFLOWIN2)
AND IFLOWSHAREIN2IN_Y(IA,PROC,IFLOWIN,IFLOWIN2,'ILOUPFX_FX')
AND IPROCTIMESETS(PROC,T))..
VFLOW(IA,IPROCFROM,PROC,IFLOWIN,S,T)
=E=
VFLOW(IA,IPROCFROM2,PROC,IFLOWIN2,S,T)*IFLOWSHAREIN2IN_Y(IA,PROC,IFLOWIN,IFLOWIN2,'ILOUPFX_FX');
QFLOWSHAREIN2INUP(IA,IPROCFROM,IPROCFROM2,PROC,IFLOWIN,IFLOWIN2,S,T)$(
IFLOWFROMTOPROC_Y(IA,IPROCFROM,PROC,IFLOWIN) AND IFLOWFROMTOPROC_Y(IA,IPROCFROM2,PROC,IFLOWIN2)
AND IFLOWSHAREIN2IN_Y(IA,PROC,IFLOWIN,IFLOWIN2,'ILOUPFX_UP')
AND IPROCTIMESETS(PROC,T))..
VFLOW(IA,IPROCFROM,PROC,IFLOWIN,S,T)
=L=
VFLOW(IA,IPROCFROM2,PROC,IFLOWIN2,S,T)*IFLOWSHAREIN2IN_Y(IA,PROC,IFLOWIN,IFLOWIN2,'ILOUPFX_UP');
QINDICINDICMIN(FLOWINDIC)$(INDICLIMGOAL(FLOWINDIC,"INDICMIN") AND (INDICLIMGOAL(FLOWINDIC,"INDICMIN") GT -INF))..
INDICLIMGOAL(FLOWINDIC,"INDICMIN") =L= VFLOWINDICVALUES(FLOWINDIC);
QINDICINDICMAX(FLOWINDIC)$(INDICLIMGOAL(FLOWINDIC,"INDICMAX") AND (INDICLIMGOAL(FLOWINDIC,"INDICMAX") LT +INF))..
VFLOWINDICVALUES(FLOWINDIC) =L= INDICLIMGOAL(FLOWINDIC,"INDICMAX");
*This equation is for any process that is not a storage process, so IPROCFROM (when is in IFLOWINOUT_OUT or IPROCTO (when is IFLOWIN_IN) cannot be a PROCSTORAGE
*If we want to highlight the importance of storage, we should take them into account and write them
QPROCKAP_UP(IA,IPROCFROM,IPROCTO,FLOW,S,T)$(((NOT PROCSTORAGE(IPROCFROM)) AND (NOT PROCSTORAGE_Y(IPROCFROM)) AND
(IFLOWFROMTOPROC_Y(IA,IPROCFROM,IPROCTO,FLOW) AND (PROCKAPDATA(IPROCFROM,FLOW,'IFLOWINOUT_OUT'))))
OR ((NOT PROCSTORAGE(IPROCTO)) AND (NOT PROCSTORAGE_Y(IPROCTO)) AND
(IFLOWFROMTOPROC_Y(IA,IPROCFROM,IPROCTO,FLOW) AND (PROCKAPDATA(IPROCTO,FLOW,'IFLOWINOUT_IN'))))
)..
VFLOW(IA,IPROCFROM,IPROCTO,FLOW,S,T) =L=
IPROCKAPFX(IA,IPROCFROM)$(PROCKAPDATA(IPROCFROM,FLOW,'IFLOWINOUT_OUT'))
+ IPROCKAPFX(IA,IPROCTO)$(PROCKAPDATA(IPROCTO,FLOW,'IFLOWINOUT_IN'))
* + (SUM(IY402$IY411PREVY(IY402),VPROCKAPACCUMNET(IY402,IA,IPROCFROM)) !! CHECK
+ VPROCKAPNEW(IA,IPROCFROM)$(IFLOWFROMTOPROC_Y(IA,IPROCFROM,IPROCTO,FLOW) AND (PROCKAPDATA(IPROCFROM,FLOW,'IFLOWINOUT_OUT')))
* + (SUM(IY402$IY411PREVY(IY402),VPROCKAPACCUMNET(IY402,IA,IPROCTO)) !! CHECK
+ VPROCKAPNEW(IA,IPROCTO)$(IFLOWFROMTOPROC_Y(IA,IPROCFROM,IPROCTO,FLOW) AND (PROCKAPDATA(IPROCTO,FLOW,'IFLOWINOUT_IN')));
QPROCKAUP_SCALE1(IA,PROC)$(IAPROCKAPNEW(IA,PROC) AND PROCKAPNEWSCALE(PROC))..
VPROCKAPNEW(IA,PROC)=G=PROCKAPNEWSCALE(PROC)*VPROCKAPNEWSCALE_U(IA,PROC);
QPROCKAUP_SCALE2(IA,PROC)$(IAPROCKAPNEW(IA,PROC) AND PROCKAPNEWSCALE(PROC))..
VPROCKAPNEW(IA,PROC)=L=VPROCKAPNEWSCALE_U(IA,PROC)*M_EconomyScale;
QPROCKAP_DEC(IA,IPROCFROM,IPROCTO,FLOW,S,T)$(((IFLOWFROMTOPROC_Y(IA,IPROCFROM,IPROCTO,FLOW) AND PROCKAPDECOM(IPROCFROM) AND
((IAPROCKAPNEW(IA,IPROCFROM) OR IPROCKAPFX(IA,IPROCFROM)) AND PROCKAPDATA(IPROCFROM,FLOW,'IFLOWINOUT_OUT'))))
OR ((IFLOWFROMTOPROC_Y(IA,IPROCFROM,IPROCTO,FLOW) AND PROCKAPDECOM(IPROCTO) AND
((IAPROCKAPNEW(IA,IPROCTO) OR IPROCKAPFX(IA,IPROCTO)) AND PROCKAPDATA(IPROCTO,FLOW,'IFLOWINOUT_IN'))))
)..
VFLOW(IA,IPROCFROM,IPROCTO,FLOW,S,T) =L=
(IPROCKAPFX(IA,IPROCFROM)*VPROCKAPDEC_U(IA,IPROCFROM))$(PROCKAPDATA(IPROCFROM,FLOW,'IFLOWINOUT_OUT'))
+(IPROCKAPFX(IA,IPROCTO)*VPROCKAPDEC_U(IA,IPROCTO))$(PROCKAPDATA(IPROCTO,FLOW,'IFLOWINOUT_IN'))
;
QRAMPUPPROC(IA,IPROCFROM,IPROCTO,FLOW,S,T)$((((IFLOWFROMTOPROC_Y(IA,IPROCFROM,IPROCTO,FLOW) AND PROCRAMPUP(IPROCFROM) AND
((IAPROCKAPNEW(IA,IPROCFROM) OR IPROCKAPFX(IA,IPROCFROM)) AND PROCKAPDATA(IPROCFROM,FLOW,'IFLOWINOUT_OUT'))))
OR ((IFLOWFROMTOPROC_Y(IA,IPROCFROM,IPROCTO,FLOW) AND PROCRAMPUP(IPROCTO) AND
((IAPROCKAPNEW(IA,IPROCTO) OR IPROCKAPFX(IA,IPROCTO)) AND PROCKAPDATA(IPROCTO,FLOW,'IFLOWINOUT_IN')))))
AND (NOT (ORD(T) EQ CARD(T)))
)..
VFLOW(IA,IPROCFROM,IPROCTO,FLOW,S,T+1)-VFLOW(IA,IPROCFROM,IPROCTO,FLOW,S,T)=L=
(PROCRAMPDOWN(IPROCFROM)*TIMELENGHT(T)*(
(VPROCKAPNEW(IA,IPROCFROM)$(IAPROCKAPNEW(IA,IPROCFROM) AND PROCKAPDATA(IPROCFROM,FLOW,'IFLOWINOUT_OUT'))
+IPROCKAPFX(IA,IPROCFROM)$PROCKAPDATA(IPROCFROM,FLOW,'IFLOWINOUT_OUT'))))
+ (PROCRAMPDOWN(IPROCTO)*TIMELENGHT(T)*(
(VPROCKAPNEW(IA,IPROCTO)$(IAPROCKAPNEW(IA,IPROCTO) AND PROCKAPDATA(IPROCTO,FLOW,'IFLOWINOUT_IN'))
+IPROCKAPFX(IA,IPROCTO)$PROCKAPDATA(IPROCTO,FLOW,'IFLOWINOUT_IN'))))
;
QRAMPDOWNPROC(IA,IPROCFROM,IPROCTO,FLOW,S,T)$((((IFLOWFROMTOPROC_Y(IA,IPROCFROM,IPROCTO,FLOW) AND PROCRAMPDOWN(IPROCFROM) AND
((IAPROCKAPNEW(IA,IPROCFROM) OR IPROCKAPFX(IA,IPROCFROM)) AND PROCKAPDATA(IPROCFROM,FLOW,'IFLOWINOUT_OUT'))))
OR ((IFLOWFROMTOPROC_Y(IA,IPROCFROM,IPROCTO,FLOW) AND PROCRAMPDOWN(IPROCTO) AND
((IAPROCKAPNEW(IA,IPROCTO) OR IPROCKAPFX(IA,IPROCTO)) AND PROCKAPDATA(IPROCTO,FLOW,'IFLOWINOUT_IN')))))
AND (NOT (ORD(T) EQ CARD(T)))
)..
VFLOW(IA,IPROCFROM,IPROCTO,FLOW,S,T)-VFLOW(IA,IPROCFROM,IPROCTO,FLOW,S,T+1)=L=
(PROCRAMPDOWN(IPROCFROM)*TIMELENGHT(T)*(
(VPROCKAPNEW(IA,IPROCFROM)$(IAPROCKAPNEW(IA,IPROCFROM) AND PROCKAPDATA(IPROCFROM,FLOW,'IFLOWINOUT_OUT'))
+IPROCKAPFX(IA,IPROCFROM)$PROCKAPDATA(IPROCFROM,FLOW,'IFLOWINOUT_OUT'))))
+ (PROCRAMPDOWN(IPROCTO)*TIMELENGHT(T)*(
(VPROCKAPNEW(IA,IPROCTO)$(IAPROCKAPNEW(IA,IPROCTO) AND PROCKAPDATA(IPROCTO,FLOW,'IFLOWINOUT_IN'))
+IPROCKAPFX(IA,IPROCTO)$PROCKAPDATA(IPROCTO,FLOW,'IFLOWINOUT_IN'))))
;
*Amalia - Equation for investment in storage technologies was missing. With the following equation is included
QSTOVOLTLIM_T(IA,PROCSTORAGE,FLOW,S,T)$((IAPROCKAPNEW(IA,PROCSTORAGE) AND PROCKAPDATA(PROCSTORAGE,FLOW,'IFLOWINOUT_IN')))..
VSTORAGEVOL(IA,PROCSTORAGE,FLOW,S,T)=L=
IPROCSTORAGEBOUND(IA,PROCSTORAGE)$(PROCKAPDATA(PROCSTORAGE,FLOW,'IFLOWINOUT_IN'))
* + (SUM(IY402$IY411PREVY(IY402),VPROCKAPACCUMNET(IY402,IA,PROCSTORAGE)) !! CHECK
+ VPROCKAPNEW(IA,PROCSTORAGE)$((IAPROCKAPNEW(IA,PROCSTORAGE) AND PROCKAPDATA(PROCSTORAGE,FLOW,'IFLOWINOUT_IN')))
;
QSTOVOLTLIM(IA,PROCSTORAGE_Y,FLOW,S)$((IAPROCKAPNEW(IA,PROCSTORAGE_Y) AND PROCKAPDATA(PROCSTORAGE_Y,FLOW,'IFLOWINOUT_IN')))..
VSTORAGEVOL_Y(IA,PROCSTORAGE_Y,FLOW,S)=L=
IPROCSTORAGEBOUND(IA,PROCSTORAGE_Y)$PROCKAPDATA(PROCSTORAGE_Y,FLOW,'IFLOWINOUT_IN')
* + (SUM(IY402$IY411PREVY(IY402),VPROCKAPACCUMNET(IY402,IA,PROCSTORAGE_Y)) !! CHECK
+ VPROCKAPNEW(IA,PROCSTORAGE_Y)$((IAPROCKAPNEW(IA,PROCSTORAGE_Y) AND PROCKAPDATA(PROCSTORAGE_Y,FLOW,'IFLOWINOUT_IN')))
;
*Equation for fuel constraints at an annual level
QEQFLOW_A(IA,PROC,FLOW)$((IENTERPROC_Y(IA,PROC,FLOW) OR ILEAVEPROC_Y(IA,PROC,FLOW)) AND IEQFLOW_Y(IA,PROC,FLOW))..
(SUM((PROCBUFFER,S,T)$(PROCBUFFER(PROC) AND (IENTERPROC_Y(IA,PROCBUFFER,FLOW) OR ILEAVEPROC_Y(IA,PROCBUFFER,FLOW))),VFLOWBUFFER(IA,PROCBUFFER,FLOW,S,T)*IHOURSINST(S,T)))$(PROC_T(PROC))+
(SUM((PROCBUFFER,S,ITWWT)$(PROCBUFFER(PROC) AND (IENTERPROC_Y(IA,PROCBUFFER,FLOW) OR ILEAVEPROC_Y(IA,PROCBUFFER,FLOW))),VFLOWBUFFER(IA,PROCBUFFER,FLOW,S,ITWWT)*IHOURSINSTWWT(S,ITWWT)))$((NOT PROC_T(PROC)))+
(SUM((PROCSOURCE,S,T)$(PROCSOURCE(PROC)AND ILEAVEPROC_Y(IA,PROCSOURCE,FLOW)),VFLOWSOURCE(IA,PROCSOURCE,FLOW,S,T)*IHOURSINST(S,T)))$(PROC_T(PROC))+
(SUM((PROCSOURCE,S,ITWWT)$(PROCSOURCE(PROC)AND ILEAVEPROC_Y(IA,PROCSOURCE,FLOW)),VFLOWSOURCE(IA,PROCSOURCE,FLOW,S,ITWWT)*IHOURSINSTWWT(S,ITWWT)))$((NOT PROC_T(PROC)))+
(SUM((PROCSINK,S,T)$(PROCSINK(PROC) AND IENTERPROC_Y(IA,PROCSINK,FLOW)),VFLOWSINK(IA,PROCSINK,FLOW,S,T)*IHOURSINST(S,T)))$(PROC_T(PROC))+
(SUM((PROCSINK,S,ITWWT)$(PROCSINK(PROC) AND IENTERPROC_Y(IA,PROCSINK,FLOW)),VFLOWSINK(IA,PROCSINK,FLOW,S,ITWWT)*IHOURSINSTWWT(S,ITWWT)))$((NOT PROC_T(PROC)))
=E=IEQFLOW_Y(IA,PROC,FLOW);
QEQFLOW_R(IR,PROC,FLOW)$(((SUM(IA$RRRAAA(IR,IA),IENTERPROC_Y(IA,PROC,FLOW))) OR (SUM(IA$RRRAAA(IR,IA),ILEAVEPROC_Y(IA,PROC,FLOW)))) AND IEQFLOW_Y(IR,PROC,FLOW))..
SUM(IA$RRRAAA(IR,IA),
(SUM((PROCBUFFER,S,T)$(PROCBUFFER(PROC) AND (IENTERPROC_Y(IA,PROCBUFFER,FLOW) OR ILEAVEPROC_Y(IA,PROCBUFFER,FLOW))),VFLOWBUFFER(IA,PROCBUFFER,FLOW,S,T)*IHOURSINST(S,T)))$(PROC_T(PROC))+
(SUM((PROCBUFFER,S,ITWWT)$(PROCBUFFER(PROC) AND (IENTERPROC_Y(IA,PROCBUFFER,FLOW) OR ILEAVEPROC_Y(IA,PROCBUFFER,FLOW))),VFLOWBUFFER(IA,PROCBUFFER,FLOW,S,ITWWT)*IHOURSINSTWWT(S,ITWWT)))$((NOT PROC_T(PROC)))+
(SUM((PROCSOURCE,S,T)$(PROCSOURCE(PROC)AND ILEAVEPROC_Y(IA,PROCSOURCE,FLOW)),VFLOWSOURCE(IA,PROCSOURCE,FLOW,S,T)*IHOURSINST(S,T)))$(PROC_T(PROC))+
(SUM((PROCSOURCE,S,ITWWT)$(PROCSOURCE(PROC)AND ILEAVEPROC_Y(IA,PROCSOURCE,FLOW)),VFLOWSOURCE(IA,PROCSOURCE,FLOW,S,ITWWT)*IHOURSINSTWWT(S,ITWWT)))$((NOT PROC_T(PROC)))+
(SUM((PROCSINK,S,T)$(PROCSINK(PROC) AND IENTERPROC_Y(IA,PROCSINK,FLOW)),VFLOWSINK(IA,PROCSINK,FLOW,S,T)*IHOURSINST(S,T)))$(PROC_T(PROC))+
(SUM((PROCSINK,S,ITWWT)$(PROCSINK(PROC) AND IENTERPROC_Y(IA,PROCSINK,FLOW)),VFLOWSINK(IA,PROCSINK,FLOW,S,ITWWT)*IHOURSINSTWWT(S,ITWWT)))$((NOT PROC_T(PROC)))
)
=E=IEQFLOW_Y(IR,PROC,FLOW);
QEQFLOW_C(C,PROC,FLOW)$(((SUM(IA$ICA(C,IA),IENTERPROC_Y(IA,PROC,FLOW))) OR (SUM(IA$ICA(C,IA),ILEAVEPROC_Y(IA,PROC,FLOW)))) AND IEQFLOW_Y(C,PROC,FLOW))..
SUM(IA$ICA(C,IA),
(SUM((PROCBUFFER,S,T)$(PROCBUFFER(PROC) AND (IENTERPROC_Y(IA,PROCBUFFER,FLOW) OR ILEAVEPROC_Y(IA,PROCBUFFER,FLOW))),VFLOWBUFFER(IA,PROCBUFFER,FLOW,S,T)*IHOURSINST(S,T)))$(PROC_T(PROC))+
(SUM((PROCBUFFER,S,ITWWT)$(PROCBUFFER(PROC) AND (IENTERPROC_Y(IA,PROCBUFFER,FLOW) OR ILEAVEPROC_Y(IA,PROCBUFFER,FLOW))),VFLOWBUFFER(IA,PROCBUFFER,FLOW,S,ITWWT)*IHOURSINSTWWT(S,ITWWT)))$((NOT PROC_T(PROC)))+
(SUM((PROCSOURCE,S,T)$(PROCSOURCE(PROC) AND ILEAVEPROC_Y(IA,PROCSOURCE,FLOW)),VFLOWSOURCE(IA,PROCSOURCE,FLOW,S,T)*IHOURSINST(S,T)))$(PROC_T(PROC))+
(SUM((PROCSOURCE,S,ITWWT)$(PROCSOURCE(PROC) AND ILEAVEPROC_Y(IA,PROCSOURCE,FLOW)),VFLOWSOURCE(IA,PROCSOURCE,FLOW,S,ITWWT)*IHOURSINSTWWT(S,ITWWT)))$((NOT PROC_T(PROC)))+
(SUM((PROCSINK,S,T)$(PROCSINK(PROC) AND IENTERPROC_Y(IA,PROCSINK,FLOW)),VFLOWSINK(IA,PROCSINK,FLOW,S,T)*IHOURSINST(S,T)))$(PROC_T(PROC))+
(SUM((PROCSINK,S,ITWWT)$(PROCSINK(PROC) AND IENTERPROC_Y(IA,PROCSINK,FLOW)),VFLOWSINK(IA,PROCSINK,FLOW,S,ITWWT)*IHOURSINSTWWT(S,ITWWT)))$((NOT PROC_T(PROC)))
)
=E=IEQFLOW_Y(C,PROC,FLOW);
QMAXFLOW_A(IA,PROC,FLOW)$((IENTERPROC_Y(IA,PROC,FLOW) OR ILEAVEPROC_Y(IA,PROC,FLOW)) AND IMAXFLOW_Y(IA,PROC,FLOW))..
(SUM((PROCBUFFER,S,T)$(PROCBUFFER(PROC) AND (IENTERPROC_Y(IA,PROCBUFFER,FLOW) OR ILEAVEPROC_Y(IA,PROCBUFFER,FLOW))),VFLOWBUFFER(IA,PROCBUFFER,FLOW,S,T)*IHOURSINST(S,T)))$(PROC_T(PROC))+
(SUM((PROCBUFFER,S,ITWWT)$(PROCBUFFER(PROC) AND (IENTERPROC_Y(IA,PROCBUFFER,FLOW) OR ILEAVEPROC_Y(IA,PROCBUFFER,FLOW))),VFLOWBUFFER(IA,PROCBUFFER,FLOW,S,ITWWT)*IHOURSINSTWWT(S,ITWWT)))$((NOT PROC_T(PROC)))+
(SUM((PROCSOURCE,S,T)$(PROCSOURCE(PROC) AND ILEAVEPROC_Y(IA,PROCSOURCE,FLOW)) ,VFLOWSOURCE(IA,PROCSOURCE,FLOW,S,T)*IHOURSINST(S,T)))$(PROC_T(PROC))+
(SUM((PROCSOURCE,S,ITWWT)$(PROCSOURCE(PROC) AND ILEAVEPROC_Y(IA,PROCSOURCE,FLOW)),VFLOWSOURCE(IA,PROCSOURCE,FLOW,S,ITWWT)*IHOURSINSTWWT(S,ITWWT)))$((NOT PROC_T(PROC)))+
(SUM((PROCSINK,S,T)$(PROCSINK(PROC) AND IENTERPROC_Y(IA,PROCSINK,FLOW)),VFLOWSINK(IA,PROCSINK,FLOW,S,T)*IHOURSINST(S,T)))$(PROC_T(PROC))+
(SUM((PROCSINK,S,ITWWT)$(PROCSINK(PROC) AND IENTERPROC_Y(IA,PROCSINK,FLOW)),VFLOWSINK(IA,PROCSINK,FLOW,S,ITWWT)*IHOURSINSTWWT(S,ITWWT)))$((NOT PROC_T(PROC)))
=L=IMAXFLOW_Y(IA,PROC,FLOW);
QMAXFLOW_R(IR,PROC,FLOW)$(((SUM(IA$RRRAAA(IR,IA),IENTERPROC_Y(IA,PROC,FLOW))) OR (SUM(IA$RRRAAA(IR,IA),ILEAVEPROC_Y(IA,PROC,FLOW)))) AND IMAXFLOW_Y(IR,PROC,FLOW))..
SUM(IA$RRRAAA(IR,IA),
(SUM((PROCBUFFER,S,T)$(PROCBUFFER(PROC) AND (IENTERPROC_Y(IA,PROCBUFFER,FLOW) OR ILEAVEPROC_Y(IA,PROCBUFFER,FLOW))),VFLOWBUFFER(IA,PROCBUFFER,FLOW,S,T)*IHOURSINST(S,T)))$(PROC_T(PROC))+
(SUM((PROCBUFFER,S,ITWWT)$(PROCBUFFER(PROC) AND (IENTERPROC_Y(IA,PROCBUFFER,FLOW) OR ILEAVEPROC_Y(IA,PROCBUFFER,FLOW))),VFLOWBUFFER(IA,PROCBUFFER,FLOW,S,ITWWT)*IHOURSINSTWWT(S,ITWWT)))$((NOT PROC_T(PROC)))+
(SUM((PROCSOURCE,S,T)$(PROCSOURCE(PROC) AND ILEAVEPROC_Y(IA,PROCSOURCE,FLOW)),VFLOWSOURCE(IA,PROCSOURCE,FLOW,S,T)*IHOURSINST(S,T)))$(PROC_T(PROC))+
(SUM((PROCSOURCE,S,ITWWT)$(PROCSOURCE(PROC) AND ILEAVEPROC_Y(IA,PROCSOURCE,FLOW)),VFLOWSOURCE(IA,PROCSOURCE,FLOW,S,ITWWT)*IHOURSINSTWWT(S,ITWWT)))$((NOT PROC_T(PROC)))+
(SUM((PROCSINK,S,T)$(PROCSINK(PROC) AND IENTERPROC_Y(IA,PROCSINK,FLOW)),VFLOWSINK(IA,PROCSINK,FLOW,S,T)*IHOURSINST(S,T)))$(PROC_T(PROC))+
(SUM((PROCSINK,S,ITWWT)$(PROCSINK(PROC) AND IENTERPROC_Y(IA,PROCSINK,FLOW)),VFLOWSINK(IA,PROCSINK,FLOW,S,ITWWT)*IHOURSINSTWWT(S,ITWWT)))$((NOT PROC_T(PROC)))
)
=L=IMAXFLOW_Y(IR,PROC,FLOW);
QMAXFLOW_C(C,PROC,FLOW)$(((SUM(IA$ICA(C,IA),IENTERPROC_Y(IA,PROC,FLOW))) OR (SUM(IA$ICA(C,IA),ILEAVEPROC_Y(IA,PROC,FLOW)))) AND IMAXFLOW_Y(C,PROC,FLOW))..
SUM(IA$ICA(C,IA),
(SUM((PROCBUFFER,S,T)$(PROCBUFFER(PROC) AND (IENTERPROC_Y(IA,PROCBUFFER,FLOW) OR ILEAVEPROC_Y(IA,PROCBUFFER,FLOW))),VFLOWBUFFER(IA,PROCBUFFER,FLOW,S,T)*IHOURSINST(S,T)))$(PROC_T(PROC))+
(SUM((PROCBUFFER,S,ITWWT)$(PROCBUFFER(PROC) AND (IENTERPROC_Y(IA,PROCBUFFER,FLOW) OR ILEAVEPROC_Y(IA,PROCBUFFER,FLOW))),VFLOWBUFFER(IA,PROCBUFFER,FLOW,S,ITWWT)*IHOURSINSTWWT(S,ITWWT)))$((NOT PROC_T(PROC)))+
(SUM((PROCSOURCE,S,T)$(PROCSOURCE(PROC) AND ILEAVEPROC_Y(IA,PROCSOURCE,FLOW)),VFLOWSOURCE(IA,PROCSOURCE,FLOW,S,T)*IHOURSINST(S,T)))$(PROC_T(PROC))+
(SUM((PROCSOURCE,S,ITWWT)$(PROCSOURCE(PROC) AND ILEAVEPROC_Y(IA,PROCSOURCE,FLOW)),VFLOWSOURCE(IA,PROCSOURCE,FLOW,S,ITWWT)*IHOURSINSTWWT(S,ITWWT)))$((NOT PROC_T(PROC)))+
(SUM((PROCSINK,S,T)$(PROCSINK(PROC) AND IENTERPROC_Y(IA,PROCSINK,FLOW)),VFLOWSINK(IA,PROCSINK,FLOW,S,T)*IHOURSINST(S,T)))$(PROC_T(PROC))+
(SUM((PROCSINK,S,ITWWT)$(PROCSINK(PROC) AND IENTERPROC_Y(IA,PROCSINK,FLOW)),VFLOWSINK(IA,PROCSINK,FLOW,S,ITWWT)*IHOURSINSTWWT(S,ITWWT)))$((NOT PROC_T(PROC)))
)
=L=IMAXFLOW_Y(C,PROC,FLOW);
QMINFLOW_A(IA,PROC,FLOW)$((IENTERPROC_Y(IA,PROC,FLOW) OR ILEAVEPROC_Y(IA,PROC,FLOW)) AND IMINFLOW_Y(IA,PROC,FLOW))..
(SUM((PROCBUFFER,S,T)$(PROCBUFFER(PROC) AND (IENTERPROC_Y(IA,PROCBUFFER,FLOW) OR ILEAVEPROC_Y(IA,PROCBUFFER,FLOW))),VFLOWBUFFER(IA,PROCBUFFER,FLOW,S,T)*IHOURSINST(S,T)))$(PROC_T(PROC))+
(SUM((PROCBUFFER,S,ITWWT)$(PROCBUFFER(PROC) AND (IENTERPROC_Y(IA,PROCBUFFER,FLOW) OR ILEAVEPROC_Y(IA,PROCBUFFER,FLOW))),VFLOWBUFFER(IA,PROCBUFFER,FLOW,S,ITWWT)*IHOURSINSTWWT(S,ITWWT)))$((NOT PROC_T(PROC)))+
(SUM((PROCSOURCE,S,T)$(PROCSOURCE(PROC) AND ILEAVEPROC_Y(IA,PROCSOURCE,FLOW)),VFLOWSOURCE(IA,PROCSOURCE,FLOW,S,T)*IHOURSINST(S,T)))$(PROC_T(PROC))+
(SUM((PROCSOURCE,S,ITWWT)$(PROCSOURCE(PROC) AND ILEAVEPROC_Y(IA,PROCSOURCE,FLOW)),VFLOWSOURCE(IA,PROCSOURCE,FLOW,S,ITWWT)*IHOURSINSTWWT(S,ITWWT)))$((NOT PROC_T(PROC)))+
(SUM((PROCSINK,S,T)$(PROCSINK(PROC) AND IENTERPROC_Y(IA,PROCSINK,FLOW)),VFLOWSINK(IA,PROCSINK,FLOW,S,T)*IHOURSINST(S,T)))$(PROC_T(PROC))+
(SUM((PROCSINK,S,ITWWT)$(PROCSINK(PROC) AND IENTERPROC_Y(IA,PROCSINK,FLOW)),VFLOWSINK(IA,PROCSINK,FLOW,S,ITWWT)*IHOURSINSTWWT(S,ITWWT)))$((NOT PROC_T(PROC)))
=G=IMINFLOW_Y(IA,PROC,FLOW);
QMINFLOW_R(IR,PROC,FLOW)$(((SUM(IA$RRRAAA(IR,IA),IENTERPROC_Y(IA,PROC,FLOW))) OR (SUM(IA$RRRAAA(IR,IA),ILEAVEPROC_Y(IA,PROC,FLOW)))) AND IMINFLOW_Y(IR,PROC,FLOW))..
SUM(IA$RRRAAA(IR,IA),
(SUM((PROCBUFFER,S,T)$(PROCBUFFER(PROC) AND (IENTERPROC_Y(IA,PROCBUFFER,FLOW) OR ILEAVEPROC_Y(IA,PROCBUFFER,FLOW))),VFLOWBUFFER(IA,PROCBUFFER,FLOW,S,T)*IHOURSINST(S,T)))$(PROC_T(PROC))+
(SUM((PROCBUFFER,S,ITWWT)$(PROCBUFFER(PROC) AND (IENTERPROC_Y(IA,PROCBUFFER,FLOW) OR ILEAVEPROC_Y(IA,PROCBUFFER,FLOW))),VFLOWBUFFER(IA,PROCBUFFER,FLOW,S,ITWWT)*IHOURSINSTWWT(S,ITWWT)))$((NOT PROC_T(PROC)))+
(SUM((PROCSOURCE,S,T)$(PROCSOURCE(PROC) AND ILEAVEPROC_Y(IA,PROCSOURCE,FLOW)),VFLOWSOURCE(IA,PROCSOURCE,FLOW,S,T)*IHOURSINST(S,T)))$(PROC_T(PROC))+
(SUM((PROCSOURCE,S,ITWWT)$(PROCSOURCE(PROC) AND ILEAVEPROC_Y(IA,PROCSOURCE,FLOW)),VFLOWSOURCE(IA,PROCSOURCE,FLOW,S,ITWWT)*IHOURSINSTWWT(S,ITWWT)))$((NOT PROC_T(PROC)))+
(SUM((PROCSINK,S,T)$(PROCSINK(PROC) AND IENTERPROC_Y(IA,PROCSINK,FLOW)),VFLOWSINK(IA,PROCSINK,FLOW,S,T)*IHOURSINST(S,T)))$(PROC_T(PROC))+
(SUM((PROCSINK,S,ITWWT)$(PROCSINK(PROC) AND IENTERPROC_Y(IA,PROCSINK,FLOW)),VFLOWSINK(IA,PROCSINK,FLOW,S,ITWWT)*IHOURSINSTWWT(S,ITWWT)))$((NOT PROC_T(PROC)))
)
=G=IMINFLOW_Y(IR,PROC,FLOW);
QMINFLOW_C(C,PROC,FLOW)$(((SUM(IA$ICA(C,IA),IENTERPROC_Y(IA,PROC,FLOW))) OR (SUM(IA$ICA(C,IA),ILEAVEPROC_Y(IA,PROC,FLOW)))) AND IMINFLOW_Y(C,PROC,FLOW))..
SUM(IA$ICA(C,IA),
(SUM((PROCBUFFER,S,T)$(PROCBUFFER(PROC) AND (IENTERPROC_Y(IA,PROCBUFFER,FLOW) OR ILEAVEPROC_Y(IA,PROCBUFFER,FLOW))),VFLOWBUFFER(IA,PROCBUFFER,FLOW,S,T)*IHOURSINST(S,T)))$(PROC_T(PROC))+
(SUM((PROCBUFFER,S,ITWWT)$(PROCBUFFER(PROC) AND (IENTERPROC_Y(IA,PROCBUFFER,FLOW) OR ILEAVEPROC_Y(IA,PROCBUFFER,FLOW))),VFLOWBUFFER(IA,PROCBUFFER,FLOW,S,ITWWT)*IHOURSINSTWWT(S,ITWWT)))$((NOT PROC_T(PROC)))+
(SUM((PROCSOURCE,S,T)$(PROCSOURCE(PROC) AND ILEAVEPROC_Y(IA,PROCSOURCE,FLOW)),VFLOWSOURCE(IA,PROCSOURCE,FLOW,S,T)*IHOURSINST(S,T)))$(PROC_T(PROC))+
(SUM((PROCSOURCE,S,ITWWT)$(PROCSOURCE(PROC) AND ILEAVEPROC_Y(IA,PROCSOURCE,FLOW)),VFLOWSOURCE(IA,PROCSOURCE,FLOW,S,ITWWT)*IHOURSINSTWWT(S,ITWWT)))$((NOT PROC_T(PROC)))+
(SUM((PROCSINK,S,T)$(PROCSINK(PROC) AND IENTERPROC_Y(IA,PROCSINK,FLOW)),VFLOWSINK(IA,PROCSINK,FLOW,S,T)*IHOURSINST(S,T)))$(PROC_T(PROC))+
(SUM((PROCSINK,S,ITWWT)$(PROCSINK(PROC) AND IENTERPROC_Y(IA,PROCSINK,FLOW)),VFLOWSINK(IA,PROCSINK,FLOW,S,ITWWT)*IHOURSINSTWWT(S,ITWWT)))$((NOT PROC_T(PROC)))
)
=G=IMINFLOW_Y(C,PROC,FLOW);