|
Example: Two draughts at each corner and one draught at each edge.
Xpress-Mosel Model
model 'twelve'
! Description : Twelve draughts puzzle
! Source : Boris Kordemsky - The Moscow Puzzles (P36)
! Date written : MAGIC 16/12/92, Xpress-MP 22/6/98, Mosel 16/4/03
! Written by : M J Chlond
uses 'mmxprs'
parameters
s = 4
end-parameters
declarations
S = 1..s
x: array(S,S) of mpvar
end-declarations
! arbitrary objective
any:= x(2,2)
! total of 12 pieces placed
cona:= sum(i in S,j in S) x(i,j) = 12
! 5 pieces on each side
conb:= sum(j in S) x(1,j) = 5
conc:= sum(i in S) x(i,1) = 5
cond:= sum(j in S) x(4,j) = 5
cone:= sum(i in S) x(i,4) = 5
! inner squares unused
conf:= sum(i in 2..3,j in 2..3) x(i,j) = 0
forall(i in S, j in S)
x(i,j) is_integer
minimise(any)
! display results
write('x =')
writeln
forall(i in S) do
forall(j in S)
write(getsol(x(i,j)),' ')
writeln
end-do
end-model
|