如何解决CPLEX 中带索引的模运算
我正在使用 CPLEX,我想对“d”索引使用模运算,我想将 d+8 设置为 28 的余数。例如,如果 d 是 21,则 (d+8)的值应该是 29 % 28=1 。 “x”是一个二元决策变量。
我想要这样的东西:
forall(e in employee,d in day) x[e][(d+8)%28]==x[e][d];
但它给了我一个错误。我怎样才能以适当的方式做到这一点? 如果你能帮助我,我很高兴。
解决方法
{string} employee={"me"};
range day=1..28;
dvar boolean x[employee][day];
minimize sum(e in employee,d in day) x[e][d];
subject to
{
x["me"][1]==1;
forall(e in employee,d in day) x[e][(d-1+8)%28+1]==x[e][d];
}
{int} x1PerEmployee[e in employee]={d | d in day : x[e][d]==1};
execute
{
writeln(x1PerEmployee);
}
给予
[{1 5 9 13 17 21 25}]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。