GAMS 系列分享19—GAMS基础—模型无可行解的解决办法

       很多情况下,编写的模型执行后可能就没有可行解,这个时候就需要一套比较系统的调错方案了。

 

按照下面的步骤来调试模型,会更高效呦!!!

目录

1,修改模型

2,给变量设置初值

3,松弛变量约束

4,移除一些变量和约束

5,需求GAMS 帮助

6,编程逻辑

  6.1 问题分解

6.2 问题解决

6.3 问题整合 


1,修改模型

 – 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)在写气网线性化程序的时候,发现参考文献的模型理解的不是很透彻,导致写的模型约束条件表达不是很准确,导致模型表达出现错误,所以模型一直没有解。

    修改模型一定要细致认真。

2,给变量设置初值

      Provide better initial values for your variables.                                初值

      在求解NLP 问题的时候,给一个好的初值,真的很有用。。

 

3,松弛变量约束

       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 

      如果松弛以后,模型有解了。那么就要看看变量的限制了。

4,移除一些变量和约束

– Remove some equations or add some slack variables to the model to see if you can find the trouble making equations                

    删除一些方程,查看是不是这些方程导致了方程无解。。

    添加松弛变量,这个还不太会。****有会的小伙伴在评论区一块讨论学习呀!!

 

5,需求GAMS 帮助

– 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.

一般应该用不到。那估计都是哒哒哒哒哒哒神,需要考虑的问题,我们主要按照上述四个步骤好好修改模型基本上就可以了。

 

6,编程逻辑

       在编程的过程中,如果问题规模很大,那么出现了不可解的情况的话,就很难解决。这个时候一般的解决思路,就是把问题分解。

 

  6.1 问题分解

     举例说明,如果是综合能源系统,可以先电网编程,在气网编程,在整体编程。

6.2 问题解决

      即使是子问题,可能也是较复杂的,在编写程序的过程中,可能也会出现问题。那么对这些问题,按照上述思路解决,较大问题解决就简单多了。

6.3 问题整合 

    对每个子问题,可能出现的问题都了解后,那么整体整合一下。

 


问题调错就先说这么多,有更好调错办法的伙伴们,也请留言分享呀。

 

搜索“GAMS”系列分享,查看“GAMS”在电力系统(综合能源)中的应用! 

搜索“GAMS”系列分享,查看“GAMS”在电力系统(综合能源)中的应用!

搜索“GAMS”系列分享,查看“GAMS”在电力系统(综合能源)中的应用!

  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
GAMS(General Algebraic Modeling System)是一种用于建立和决数学模型的高级编程语言和环境。通过GAMS,可以利用数学优化方法决各种复杂问题。下面是一个示例的GAMS优化模型代码: 假设有一个仓库,需要决定如何存储商品才能最大化利润。已知仓库容量为100个单位,有3种商品:A、B和C,它们的单位重量分别是2、3和5单位。而且每种商品的单位利润分别为6、8和10单位。现在需要确定每种商品的存储数量,以最大化总利润。 代码如下: ```gams SET I 商品集 / A, B, C /; PARAMETER w(I) 商品重量, p(I) 商品利润; w(I) = 2, 3, 5; p(I) = 6, 8, 10; VARIABLE x(I) 存储数量; EQUATION 容量限制, 目标函数; 容量限制.. 2 * x('A') + 3 * x('B') + 5 * x('C') <= 100; 目标函数.. MAXIMIZE 6 * x('A') + 8 * x('B') + 10 * x('C'); MODEL 仓库问题 /ALL/; SOLVE 仓库问题 USING LP MAXIMIZING x; DISPLAY x.l, p; ``` 在这个模型中,首先定义了商品集合"商品集",然后给每种商品定义了重量和利润。接着定义了存储数量变量"x",以及容量限制和目标函数。利用"GAMS优化问题"决这个线性规划问题,并求最优。最后输出存储数量和利润。 以上是一个简单的GAMS优化模型代码,实际上,GAMS可以用于决各种更复杂的问题。通过定义变量、参数和约束,并利用合适的求方法,可以实现对各种复杂问题的优化。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值