GAMS中导入Excel数据
生活随笔
收集整理的這篇文章主要介紹了
GAMS中导入Excel数据
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
首先你的Excel中存在想導入的數據,可以是set集合,或者是parameter數據
1、導入集合set(以例子做說明)
想導入的集合是時間 t / t1 * t24 /和機組序號 g /g1*g4/,如下圖
在GAMS代碼中,你要先定義時間和機組集合,t 和 g,然后使用下面的代碼,確定集合t和g中的元素
$call"gdxxrw H:\aaa.xlsx output= H:\aaa.gdx set=t rng=a1:a24 rdim=1 set=g rng=b1:b4 rdim=1 " $gdxin H:\aaa.gdx $load t g $gdxin下面解釋一下上面都是什么意思
- gdxxrw :GAMS內置的命令,用來讀寫數據;
- H:\aaa.xlsx output= H:\aaa.gdx:表示將你的xlsx文件先轉成gdx文件;
- set=t rng=a1:a24 rdim=1:對象是集合t,元素是Excel中的a1:a24,存為1行;
- set=g rng=b1:b4 rdim=1 :對象是集合g,元素是Excel中的b1:b4,存為1行;
- $ gdxin H:\aaa.gdx:$gdxin + 文件名表示指定要讀取的gdx文件;
- $load t g:從gdx文件中讀取 t 和 g;
- $gdxin:后面沒有文件名,表示關閉當前gdx文件。
2、導入數據parameter(一維&二維)
一維數據
想導入的數據是負荷demand(t),如下圖:
在GAMS代碼中,你要定義負荷數據,parameter demand(t)
然后調用下面代碼,原理同上面集合set的導入是一樣的。
解釋如下:
- gdxxrw :GAMS內置的命令,用來讀寫數據;
- H:\aaa.xlsx output= H:\aaa.gdx:表示將你的xlsx文件先轉成gdx文件;
- par = demand:指定導入的是demand;
- rng=deman:導入內容是表格deman部分(Excel中選中某一部分數據,可以給它起個名字,右鍵即可?;蛘吣阋部梢允謩虞斎霐祿恢?#xff0c;如該部分數據是:rng = a2:b25 );
- rdim=1:行數是1,這個其實我還不太明白,懂的同學請留言告訴我;
- $ gdxin H:\aaa.gdx:$gdxin + 文件名表示指定要讀取的gdx文件;
- $load demand:從gdx文件中讀取 demand;
- $gdxin:后面沒有文件名,表示關閉當前gdx文件。
二維數據
如果你這個二維數據和上面的一維數據在一個Excel表格文件中,那你就不用再將Excel轉換成gdx文件了,因為你已經轉過了,你只需要讀取內容即可,二維數據保存在“twodim”這個表單中;
讀取代碼如下:
說明
rng = twodim!A1:D3 表示sheet的名字和相應的數據位置,缺省默認是第一個sheet。
三維數據
$call gdxxrw H:\aaa.gdx par = threedimention rng = thdim!A1:E3 rdim =2 cdim = 1 $gdxin H:\aaa.gdx $load threedimention $gdxin說明
如果是三維數據,則代碼中的 rdim = 2
PS:
- $call后的雙引號可以不加~
- 導入數據的代碼不需要加分號~
總結
以上是生活随笔為你收集整理的GAMS中导入Excel数据的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: GAMS计算结果输出到Excel表格
- 下一篇: iOS 添加第三方字体库