variables - 如何使用变量 GAMS 添加条件
问题描述
我是 GAMS 的初学者。所以,我的问题与条件中变量的使用有关。我想,它是编程流控制功能,但我找不到带有变量而不是参数的示例。
在我的任务中,我在代码开头只有一组 (t)。在“方程”块中,GAMS 对 (t) 的几个值执行变量 D(t),例如,对于 t=1..5。我只想提取 D(t) 的正值。例如我已经执行了 D(t): 3, -2, 5, -4, 1 我想要 D2(t): 3, 0, 5, 0, 1
我知道,不允许将美元条件与变量一起使用。出于同样的原因,我也不能使用 loop+if 构造。例如,我试图写这样的东西,但得到了很多错误(D2(t) 被声明为应有的):
Equation1(t).. loop (t,
if ((D(t) < 0),
D2(t) = D(t) - D(t);
);
);
那么,我该如何添加我的条件以及我应该在哪里放置代码?
解决方案
(不是专家,但我必须回答,因为我没有足够的声誉来发表评论)
我假设您有两个不同的数学程序,并且您要运行第二个程序并使用第一个程序的一些结果。如果是这种情况,您上面显示的这段代码位于两次运行之间,不需要“方程式”部分。
此外,在获得解决方案后,您可以使用 .l(解决方案中变量的级别)访问其值。然后,您还可以声明变量 D2 的值等于变量 D 的值。如果您只是在第二次运行之前为变量 D2 赋予一个值(级别),则模型将被允许在运行期间更改它搜索过程(如果在您的情况下可能)。您可以通过使用 D2.fx(t) 而不是使用 D2.l(t) 来固定变量 D2 的值来避免这种情况。
loop (t,
if ((D.l(t) < 0),
D2.l(t) = D.l(t) - D.l(t);
else
D2.l(t) = D.l(t);
);
);
or
loop (t,
if ((D.l(t) < 0),
D2.fx(t) = D.l(t) - D.l(t);
else
D2.fx(t) = D.l(t);
);
);
我希望这个答案有帮助:)
推荐阅读
- php - 使用 laravel 和 Mail 功能在电子邮件中发送文件
- mysql - MySQL:选择行作为列并移动到下一行
- java - 如何使用 Maven 指定带有 MANIFEST.MF 的主类来构建 JAR?
- r - 读取 csv 文件时解析日期格式
- ios - Highcharts y轴刻度间隔
- python-3.x - 如何使用 Django default_storage 删除包含文件的整个目录
- syntax-highlighting - 如何在 Xtext 中对终端规则进行语法高亮显示?
- javascript - node.js:使用 readline 从文件中获取输入并在 Windows 命令提示符中处理 I/O
- .net - 我可以在 .NET 应用程序中使用 Oracle APEX 的 Db 吗?
- c# - 异步任务
不回来