you wrote "except if j is not equal to k"
So instead of
forall( k in Areas)
sum ( i in Areas: i!=k) X[i][k] == 1;
I would write
forall( k in Areas)
sum ( i in Areas: i==k) X[i][k] == 1;
and if you mean the opposite then you may turn your model into
//maximize sum( i in Areas ) P[i] * Y[i];
subject to {
forall( k in Areas )
ct1:sum ( j in Areas: j!=k) X[k][j] == 1;
forall( k in Areas)
ct2:sum ( i in Areas: i!=k) X[i][k] == 1;
forall( i in Areas) forall (j in Areas) ct3:T[i] + FROMTO[i][j] - T[j] - 100*(1-X[i][j]) <= 0;
ct4:T[1] == 0;
forall( i in Areas: i!=1) ct5:T[i] - D[i] - 1000*(1-Y[i]) <= 0;
}
and then you ll see some conflicts and relaxations.
regards
https://www.linkedin.com/pulse/making-decision-optimization-simple-alex-fleischer/