relationalai.experimental.solvers.integer()
integer(arg: dsl.Instance) -> SolverExpression
Returns a solver expression that constrains the solver variables for entities produced by arg
to integer values.
Equivalent to setting type="integer"
in the SolverModel.variable()
method.
Must be called in a Model.rule()
or solvers.operators()
context.
Parameters
Section titled “Parameters”Name | Type | Description |
---|---|---|
arg | dsl.Instance | An instance of an entity type corresponding to a solver variable. |
Returns
Section titled “Returns”A SolverExpression
object.
Example
Section titled “Example”Use integer()
with the SolverModel.constraint()
method to constrain solver variables to integer values:
import relationalai as raifrom relationalai.experimental import solvers
# Define a RAI model.model = rai.Model("SupportTicketRouting")
# Declare support pipeline stage type.Stage = model.Type("Stage")
# Declare route type to connect stages.Route = model.Type("Route")Route.source.declare()Route.destination.declare()Route.capacity.declare()
32 collapsed lines
# Define sample data for the model.# Define support teams and endpoints.for name in [ "Incoming Tickets", "US Tier 1", "EU Tier 1", "US Tier 2", "EU Tier 2", "Escalations", "Resolved Tickets",]: with model.rule(): Stage.add(name=name)
# Define routes with capacities.for src_name, dst_name, cap in [ ("Incoming Tickets", "US Tier 1", 50), ("Incoming Tickets", "EU Tier 1", 40), ("US Tier 1", "Resolved Tickets", 20), ("US Tier 1", "US Tier 2", 30), ("EU Tier 1", "Resolved Tickets", 10), ("EU Tier 1", "EU Tier 2", 25), ("US Tier 2", "Resolved Tickets", 15), ("US Tier 2", "Escalations", 20), ("EU Tier 2", "Resolved Tickets", 15), ("EU Tier 2", "Escalations", 20), ("Escalations", "Resolved Tickets", 25),]: with model.rule(): src = Stage(name=src_name) dst = Stage(name=dst_name) Route.add(source=src, destination=dst).set(capacity=cap)
# Create a SolverModel instance from the model.solver_model = solvers.SolverModel(model)
# Specify variables, constraints, and the objective.# Define solver variables for each route.with model.rule(): route = Route() solver_model.variable( route, name_args=["route", route.source.name, route.destination.name], )
# Declare route variables to be integers.with model.rule(): route = Route() solver_model.constraint(solvers.integer(route))
Alternatively, you may set type="integer"
in the SolverModel.variable()
method to achieve the same effect:
import relationalai as raifrom relationalai.experimental import solvers
47 collapsed lines
# Define a RAI model.model = rai.Model("SupportTicketRouting")
# Declare support pipeline stage type.Stage = model.Type("Stage")
# Declare route type to connect stages.Route = model.Type("Route")Route.source.declare()Route.destination.declare()Route.capacity.declare()
# Define sample data for the model.# Define support teams and endpoints.for name in [ "Incoming Tickets", "US Tier 1", "EU Tier 1", "US Tier 2", "EU Tier 2", "Escalations", "Resolved Tickets",]: with model.rule(): Stage.add(name=name)
# Define routes with capacities.for src_name, dst_name, cap in [ ("Incoming Tickets", "US Tier 1", 50), ("Incoming Tickets", "EU Tier 1", 40), ("US Tier 1", "Resolved Tickets", 20), ("US Tier 1", "US Tier 2", 30), ("EU Tier 1", "Resolved Tickets", 10), ("EU Tier 1", "EU Tier 2", 25), ("US Tier 2", "Resolved Tickets", 15), ("US Tier 2", "Escalations", 20), ("EU Tier 2", "Resolved Tickets", 15), ("EU Tier 2", "Escalations", 20), ("Escalations", "Resolved Tickets", 25),]: with model.rule(): src = Stage(name=src_name) dst = Stage(name=dst_name) Route.add(source=src, destination=dst).set(capacity=cap)
# Create a SolverModel instance from the model.solver_model = solvers.SolverModel(model)
# Specify variables, constraints, and the objective.# Define solver variables for each route.with model.rule(): route = Route() solver_model.variable( route, name_args=["route", route.source.name, route.destination.name], type="integer", )