|
10,32,54,76,98
Xpress-Mosel Model
model 'onroad'
! Description : On the road
! Source : Poniachik, J. & L, (1998), Hard-to-solve Brainteasers, Sterling
! Date written : Xpress-MP 4/12/99, Mosel 19/4/03
! Written by : M J Chlond
uses 'mmxprs'
declarations
N = 1..10
x: array(N,N) of mpvar ! x(i,j) = 1 if digit (i-1) is in position j
d: mpvar
end-declarations
closest:= sum(i in N) 10*(i-1)*x(i,1)+sum(i in N) (i-1)*x(i,2)
forall(i in N)
dcon(i):= sum(j in N) x(i,j) = 1
forall(j in N)
pcon(j):= sum(i in N) x(i,j) = 1
zero:= x(1,1)+x(1,3)+x(1,5)+x(1,7)+x(1,9) = 0
dista:=sum(i in N) 10*(i-1)*x(i,1)+sum(i in N)(i-1)*x(i,2)+d =
sum(i in N) 10*(i-1)*x(i,3)+sum(i in N)(i-1)*x(i,4)
distb:=sum(i in N) 10*(i-1)*x(i,3)+sum(i in N)(i-1)*x(i,4)+d =
sum(i in N) 10*(i-1)*x(i,5)+sum(i in N)(i-1)*x(i,6)
distc:=sum(i in N) 10*(i-1)*x(i,5)+sum(i in N)(i-1)*x(i,6)+d =
sum(i in N) 10*(i-1)*x(i,7)+sum(i in N)(i-1)*x(i,8)
distd:=sum(i in N) 10*(i-1)*x(i,7)+sum(i in N)(i-1)*x(i,8)+d =
sum(i in N) 10*(i-1)*x(i,9)+sum(i in N)(i-1)*x(i,10)
forall(i in N,j in N)
x(i,j) is_binary
minimise(closest)
forall(i in N) do
forall(j in N)
write(getsol(x(i,j)),' ')
writeln
end-do
end-model
|