我有一个变量,我希望根据中间符号的标记为1或0。我可以使用sign2,它根据符号返回1或-1并执行操作将其转换为0或1.但是,当我探索时,我注意到sign3和abs3包含一个带符号/绝对值的二进制变量。这些函数是否返回[signum / absolute value,0/1]这样的列表?
GEKKO函数sign2
和sign3
返回相同类型的输出,-1
或1
,具体取决于它们应用的变量的符号。它们之间的区别在于如何完成signum(sign)操作。两种实现都是连续可微的,因此适用于基于梯度的优化。
sign2
函数使用MPCC formulation生成参数的符号,并且可以与任何解算器一起使用。 sign3
函数使用二进制切换变量和MINLP解算器APOPT。