メインコンテンツへスキップ

Code not working and do not know how to proceed. Any one know what I am doing wrong?

回答済み

コメント

2件のコメント

  • 正式なコメント
    Simranjit Kaur
    • Gurobi Staff
    This post is more than three 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.
  • Jaromił Najman
    • Gurobi Staff

    I will discuss one type of constraints, because the others can be fixed in the same way.

    You are trying to model the constraints

    \[b_j(t) \leq b_j(t-1) - th_{i+1}(t) + v_i(t)\]

    Your times \(t\) are in \(\{1,\dots,10\}\). First thing that comes up is that you have to start at \(t\geq 2\), because there is no \(b_j(0)\).
    Your machines are given as \(m \in \{\text{machine }1, \dots, \text{machine }5\}\). Thus, you have to go to at most machine \(4\), because there is no \(th_{\text{machine }6}\)(t).
    You can model the above constraints as

    machines = ['Machine 1', 'Machine 2', 'Machine 3', 'Machine 4', 'Machine 5']
    time = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    buffers = ['b1', 'b2', 'b3', 'b4', 'b5']
    speeds = df[df.columns[:-1]].stack().to_dict()
    k_max = 40

    model = gp.Model()
    thi = model.addVars(machines, time, name = 'Throughputs')  # The throughputs of the machines
    bj = model.addVars(buffers, time, ub = k_max, name = "Buffers")  # Actual amount of units in buffer i
    amount_bj_1 = model.addConstrs((bj[b, t] <= bj[b, t-1]
                              - thi[machines[m+1],t] + speeds[t, machines[m]]
                              for t in time if t>=2 for m in range(len(machines)-1) for b in buffers))
    model.write("myLP.lp") # write LP file to analyze whether the model looks correct so far

    A few remarks:

    • It is best to add constraints one by one and check whether the constraints you generated are correct.
      This makes debugging easier
    • Avoid using indices or names with whitespaces. In your particular case, consider using 'Machine_X' instead of 'Machine X'
    • It might be easier to use integer indices \(1,2,3,...\) for machines instead of strings Machine_1, Machine_2, ...

    Best regards, 
    Jaromił

    0

投稿コメントは受け付けていません。