I think Alex's analysis is correct but the proposed solution is wrong. The problem is that in Nminus the arcs are stored with different order of fields, so if you get an arc <f,t> from Nminus then this arc is not in arcs. Instead the arc <t,f> is in arcs. And since y is indexed by values from arcs you have to use that index. So the constraint ct2 should be:
forall (i in tnodes, v in Vehicle)
ct2:sum (a in Nplus[i]) y[v][a]==sum (<f,t> in Nminus[i]) y[v][<t,f>];
------------------------------
Daniel Junglas
------------------------------
Original Message:
Sent: Thu June 18, 2020 12:19 PM
From: ALEX FLEISCHER
Subject: Cplex cannot extract the expression
Hi
you have some a that do not belong to arcs.
So can you change ct2 and ct4 into
//ct2 forall (i in tnodes, v in Vehicle) //number of incoming&outgoing arcs for each node is equal ct2:sum (a in Nplus[i]:a in arcs) y[v][a]==sum (a in Nminus[i]:a in arcs) y[v][a];
and
//ct4 forall(d in demand,i in tnodes){ ct4:if(i == d.Origin )sum(a in Nplus[i]:a in arcs)x[d][a] - sum(a in Nminus[i]:a in arcs)x[d][a]==dem[d]; else if (i == d.Destination )sum(a in Nplus[i]:a in arcs)x[d][a] - sum(a in Nminus[i]:a in arcs)x[d][a]==-dem[d]; else sum(a in Nplus[i]:a in arcs)x[d][a] - sum(a in Nminus[i]:a in arcs)x[d][a]==0;?
regards
------------------------------
ALEX FLEISCHER
------------------------------