8 }) G s3 B; |, ~3 XBinary Variable X(r,c,v) assign value to cell (defined by row and column);. y4 Y: \8 ?, b0 F) \% h4 `; U; w
Variable W objectiv value - anything;, Z4 f9 U8 `9 L
7 X" |( i/ ^/ W$ ?2 _3 e# Q) Gequations eq1(r,c) exactly one value for each cell & v! J- `1 k+ y eq2(c,v) column entries have to be unique/ O: p/ b+ w: b( f
eq3(r,v) row entries have to be unique " K2 {3 L# ]; z9 ] eq4(b,v) block entries have to be unique " ?( }- a4 \* F nobj definition of objective - anything; z! D+ v% M6 v: M/ b7 I: ?) C) E" m
X.fx(r,c,v)$(problem(r,c)=ord(v)) = 1;+ i; d- V7 u8 W( X. X- u8 k
+ o9 H$ S8 V% z8 a4 Veq1(r,c).. sum(v, X(r,c,v)) =E= 1;: ~2 N3 h0 ]: \& s
eq2(c,v).. sum(r, X(r,c,v)) =E= 1; 8 a$ D5 o* R! S. \$ C( B3 |eq3(r,v).. sum(c, X(r,c,v)) =E= 1;& e+ A+ w8 @" w( J S+ e
eq4(b,v).. sum(brc(b,r,c), X(r,c,v)) =E= 1; . g9 P( r3 f0 p( Xnobj.. W =E= sum((r,c,v), X(r,c,v));# t y1 \, L! s# K! D
8 a% q( H1 ]1 W K9 A/ d
model sudoku / all /;/ m$ X5 p( M6 D/ h7 t& B1 l
+ M: U2 }; V" s; A% Ksolve sudoku minimizing w using mip;! Q1 k2 {7 P0 S: K6 {8 B5 t
最后说一句,其实这个模型不用求什么最大还是最小值,只要得到一个满足所有constraints的feasible solution 就可以了,所以nobj的注释写的"anything"。