最小化必须为正的差异
Minimize a differece that has to be positive
我有以下优化:
最小化:obj(x) = f(x) - 常数
sbj.to:lb < x < hb
sbj.to: f(x) - 常数 >= 0
我感觉这不是最方便的优化问题。有没有另一种方法在计算上可能更方便?
直到现在我尝试修改 objective 例如使用 obj(x) = (f(x) - constant)^2,这允许我避免第二个约束。但它给了我一些收敛问题,具体取决于常数的值。一些想法?
我可以想到其他两种可能的方法 - 不确定它们是否更好,但那就是:
- 如果 [f(x) - 常量]^2 给您带来收敛问题(不确定为什么?),请尝试将其替换为 abs(f(x) - 常量)。警告:abs() 函数并不总是表现最好的,有时它会混淆一些优化算法
- 在您的 objective 函数中,如果 (f(x) - 常数) 变为负数,return 一个很大的值 - 与它变为负数的程度成正比。否则return正常差值
我有以下优化:
最小化:obj(x) = f(x) - 常数
sbj.to:lb < x < hb
sbj.to: f(x) - 常数 >= 0
我感觉这不是最方便的优化问题。有没有另一种方法在计算上可能更方便? 直到现在我尝试修改 objective 例如使用 obj(x) = (f(x) - constant)^2,这允许我避免第二个约束。但它给了我一些收敛问题,具体取决于常数的值。一些想法?
我可以想到其他两种可能的方法 - 不确定它们是否更好,但那就是:
- 如果 [f(x) - 常量]^2 给您带来收敛问题(不确定为什么?),请尝试将其替换为 abs(f(x) - 常量)。警告:abs() 函数并不总是表现最好的,有时它会混淆一些优化算法
- 在您的 objective 函数中,如果 (f(x) - 常数) 变为负数,return 一个很大的值 - 与它变为负数的程度成正比。否则return正常差值