You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

咨询GAMS无需重新定义集合即可排除指定索引对应方程的方法

GAMS排除指定索引生成方程的解决方案

你可以直接使用GAMS内置的条件过滤语法,不需要完全重写原有集合,有两种常用的简单实现方式:

  • 直接在方程定义时加过滤条件
    在方程定义行的索引后加$条件运算符,仅满足条件的索引会生成对应方程,推荐用sameas()函数做元素匹配,避免字符串匹配误差,修改后的代码如下:
Sets
      i        index
     /i1    'Index 1'
      i2    'Index 2'
      i3    'Index 3'
      i4    'Index 4'/

Variables
X(i);

Equations
EQX(i) ;

* 仅i不等于i3时生成对应方程
EQX(i)$(not sameas(i, 'i3'))..  Whatever

;
  • 先定义派生的过滤子集(适合多次使用该过滤规则的场景)
    如果后续还有其他变量、方程需要排除i3,可以基于原有集合i快速派生一个子集,不需要重新录入所有元素:
Sets
      i        index
     /i1    'Index 1'
      i2    'Index 2'
      i3    'Index 3'
      i4    'Index 4'/
      * 基于i派生排除i3的子集,不需要重新写所有元素
      i_use(i) = i - {'i3'};

Variables
X(i);

Equations
EQX(i_use) ;

EQX(i_use)..  Whatever

;

两种方法都不会修改原有i集合的定义,后续其他场景需要用到i3时可以正常调用,不会产生影响。

内容的提问来源于stack exchange,提问作者Kwame Brown

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 05:36:09