~/bend-docscommunity

bounds.bend source

bounds.bend on the hub · documented module

# IProblem box — variable count + per-var [lo, hi].# Named problems live in problems.bend.import Basetype Interval is Data:  MkInterval{    low: F32    high: F32  }type Box is Data:  MkBox{    m: Nat    ivs: List<&2, Interval>  }def interval(+low: F32, +high: F32) -> Interval:  MkInterval{low, high}def lo(b: Interval) -> F32:  match b:    case MkInterval{low, high}:      lowdef hi(b: Interval) -> F32:  match b:    case MkInterval{low, high}:      highdef box(+m: Nat, ivs: List<&2, Interval>) -> Box:  MkBox{m, ivs}def n_obj(b: Box) -> Nat:  match b:    case MkBox{m, ivs}:      mdef intervals_of(b: Box) -> List<&2, Interval>:  match b:    case MkBox{m, ivs}:      ivsdef n_var(b: Box) -> Nat:  List.length(&2, Interval, intervals_of(b))def at.go(m: Maybe<&2, Interval>) -> Interval:  match m:    case None{}:      MkInterval{0.0, 1.0}    case Some{iv}:      ivdef at(b: Box, i: Nat) -> Interval:  at.go(List.get(&2, Interval, intervals_of(b), i))# nv copies of [0, 1]. Smoke / operator tests; unit ZDT / DTLZ boxes.def unit_n(nv: Nat, nm: Nat) -> Box:  MkBox{nm, List.replicate(Interval, nv, MkInterval{0.0, 1.0})}# nv copies of [low, high]. Sphere / Ackley / Rosenbrock and any uniform range.def span_n(nv: Nat, nm: Nat, +low: F32, +high: F32) -> Box:  MkBox{nm, List.replicate(Interval, nv, MkInterval{low, high})}