在GAMS中,如何处理分裂?
In GAMS, how to deal with divisions?
在我的 GAMS 模型中,我有一个涉及除法的 objective 函数。
GAMS 在解决问题时将初始值设置为零...好主意,怎么可能出错!...哦等等,现在有除法零。
处理这个问题的方法是什么?我曾尝试手动设置下限以避免被零除,但随后 GAMS 吐出 "infeasible" 解决方案。
这是错误的,因为我知道这个模型是可行的。事实上,从我的模型中删除除法项并解析确实产生了一个解决方案。该解决方案对于原始问题也应该是可行的,因为我们只是向 objective.
添加项
尝试使用 $ 符号。例如:A(i,j)$C(i,j) = B(i,j) / C(i,j)
以下是一些常见的方法:
- 设置下限。例如。
Z =E= X/Y
, 添加 Y.LO = 0.0001;
- 类似地,这样写:
Z =E= X/(Y+0.0001)
- 设置初始值。例如。
Y.L = 1
- 两边乘以 Y:
Z*Y =E= X
对于任何非线性变量,您都应该仔细考虑边界和初始值(不考虑除法)。
在我的 GAMS 模型中,我有一个涉及除法的 objective 函数。
GAMS 在解决问题时将初始值设置为零...好主意,怎么可能出错!...哦等等,现在有除法零。
处理这个问题的方法是什么?我曾尝试手动设置下限以避免被零除,但随后 GAMS 吐出 "infeasible" 解决方案。
这是错误的,因为我知道这个模型是可行的。事实上,从我的模型中删除除法项并解析确实产生了一个解决方案。该解决方案对于原始问题也应该是可行的,因为我们只是向 objective.
添加项尝试使用 $ 符号。例如:A(i,j)$C(i,j) = B(i,j) / C(i,j)
以下是一些常见的方法:
- 设置下限。例如。
Z =E= X/Y
, 添加Y.LO = 0.0001;
- 类似地,这样写:
Z =E= X/(Y+0.0001)
- 设置初始值。例如。
Y.L = 1
- 两边乘以 Y:
Z*Y =E= X
对于任何非线性变量,您都应该仔细考虑边界和初始值(不考虑除法)。