Display printf, one line missing

10 views
Skip to first unread message

Sam

unread,
May 23, 2016, 6:53:12 AM5/23/16
to AMPL Modeling Language
Hi,

I'm trying to generate a display and there is one line missing:

for {j in reservoir} {
printf {i in liquide: y[i,j]} 
"Réservoir %3d, capacité %3d, capacité utilisée %3d, capacité résiduelle %3d\n", j,cap[j],y[i,j]+qantIni[j],capacite[i];}

I get this result but #4 is missing. It should also display

"Réservoir   4, capacité 600, capacité utilisée 0, capacité résiduelle  650"


Réservoir   1, capacité 500, capacité utilisée 450, capacité résiduelle  50
Réservoir   2, capacité 400, capacité utilisée 400, capacité résiduelle   0
Réservoir   3, capacité 400, capacité utilisée 400, capacité résiduelle   0
Réservoir   5, capacité 600, capacité utilisée 600, capacité résiduelle   0
Réservoir   6, capacité 900, capacité utilisée 900, capacité résiduelle   0
Réservoir   7, capacité 800, capacité utilisée 800, capacité résiduelle 100
Réservoir   8, capacité 800, capacité utilisée 700, capacité résiduelle 100
Réservoir   9, capacité 800, capacité utilisée 700, capacité résiduelle 100

Even if y[i,j]=0 and qantIni[j] = 0, i don't understand why it's not being displayed. 

Thanks if you can help.

Victor Zverovich

unread,
May 23, 2016, 11:52:36 AM5/23/16
to am...@googlegroups.com
The printf statement

  printf {i in liquide: y[i,j]} ...

is executed if y[i,j] != 0 because you have "y[i,j]" in the "such that" clause which may explain why the line is not shown.

HTH,
Victor

--
You received this message because you are subscribed to the Google Groups "AMPL Modeling Language" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ampl+uns...@googlegroups.com.
To post to this group, send email to am...@googlegroups.com.
Visit this group at https://groups.google.com/group/ampl.
For more options, visit https://groups.google.com/d/optout.

Sam

unread,
May 23, 2016, 12:23:18 PM5/23/16
to AMPL Modeling Language


I agree, but if I don't put that "y[i,j], get a line for every y[i,j]:

I changed the data so it's not j4 missing but j6.

j1, capacité 550, capacité utilisée   0, capacité résiduelle 550
j1, capacité 550, capacité utilisée   0, capacité résiduelle 550
j1, capacité 550, capacité utilisée   0, capacité résiduelle 550
j1, capacité 550, capacité utilisée 450, capacité résiduelle 100
j1, capacité 550, capacité utilisée   0, capacité résiduelle 550
j2, capacité 400, capacité utilisée 400, capacité résiduelle   0
j2, capacité 400, capacité utilisée   0, capacité résiduelle 400
j2, capacité 400, capacité utilisée   0, capacité résiduelle 400
j2, capacité 400, capacité utilisée   0, capacité résiduelle 400
j2, capacité 400, capacité utilisée   0, capacité résiduelle 400
j3, capacité 400, capacité utilisée 400, capacité résiduelle   0
j3, capacité 400, capacité utilisée 100, capacité résiduelle 300
j3, capacité 400, capacité utilisée 100, capacité résiduelle 300
j3, capacité 400, capacité utilisée 100, capacité résiduelle 300
j3, capacité 400, capacité utilisée 100, capacité résiduelle 300
j4, capacité 600, capacité utilisée   0, capacité résiduelle 600 
 ...
j5, capacité 600, capacité utilisée   0, capacité résiduelle 600
j6, capacité 900, capacité utilisée   0, capacité résiduelle 900
j6, capacité 900, capacité utilisée   0, capacité résiduelle 900
j6, capacité 900, capacité utilisée   0, capacité résiduelle 900
j6, capacité 900, capacité utilisée   0, capacité résiduelle 900
j6, capacité 900, capacité utilisée   0, capacité résiduelle 900
j7, capacité 800, capacité utilisée   0, capacité résiduelle 800 

so by putting y[i,j], i get one line / j but none for j6 as all lines are 0. I need a single line for every j (j6 included).

Victor Zverovich

unread,
May 24, 2016, 9:54:38 AM5/24/16
to am...@googlegroups.com
If you add y[i,j] in the such that clause, j6 won't be printed because y[i,6] are all zero, so you need to change the code somehow. For example, you can replace printf with an loop and print at least one element per j even if corresponding y is zero.

HTH,
Victor
Reply all
Reply to author
Forward
0 new messages