Error accessing elements within constraint matrix

I am trying to write a constraint that sums the process times for each row of a matrix, Z[a,p] where Z is a binary decision variable = 1 if a is assigned p; = 0 otherwise.

I am trying to multiply the 1’s in the row by the process times Pt in order to get the sum of the process time for each a.

I originally wrote:
@constraint(m, associate_takt[a in A, p in P], sum(Z[a, p]*Pt[p] for p in P) <= takt_lim)

but realized this wasn’t actually extracting the binary variables so I asked on stack exchange (Julia-Jump Integer Programming Optimization model: issue with multiplying matrix by vector - Stack Overflow) and was helped to writing the constraint:
Z_value = value.(Z)
@constraint(m, associate_takt[a in A, p in P], sum(Z_value[a, p]*Pt[p] for p in P) <= takt_lim)

But this is throwing me an error: “OptimizeNotCalled()”

Here is the most distilled down version I could make of the model:



# Set of all available associates to work on line
A = 1:2

# Set of all work processes required to complete production on the line
P = 1:2

# Set of all process times in seconds
Pt = [8.5,  2.41]

# The takt limit for each associate working on the line (210 seconds)
takt_lim = 10

m = Model()

# Binary variable = 1 if associate a is assigned to station s; = 0 otherwise
@variable(m, Y[A, S], Bin)

# Minimize the total number of associates needed to run the line
@objective(m, Min, sum(sum(Y[a, s] for a in A) for s in S))

# All Associates must stay under the takt_lim 
Z_value = value.(Z)
@constraint(m, associate_takt[a in A, p in P], sum(Z_value[a, p]*Pt[p] for p in P) <= takt_lim)


set_optimizer(m, Cbc.Optimizer)
optimize!(m)
1 Like

I updated my answer earlier today once I re-read your question a few times: Julia-Jump Integer Programming Optimization model: issue with multiplying matrix by vector - Stack Overflow.

I think you just want the following?

@constraint(
    m, 
    associate_takt[a in A],
    sum(Z[a, p]*Pt[p] for p in P) <= takt_lim,
)

p.s. I moved your post to the “Optimization (Mathematical)” category, which is why I didn’t see it earlier :smile:

1 Like

Yes, this seems to work exactly as I had hoped. Thank you!!

1 Like