|
14 1 0 1 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 1 0 0 Xpress-Mosel Model
model 'dbishop2'
! Description : Dudeney's bishop placement problem II
! Source : Dudeney, H.E., (1917), Amusements in Mathematics, Thomas Nelson and Sons.
! Date written : Xpress-MP 26/10/99, Mosel 17/4/03
! Written by : M J Chlond
uses 'mmxprs'
parameters
size = 8
end-parameters
declarations
S = 1..size
x: array(S,S) of mpvar ! x(i,j) = 1 if square {I,J} occupied, 0 otherwise
a: array(S,S) of mpvar ! a(i,j) = 1 if square {I,J} attacked, 0 otherwise
end-declarations
! maximise number of bishops
numb:= sum(i in S,j in S) x(i,j)
! a(i,j) = 1 if square {i,j} attacked
forall(i in S,j in S)
att(i,j):= sum(m in S | m <> i and m-i+j >= 1 and m-i+j <= size) x(m,m-i+j)+
sum(m in S | m <> i and i+j-m >= 1 and i+j-m <= size) x(m,i+j-m) <= 99*a(i,j)
! each square either attacked or occupied
forall(i in S,j in S)
mb(i,j):= a(i,j)+x(i,j) = 1
forall(i in S, j in S) do
x(i,j) is_binary
a(i,j) is_binary
end-do
maximise(numb)
forall(i in S) do
forall(j in S)
write(getsol(x(i,j)),' ')
writeln
end-do
end-model
|