44 using namespace Gecode;
56 b = (
v*(
v-1)*lambda)/(k*(k-1));
57 r = (lambda*(
v-1)) / (k-1);
61 int v0,
int k0,
int lambda0)
62 :
Options(s),
v(v0), k(k0), lambda(lambda0) {
66 void parse(
int& argc,
char* argv[]) {
72 lambda = atoi(argv[3]);
78 std::cerr <<
"\t(unsigned int) default: " <<
v << std::endl
79 <<
"\t\tparameter v" << std::endl
80 <<
"\t(unsigned int) default: " << k << std::endl
81 <<
"\t\tparameter k" << std::endl
82 <<
"\t(unsigned int) default: " << lambda << std::endl
83 <<
"\t\tparameter lambda" << std::endl;
116 for (
int i=0;
i<
opt.v;
i++)
120 for (
int j=0; j<
opt.b; j++)
124 for (
int i1=0; i1<
opt.v; i1++)
125 for (
int i2=i1+1; i2<
opt.v; i2++) {
127 for (
int j=0; j<
opt.b; j++)
128 row[j] =
expr(*
this,
p(j,i1) &&
p(j,i2));
137 if (
opt.symmetry() == SYMMETRY_LDSB) {
143 if (
opt.symmetry() == SYMMETRY_LEX) {
144 for (
int i=1;
i<
opt.v;
i++)
146 for (
int j=1; j<
opt.b; j++)
158 <<
opt.v <<
"," <<
opt.k <<
","
159 <<
opt.lambda <<
")" << std::endl;
161 for (
int i = 0;
i<
opt.v;
i++) {
163 for (
int j = 0; j<
opt.b; j++)
173 _p.update(*
this,share,s.
_p);
179 return new BIBD(share,*
this);
196 opt.
parse(argc,argv);
203 Script::run<BIBD,DFS,BIBDOptions>(
opt);