In reply to bachan21:
It would help to put the constraints in the same order of your description.
I think there is some confusion with your between constraints. If “only one person lives between E and G”, do you mean to say “there is one person living in between E and G”? Then the difference between E and G’s floors should be 2, not 1. There is no constraint for “G and C live in between the two floors” and I don’t know which two floors.
Also, do not use soft constraints here. Any mistakes and they may get silently discarded. Just use logical OR/AND
constraint D { d != g+1 && d != g-1;}