标题: 【转载】SUDOKU 游戏的GAMS 版本 [打印本页] 作者: huashi3483 时间: 2009-11-14 05:19 标题: 【转载】SUDOKU 游戏的GAMS 版本 随便发一个sudoku的gams代码。最主要的是请大家理解set 里面mapping 的写法。 3 j: u2 |( Z. G9 C l. OSets r rows / r1*r9 / 9 ]9 R+ \, c" |+ G, w/ F c columns / c1*c9 / + k" m6 B2 g! Y% v- ~9 \0 T A0 a b blocks / b1*b9 / # F- a4 e! `, F' ^1 h v values / v1*v9 /1 b; o( _% h3 N6 O
br(b,r) / b1*b3 .r1*r3, b4*b6 .r4*r6, b7*b9 .r7*r9 / # F% {- }; f3 R x, T+ Z bc(b,c) / (b1,b4,b7).c1*c3, (b2,b5,b8).c4*c6, (b3,b6,b9).c7*c9 /- m( r) q/ h; f8 L: k
brc(b,r,c) block definitions ;3 }5 n4 D& b g. \1 a. f& I
' @ _6 [) s& ]% @! s( d9 p% R
brc(b,r,c) = br(b,r)*bc(b,c);" V; d% H) C4 X, x. d# f
# `8 Z7 x9 C6 R& M0 P0 L
Table problem(r,c) Hard problem with non-unique solution 2 k8 r7 p% K9 r c1 c2 c3 c4 c5 c6 c7 c8 c9) E% c5 Y4 f' Y) F
r1 2 6 7: M( v# a7 X$ i2 U9 j
r2 6 2 $ s& a* y6 ]; _" {, b7 hr3 4 8 1 * [9 W' u1 R" [# F7 Mr4 5 9 3 6 b% O. o& c9 h/ ~' }r5 3 5; z/ W, H' {2 y- L
r6 2 8 7" [) A" N* ?2 B4 }; K/ Q
r7 1 0 }+ A$ U. |* {4 o2 rr8 7 8 6 7 m9 Q3 ~: s' u% `6 ]# er9 5 3 8 ; 1 ~, [9 n- u- r5 e; I! ?' x% z* u M ]9 c
) k. `) G B" q! xBinary Variable X(r,c,v) assign value to cell (defined by row and column);0 k. r6 z" k0 ?# i0 R0 E' x, W
Variable W objectiv value - anything;5 m' P% V1 ~. @4 [: z
& i7 Z! e2 R5 d8 Z0 m
equations eq1(r,c) exactly one value for each cell 8 F k. R6 X9 w' \; w. d' s eq2(c,v) column entries have to be unique6 A# X& U8 _- a
eq3(r,v) row entries have to be unique ' r/ c! s# X# ]- C4 Q5 z5 T/ ~6 F eq4(b,v) block entries have to be unique6 b6 V2 T, e+ _: \7 p
nobj definition of objective - anything;. O; c/ ]7 D" I( X. a8 i: k/ i9 u2 W# d
6 k) N! w1 u* a) ~1 X0 L8 e
X.fx(r,c,v)$(problem(r,c)=ord(v)) = 1;, Y4 l; ?- t- ^; ^. `( f _9 H