Hi,
for your first problem:
By defining Z(q,0)=Z0(q) you do not set an initial solution, but
create a new constraint, in your case it means that Z(q,0) has to be
[1,1,0]. Literaly, it does not say "Z(1,0) equals 1", but "In a
feasible solution, Z(1,0) has to be equal to 1". Probably, your model
does not find a feasible solution and therefore the decission variable
"Z" is not assigned any value. So I would say the problem lies in your
definition of constraints.
On your second problem:
You may not use the same index in two loops. I think this is what you
would like to do:
forall(q in FareClasses, t in TimeStages) B(q,t) <= Demand(q,t) + sum
(v in FareClasses | v>q) Demand(v,t)
Greetings
David