Note that there is a dedicated OPL Forum here. You may be better off asking your OPL related questions there.
In any case, I think your constraints just use the wrong indices in the right-hand sides. Consider your constraints
forall(i in plants)
demand_const:
sum (j in cities) x[i][j] >= demand[j];
forall(j in cities)
supply_const:
sum(i in plants) x[i][j] <= supply[i];
In the first constraint I guess you mean demand[i] and in the second I guess you mean supply[j].
#CPLEXOptimizers#DecisionOptimization