Hi guys Thanks for all the answers, I haven't had much time to look at them. However I can tell you that the range of y and w are both [0..6] maybe a little higher. And if w is 0, then so are y.
Maybe this helps a little. Best regards, Kasper On Apr 29, 2012 5:23 AM, "Michael Hennebry" <[email protected]> wrote: > Divisiblilty can be used to reduce the problem somewhat. > > On Fri, 27 Apr 2012, Michael Hennebry wrote: > > # Solve >> # x = p * y / w >> # w * pd * x = pn * y >> # where x, y, w are natural numbers and >> # p = 11 / 17 >> # pn = 11 >> # pd = 17 >> # x in [23, 100] >> # y in [10, 200] >> # w in [3, 7] >> > > # Since pn/pd is in lowest terms, y must be a multiple of pd. > > param w_min := 3; >> param w_max := 7; >> >> param pn := 11; >> param pd := 17; >> >> set I := {w_min..w_max}; >> >> var w{I}, binary; >> var y, integer, >= 10, <= 200; >> var x, integer, >= 23, <= 100; >> > > var ypd, integer, >= 10/pd, <= 200/pd > # 1 11 > s.t. y_formula : > y = ypd*pd; > > s.t. lb{i in I} : >> i * pd * x >= pn * y - (1-w[i]) * (pn*200-i*pd*23); >> > i * x >= pn*ypd - (1-w[i]) * (pn*11 -i* 23); > > s.t. ub{i in I} : >> i * pd * x <= pn * y + (1-w[i]) * (i*pd*100-pn*10); >> > i * x <= pn*ypd + (1-w[i]) * (i * 100-pn ); > > s.t. sm : >> sum{i in I} w[i] = 1; >> >> solve; >> >> printf "x = %f\ny = %f\nw = %f\n", x, y, sum{i in I} w[i] * i; >> >> end; >> > > -- > Michael [email protected] > "On Monday, I'm gonna have to tell my kindergarten class, > whom I teach not to run with scissors, > that my fiance ran me through with a broadsword." -- Lily >
_______________________________________________ Help-glpk mailing list [email protected] https://lists.gnu.org/mailman/listinfo/help-glpk
