【发布时间】:2021-09-27 03:36:15
【问题描述】:
我有一些连续变量(决策变量)。运行优化时,一些变量会得到非常小的十进制数的解,例如 0.00000123 等。我不希望变量采用这样的值,但我想让它们具有 0 值。因此,我设置了如下约束。
in declaration part : dvar float+ Xbdt[Pitblocks][DumpBlocks][TimePeriods]
in constraints part :
forall(b in PitBlocks,d in DumpBlocks,t in TimePeriods)
{
//NonNegative :
(Xbdt[b][d][t] == 0) || (Xbdt[b][d][t] >= 100) ;
}
但这些限制产生了数十万个二进制文件,无法解决。
我想避免 Xbdt 的任何值介于 0+ 和 100 之间,允许 0。有没有其他方法可以做到这一点。
【问题讨论】: