Can I formulate 'value shifting' constraint with MILP?

3 次查看(过去 30 天)
I am trying to figure out if it is possible for this 'value shifting' constraint to be implemented in MILP.
In summary there is a vector used for other part of the model, and I am thinking of adding a bit of flexibility to the vector.
The idea is to give each vector value the freedom to shift to the right, up to a maximum of a positions, after the optimal shifting, the new vector will then be used in other parts of the optimization model for better minimization.
E.g.
x_old = [1 2 3 4 5] % x(1) goes to x(2), x(3) goes to x(5)
x_new = [0 3 0 4 8] % [0 x(1)+x(2) 0 x(4) x(3)+x(5)]
Boundary case of x(4) and x(5) will loop back to the start, allowing the re-allocation to the start of the vector
The only thing I came up so far is to have an Integer positional vector p with lower bound of 0 and upper bound a, then loop through the original vector and create x_new, but that would involve custom non-linear constraints like
x_new(ii+p(ii)) = x_new(ii+p(ii)) + x_old(ii)
Thanks!

回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Solver Outputs and Iterative Display 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by