GAMS 中的循环用于在 Excel 中生成场景

2023-12-08

我有一个优化模型,我尝试针对不同的输入文件求解该模型,我将其准确地称为“在不同场景下求解模型”。因此,我需要一个循环来从 Excel 中读取每个不同工作表的数据。让我说清楚:例如,在下图中,我们有一个包含 4 个场景的数据,每个场景的工作表名称都在逐一增加

screenshot This data has to be read as a table for each scenario, like in the excel file.

我尝试用循环读取不同 Excel 工作表中的数据。我可以在 Gams 中做到这一点吗?

在 GAMS 中,我可以从 Excel 中获取数据,如下所示,但这仅适用于一种情况。我想制作一个 GAMS 代码,在循环语句中从 Excel 表中读取所有场景的数据

Table   n(t,b)
$call =xls2gms r="nonbooked!A2:I9" i="excelveri.xlsx" o="nbooked.inc"
$include nbooked.inc
;

GAMS put_utility (https://www.gams.com/latest/docs/UG_Put.html#UG_Put_PutUtil) 与工具 GDXXRW (https://www.gams.com/latest/docs/T_GDXXRW.html)是解决这个问题的关键。这是一个独立的(希望是不言自明的)示例:

set i      / i1*i3 /
    j      / j1*j4 /
    sheets / Sheet1*Sheet3 /;

parameter data(i,j);
file fx; put fx;

* To make this example self contained, first prepare some data (using same mechanics as the reading)
loop(sheets,
* Create random data
  data(i,j) = uniformInt(0,9);
* Write data to GDX
  execute_unload 'data.gdx', data;
* Write GDX data to excel
  put_utility 'exec' / 'gdxxrw.exe data.gdx par=data rng=' sheets.tl:0 '!a1';
);

* Clear data to start fresh
data(i,j) = 0;

* Load data
loop(sheets,
* Write Excel data to GDX
  put_utility 'exec' / 'gdxxrw.exe data.xlsx par=data rng=' sheets.tl:0 '!a1';
* Load data from GDX
  execute_load 'data.gdx', data;
* Work with the data, just display as an example
  display data;
);

我希望这有帮助, 卢茨

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

GAMS 中的循环用于在 Excel 中生成场景 的相关文章

  • Access / Word 2010 VBA 邮件合并尝试打开 [文件夹名称].mdb 而不是 ACCDB 源

    我们正在尝试从 Access 中自动执行邮件合并过程 单击按钮后 VBA 将运行指定当前数据库 accdb 作为数据源并运行 SQL 具体代码如下 Set up Word Dim objWord As Object Set objWord
  • VBA (Excel) 中 =Empty 和 IsEmpty() 有什么区别?

    我使用了以下 VBA 代码 Do While Cell i 1 lt gt Empty doing things i i 1 Loop 在 Excel 中迭代列 具有双精度 整数值 然后我发现了一种情况 每当单元格的值为 0 时 测试的计算
  • 如何退出两个嵌套循环? [复制]

    这个问题在这里已经有答案了 我使用 Java 已经有一段时间了 但我对循环的了解还有些欠缺 我知道如何创建 java 中存在的每个循环并跳出循环 然而 我最近思考了这个问题 假设我有两个嵌套循环 我可以只用一个循环来打破这两个循环吗brea
  • 在 Excel 中打开文件而不重新计算 NOW()

    在 Excel 2010 2011 和 2013 尝试了所有三个 中 以只读方式打开文件仍然会重新计算 NOW 有没有办法让excel在打开文件时不重新计算 最简单的方法是将自动 默认 计算选项切换为手动 update 首先打开一个空白的新
  • 如何区分列表框中显示的文本和实际值?

    我有一个带有多选选项的列表框 我使用以下方式填充它addItem功能 我在 Google 上找不到任何有关此内容的文章 但我需要区分列表框中显示的文本和实际值 例如 shown hiddenvalue monday A1 tuesday A
  • 在用户窗体终止/关闭 VBA 时调用数组

    我有一个问题 我想在用户窗体关闭时将用户窗体的内容存储在数组中 我认为我的语法正确 但似乎不会在用户窗体初始化时重新填充 我尝试将数组放入其自己的模块中 但这也不起作用 有人愿意启发我吗 示例代码 Public Sub DPArrayStu
  • 插入行而不选择任何内容?

    我正在使用 VBA 希望在特定位置插入一行而不选择它 我遇到的问题是 选择该行后 当脚本运行完毕时 电子表格会向下滚动到该行 我希望能够在不将电子表格向下滚动到插入行的情况下执行此操作 Rows i i Select ActiveCell
  • 如何检查python xlrd库中的excel文件是否有效

    有什么办法与xlrd库来检查您使用的文件是否是有效的 Excel 文件 我知道还有其他库可以检查文件头 我可以使用文件扩展名检查 但为了多平台性我想知道是否有任何我可以使用的功能xlrd库本身在尝试打开文件时可能会返回类似 false 的内
  • 如何在apache POI中读取excel文件的准确单元格内容

    当我读取单元格的内容时 例如如果它是日期格式 它会转换为另一个值 例如 12 31 2099 gt 46052 和 50 00 gt 50 和 50 00 gt 0 5 但我想要的是获取每个单元格的确切字符串值 我的代码是这样的 cell
  • 将单元格内的任何单词与单元格范围内的任何单词相匹配

    我有一个短语列表 我想检查是否有任何新术语与该列表部分单词匹配 我正在寻找一个代码来在列表上实现模糊匹配 以返回具有紧密匹配的单元格 示例数据 Phrases Terms real term new words great work new
  • 使用 Python Pandas 获取多个值来制作表格

    使用我的代码 我可以将两个 Excel 数据库连接到 1 中 问题是它只显示收入列 而不显示列展示次数 为了更清楚 我留下了代码和示例 我尝试过 df1 df1 pivot index Cliente columns Fecha value
  • 如何使用 C# 了解 Excel 中的分页符 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在使用 C 创建并格式化 Excel 电子表格 因此我需要格式化 合并单元格 更改字体等 直到第一页的最后 如何知道 Excel 电子
  • 如何使用 ssis 2008 循环遍历 Excel 文件并获取工作表名称

    我正在尝试将 Excel 文件中的数据加载到 SQL 数据库表中 该文件的工作表名称不是静态的 工作表名称包含 yyyymmdd 它会随每个文件而变化 我按照提供的解决方案进行操作如何使用 SSIS 包循环遍历 Excel 文件并将其加载到
  • 如何在 Excel 中创建 GUID?

    我需要一个函数来将 GUID 添加到 Excel 中的单元格 我发现stackoverflow 上的上一个问题 https stackoverflow com questions 7031347 how can i generate gui
  • Excel 公式转 SUMIF 日期属于特定月份

    我有以下格式的 Excel 数据 Date Amount 03 Jan 13 430 00 25 Jan 13 96 00 10 Jan 13 440 00 28 Feb 13 72 10 28 Feb 13 72 30 仅当月份位于时 我
  • 根据单元格值返回图像(100 张图像和可变单元格)

    我正在尝试为我制作一个 TFT 云顶之弈 表 并想让它看起来更好 为此 我想添加游戏中冠军的图像 当我输入名称时 图像应该出现在下面 我找到了一种将所有图像插入 Excel 工作表 100 的方法 并且还成功制作了一个动态图像 插入 IND
  • 根据用户名获取广告详细信息

    我有一个代码可以从 AD 检索用户的详细信息 例如电子邮件地址 电话号码等 我当前使用的代码是 Set objSysInfo CreateObject ADSystemInfo strUser objSysInfo UserName msg
  • Excel:COUNTIF 函数将“小于”字符视为运算符

    预读说明 我使用的是 LibreOffice 而不是 Excel 但大多数功能应该适用于两者 我正在制作一个电子表格 其中有大量数据 对于每个属性 例如员工数量或姓名 我需要一个函数来计算包含每个不同值的行数 我已经提取了不同的值 现在我使
  • 在 BIRT 中导出的 Excel 中表格单元格的文本换行

    我在 eclipse 中使用 BIRT 4 4 1 来生成报告 我想包装表头的文本 它在网络查看器中工作正常 但是当我导出到 Excel 时 表单元格文本在一行中 并且文本也溢出 我不想使单元格宽度等于内容 我想根据其容器宽度来换行文本 我
  • 如何使用 VBA 将行从一张 Excel 工作表复制到另一张 Excel 工作表并创建重复项?

    我有一个包含两张表的 Excel 工作簿 sheet1 在 A 到 R 列中包含一个大型数据表 标题位于第 1 行 Sheet2 在 A 到 AO 列中包含数据 我试图使用 VBA 从sheet1 复制行并将它们粘贴到sheet2 的末尾

随机推荐