///|
/// Allocate identical-cost servers to fixed Jackson traffic. Routing does
/// not depend on server counts; minimize sum Lq, equivalently external mean
/// response because total service demand is fixed. No live scheduling.
pub fn JacksonNetwork::allocate_servers(
self : JacksonNetwork,
minimum : Array[Int],
maximum : Array[Int],
budget : Int,
) -> ServerAllocation raise QueueError {
let traffic = self.solve_traffic()
if minimum.length() != traffic.length() ||
maximum.length() != traffic.length() {
raise Invalid("network allocation bounds must match nodes")
}
let nodes = []
for i in 0.. JacksonNetwork raise QueueError {
self.validate()
if counts.length() != self.nodes.length() {
raise Invalid("server counts must match nodes")
}
let nodes = []
for i in 0.. row.copy()),
}
}