很多情况下,编写的模型执行后可能就没有可行解,这个时候就需要一套比较系统的调错方案了。
按照下面的步骤来调试模型,会更高效呦!!!
目录
– Check to see if you can better express your model. It is always desired to stay as close as possible to the linear form of expressing the equations.
很多情况下,你写的模型可能存在这样那样的问题,比如,约束条件定义的不对,这个时候一定要认真核对模型。
实际案例:本人入坑记
1)一个比较深刻的印象就是:电网直流潮流计算的时候,关于电量的一定要用标幺值,因为,你在用的电抗都是标幺值。
发电机的发电量,不要用有名值,要除以Sbase.。。 在这里出现了问题,我还是调试了很久才发现这个问题
2)在写气网线性化程序的时候,发现参考文献的模型理解的不是很透彻,导致写的模型约束条件表达不是很准确,导致模型表达出现错误,所以模型一直没有解。
修改模型一定要细致认真。
Provide better initial values for your variables. 初值
在求解NLP 问题的时候,给一个好的初值,真的很有用。。
Relax the variable limits, rerun the model. If the problem is resolved, then it means that the variable limits should be revised. If your model contains integer/binary variables, then you can solve the model using relaxed option.
For example, the MIP model can be solved using RMIP. This would ask the GAMS to neglect integer nature of the variables (the variable limits remain unchanged). For relaxing the MINLP and MIQCP, you should use RMINLP and RMIQCP, respectively.
MIP 问题改成 RMIP
MINLP 问题改成 RMINLP
如果松弛以后,模型有解了。那么就要看看变量的限制了。
– Remove some equations or add some slack variables to the model to see if you can find the trouble making equations
删除一些方程,查看是不是这些方程导致了方程无解。。
添加松弛变量,这个还不太会。****有会的小伙伴在评论区一块讨论学习呀!!
– Ask support from those experienced GAMS code developers (if they have
time and are willing to contribute to your project). This option is intentionally
placed at the end of suggestion list.
一般应该用不到。那估计都是哒哒哒哒哒哒神,需要考虑的问题,我们主要按照上述四个步骤好好修改模型基本上就可以了。
在编程的过程中,如果问题规模很大,那么出现了不可解的情况的话,就很难解决。这个时候一般的解决思路,就是把问题分解。
举例说明,如果是综合能源系统,可以先电网编程,在气网编程,在整体编程。
即使是子问题,可能也是较复杂的,在编写程序的过程中,可能也会出现问题。那么对这些问题,按照上述思路解决,较大问题解决就简单多了。
对每个子问题,可能出现的问题都了解后,那么整体整合一下。
问题调错就先说这么多,有更好调错办法的伙伴们,也请留言分享呀。
搜索“GAMS”系列分享,查看“GAMS”在电力系统(综合能源)中的应用!
搜索“GAMS”系列分享,查看“GAMS”在电力系统(综合能源)中的应用!
搜索“GAMS”系列分享,查看“GAMS”在电力系统(综合能源)中的应用!