You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
And place it in Google Colab, it works up to "Cutting Stock Problem: Bilinear reformulation" and then most of the sections error out after that. Any advice? 8 of the code sections in total error out for a variety of reasons.
My best guess is it's related to the version of the solver.
If you want to see the errors, you can see my notebook here:
def bilinear_cut_stock(stocks, finish, Np=len(finish)):
m = pyo.ConcreteModel()
m.S = pyo.Set(initialize=list(stocks.keys()))
m.F = pyo.Set(initialize=list(finish.keys()))
m.P = pyo.RangeSet(0, Np - 1)
# sum of all finished parts
f_total_demand = max([finish[f]["demand"] for f in m.F])
# define a with bounded values
def a_bounds(m, f, p):
return (0, max([int(stocks[s]["length"] / finish[f]["length"]) for s in m.S]))
m.a = pyo.Var(m.F, m.P, domain=pyo.NonNegativeIntegers, bounds=a_bounds)
m.b = pyo.Var(m.S, m.P, domain=pyo.Binary)
m.x = pyo.Var(m.P, domain=pyo.NonNegativeIntegers, bounds=(0, f_total_demand))
# minimize cost
@m.Objective(sense=pyo.minimize)
def cost(m):
c = {s: stocks[s]["cost"] for s in m.S}
return sum(c[s] * m.b[s, p] * m.x[p] for s in m.S for p in m.P)
# assign one stock to each pattern
@m.Constraint(m.P)
def assign_each_stock_to_pattern(m, p):
return sum(m.b[s, p] for s in m.S) == 1
# pattern feasibility
@m.Constraint(m.P)
def feasible_pattern(m, p):
return sum(m.a[f, p] * finish[f]["length"] for f in m.F) <= sum(
m.b[s, p] * stocks[s]["length"] for s in m.S
)
# demand constraints
@m.Constraint(m.F)
def demand(m, f):
return sum(m.a[f, p] * m.x[p] for p in m.P) >= finish[f]["demand"]
# order the patterns to reduce symmetries
@m.Constraint(m.P)
def order(m, p):
if p == 0:
return pyo.Constraint.Skip
return m.x[p] >= m.x[p - 1]
# upper bound on sum of all patterns
@m.Constraint()
def max_patterns(m):
return sum(m.x[p] for p in m.P) <= f_total_demand
MINLO_SOLVER.solve(m)
cost = m.cost()
x = [m.x[p]() for p in m.P]
patterns = []
for p in m.P:
a = {f: round(m.a[f, p]()) for f in m.F}
patterns.append({"stock": [s for s in m.S if m.b[s, p]() > 0][0], "cuts": a})
return patterns, x, cost
patterns, x, cost = bilinear_cut_stock(stocks, finish, 2)
plot_nonzero_patterns(stocks, finish, patterns, x, cost)
which gets this error:
ERROR:pyomo.opt:Solver (asl) returned non-zero return code (-6)
ERROR:pyomo.opt:Solver log:
Couenne 0.5.8 -- an Open-Source solver for Mixed Integer Nonlinear Optimization
Mailing list: [couenne@list.coin-or.org](mailto:couenne@list.coin-or.org)
Instructions: http://www.coin-or.org/Couenne
munmap_chunk(): invalid pointer
couenne:
---------------------------------------------------------------------------
ApplicationError Traceback (most recent call last)
[<ipython-input-12-36f29ff97f2b>](https://localhost:8080/#) in <cell line: 66>()
64
65
---> 66 patterns, x, cost = bilinear_cut_stock(stocks, finish, 2)
67 plot_nonzero_patterns(stocks, finish, patterns, x, cost)
1 frames
[/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py](https://localhost:8080/#) in solve(self, *args, **kwds)
625 elif hasattr(_status, 'log') and _status.log:
626 logger.error("Solver log:\n" + str(_status.log))
--> 627 raise ApplicationError("Solver (%s) did not exit normally" % self.name)
628 solve_completion_time = time.time()
629 if self._report_timing:
ApplicationError: Solver (asl) did not exit normally
I must empasize that multiple of the other sections error out as well.
The text was updated successfully, but these errors were encountered:
If you take the code on this section:
https://mobook.github.io/MO-book/notebooks/05/06-cutting-stock.html
And place it in Google Colab, it works up to "Cutting Stock Problem: Bilinear reformulation" and then most of the sections error out after that. Any advice? 8 of the code sections in total error out for a variety of reasons.
My best guess is it's related to the version of the solver.
If you want to see the errors, you can see my notebook here:
https://github.com/IndyHouseGuy/Pyomo/blob/main/06_cutting_stock_NO_EDITS_NO_MODIFICATIONS.ipynb
That said, the first block to error out is:
which gets this error:
I must empasize that multiple of the other sections error out as well.
The text was updated successfully, but these errors were encountered: