solve.moq solves MOQ (minimum order quantity) constraints over a grid table and
returns a boolean selection. See
MOQs and other ordering constraints.
Example
table G = with
[| as Item, as Qty, as Reward, as Cost, as MOQ |]
[| "A", 1, 10, 4, 1 |]
[| "A", 2, 18, 7, 1 |]
[| "B", 1, 6, 3, 1 |]
[| "B", 2, 11, 5, 1 |]
G.Buy = solve.moq(
Item: G.Item,
Quantity: G.Qty,
Reward: G.Reward,
Cost: G.Cost,
MaxCost: 10,
GroupId: G.Item,
GroupQuantity: G.Qty,
GroupMinQuantity: G.MOQ)
show table "MOQ plan" with
G.Item
G.Qty
G.Buy
This outputs the following table:
Item
Qty
Buy
A
1
false
A
2
true
B
1
false
B
2
false
Remarks
Provide exactly one of MaxCost, MaxTarget, or MinTarget. Target and
TargetGroup are only relevant with a target-based mode. Multiple MOQ
constraints can be added by repeating GroupId, GroupQuantity, and
GroupMinQuantity arguments (up to eight).