首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >能量模型的Gnu Mathprog中嵌套的if

能量模型的Gnu Mathprog中嵌套的if
EN

Stack Overflow用户
提问于 2015-07-14 16:47:47
回答 1查看 190关注 0票数 0

我在Gnu Mathprog中有一个能源模型的代码:

代码语言:javascript
复制
s.t.EBa1_RateOfFuelProduction1{r in REGION, l in TIMESLICE, f in FUEL, t in TECHNOLOGY, m in MODE_OF_OPERATION, y in YEAR: OutputActivityRatio[r,t,f,m,y] <> 0}:
RateOfActivity[r,l,t,m,y]*OutputActivityRatio[r,t,f,m,y]  = RateOfProductionByTechnologyByMode[r,l,t,m,f,y];

s.t.EBa4_RateOfFuelUse1{r in REGION, l in TIMESLICE, f in FUEL, t in TECHNOLOGY, m in MODE_OF_OPERATION, y in YEAR: InputActivityRatio[r,t,f,m,y]<>0}:
RateOfActivity[r,l,t,m,y]*InputActivityRatio[r,t,f,m,y]  = RateOfUseByTechnologyByMode[r,l,t,m,f,y];

我想把这两个约束放在一起,我正在考虑插入两个条件表达式( if ),第一个if,将引用技术(T).The fuel(F),其中OutputActivityRatio<>0和第二个相同技术(T),它将再次开始检查f(fuels),看看是否InputActivityRatio<>0。就像这样:

代码语言:javascript
复制
s.t.RateOfProduction{r in REGION, l in TIMESLICE, f in FUEL, t in TECHNOLOGY, m in MODE_OF_OPERATION, y in YEAR: OutputActivityRatio[r,t,f,m,y]     <>0}:
  RateOfActivity[r,l,t,m,y]*OutputActivityRatio[r,t,f,m,y]  = RateOfProductionByTechnologyByMode[r,l,t,m,f,y]
  If InputActivityRatio[r,t,ff,m,y]<>0 then 
     RateOfActivity[r,l,t,m,y]*InputActivityRatio[r,t,f,m,y]  = RateOfUseByTechnologyByMode[r,l,t,m,f,y]
  else 0
else 0 ;

我的问题是:有没有可能有两个if串联在一起(嵌套if),并且在它们之间也有一个等式?我怎么能写出这样的东西?非常感谢!

EN

回答 1

Stack Overflow用户

发布于 2015-08-04 19:51:55

正如你的另一个问题(关于mathprog中嵌套的if-then-else )所描述的,在mathprog中没有If-Then-Else语句。条件for循环的变通方法也不能解决您的问题,因为您只能在数据的预处理或后处理中使用它们(不能在约束中使用它!)。

但仍有可能合并您的约束。我认为,如果您的条件是输入或输出都为0,那么下面的内容将会起作用。

代码语言:javascript
复制
s.t.RateOfProduction{r in REGION, l in TIMESLICE, f in FUEL, t in TECHNOLOGY, m in MODE_OF_OPERATION, y in YEAR}:
(RateOfActivity[r,l,t,m,y]*OutputActivityRatio[r,t,f,m,y])
+ (RateOfActivity[r,l,t,m,y]*InputActivityRatio[r,t,f,m,y])  
= RateOfProductionByTechnologyByMode[r,l,t,m,f,y];

在左边的求和中,一个乘法会变成零。由于我不知道哪些部分是变量,哪些是参数,这种解决方案也可能失败(例如,如果同时有输入和输出,而模型的其余部分没有包含正确的界限,则可能会出现问题)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31401965

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档