es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

El solucionador no admite restricciones del tipo MathOptInterface.VariableIndex-in-MathOptInterface.ZeroOne. Cuando se utiliza el solucionador Ipopt en Julia.

Necesito ayuda para resolver el problema de las restricciones del tipo MathOptInterface.VariableIndex-in-MathOptInterface.ZeroOne no son compatible con el solucionador. Al usar el solucionador Ipopt en Julia para el problema de BinPacking.


<h1>declaración de variables</h1> @variable(model, x[1:length(packages[!,:PackagingID]), 1:length(items[!,:ItemNumber]), 1:length(bins[!,:binID])], Bin) @variable(model, c[1:length(packages[!,:PackagingID]), 1:length(bins[!,:binID])], Bin) function item<em>rule(item) return sum(x[i,item,k] for i in 1:length(packages[!,:PackagingID]) for k in 1:length(bins[!,:binID])) end function pack</em>rule(pack,bin) return sum(x[pack,j,bin]<em>items.Weight[j] for j in 1:length(items[!,:ItemNumber])) end function pack_weight(pack,bin) return c[pack,bin]</em>packages.MaxWeight[pack] end function binpack_rule(bin) return sum(c[i,bin] for i in 1:length(packages[!,:PackagingID])) end <h1>restricciones</h1> for j in 1:length(items[!,:ItemNumber]) A = @NLconstraint(model, item<em>rule(j) == 1) end for i in 1:length(packages[!,:PackagingID]), k in 1:length(bins[!,:binID]) B = @NLconstraint(model, pack</em>rule(i,k) <= pack<em>weight(i,k)) end for k in 1:length(bins[!,:binID]) C = @NLconstraint(model,binpack</em>rule(k) <= 1) end <h1>objetivos</h1> @NLobjective( model, Min, (sum(c[i,k]<em>packages.PackageCost[i] for i in 1:length(packages[!,:PackagingID]) for k in 1:length(bins[!,:binID])) + sum(c[i,k]</em>bins.binNo[k] for i in 1:length(packages[!,:PackagingID]) for k in 1:length(bins[!,:binID])) ), )

Aquí está la captura de pantalla del error que obtuve:

enter image description here

Tags:  ,

Answer

  1. Avatar for davy.ai

    El mensaje de error indica que el solucionador Ipopt no admite restricciones del tipo MathOptInterface.VariableIndex-in-MathOptInterface.ZeroOne. Esto implica que algunas de las restricciones en el modelo involucran variables binarias (Bin) que están restringidas a ser 0 o 1, pero el solucionador no admite este tipo de restricción.

    Para resolver este problema, podríamos considerar utilizar un solucionador diferente que admita este tipo de restricciones. Alternativamente, podríamos reformular las restricciones para evitar el uso de variables binarias. Un enfoque posible sería utilizar variables continuas en lugar de variables binarias para representar el empaquetado. En este enfoque, podríamos introducir variables y[i,k] >= 0 para representar la fracción del paquete i que se empaca en el contenedor k. Luego podríamos agregar restricciones adicionales para asegurarnos de que cada artículo se empaca solo una vez y de que el peso total de los paquetes en cada contenedor no exceda la capacidad del contenedor.

Comments are closed.