Skip to main content

Comments

2 comments

  • Official comment
    Simranjit Kaur
    • Gurobi Staff
    This post is more than two years old. Some information may not be up to date. For current information, please check the Gurobi Documentation or Knowledge Base. If you need more help, please create a new post in the community forum, or try Gurobot, our chatbot interface offering instant, expert-level support.
  • Maliheh Aramon
    • Gurobi Staff

    Hi, 

    I assume that you would like to build the constraint below using gurobipy-pandas:

    \[\sum_{t^{\prime} = t} ^{t+3} x_{e, t^{\prime}, s} \leq 3, ~~ \forall e \in E, t \in \{0, \cdots, |T| - 4\}, s \in S\]

    One approach that comes to my mind is to manually construct the left-hand side of the constraints for each \(e\), \(t\), \(s\) via mapping the indices of the variable series \(x\) to a function. See the script below as an example:

    import gurobipy as gp
    from gurobipy import GRB
    import gurobipy_pandas as gppd
    import pandas as pd
    import numpy as np

    E = range(5)
    S = range(10)
    T = range(6)

    model = gp.Model()
    x = gppd.add_vars(
    model, pd.MultiIndex.from_product((E, T, S), names=("e", "t", "s")), name="x"
    )

    # Manually construct the LHS for each index e, t, s using the dataframe x_df
    x_df = x.reset_index()

    def get_lhs(index):
    e, t, s = index
    if t <= len(T) -4:
    return x_df.query("e == @e and s == @s and t >= @t and t <= @t+3")["x"].sum()
    return np.nan

    # Drop the nan from LHS
    LHS = x.index.map(get_lhs).dropna()
    gppd.add_constrs(
    model,
    LHS,
    GRB.LESS_EQUAL,
    3,
    name="c",
    )
    Best regards,
    Maliheh
    0

Post is closed for comments.