GAMS中导入Excel数据
生活随笔
收集整理的這篇文章主要介紹了
GAMS中导入Excel数据
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
首先你的Excel中存在想導(dǎo)入的數(shù)據(jù),可以是set集合,或者是parameter數(shù)據(jù)
1、導(dǎo)入集合set(以例子做說明)
想導(dǎo)入的集合是時間 t / t1 * t24 /和機(jī)組序號 g /g1*g4/,如下圖
在GAMS代碼中,你要先定義時間和機(jī)組集合,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內(nèi)置的命令,用來讀寫數(shù)據(jù);
- H:\aaa.xlsx output= H:\aaa.gdx:表示將你的xlsx文件先轉(zhuǎn)成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:后面沒有文件名,表示關(guān)閉當(dāng)前gdx文件。
2、導(dǎo)入數(shù)據(jù)parameter(一維&二維)
一維數(shù)據(jù)
想導(dǎo)入的數(shù)據(jù)是負(fù)荷demand(t),如下圖:
在GAMS代碼中,你要定義負(fù)荷數(shù)據(jù),parameter demand(t)
然后調(diào)用下面代碼,原理同上面集合set的導(dǎo)入是一樣的。
解釋如下:
- gdxxrw :GAMS內(nèi)置的命令,用來讀寫數(shù)據(jù);
- H:\aaa.xlsx output= H:\aaa.gdx:表示將你的xlsx文件先轉(zhuǎn)成gdx文件;
- par = demand:指定導(dǎo)入的是demand;
- rng=deman:導(dǎo)入內(nèi)容是表格deman部分(Excel中選中某一部分?jǐn)?shù)據(jù),可以給它起個名字,右鍵即可。或者你也可以手動輸入數(shù)據(jù)位置,如該部分?jǐn)?shù)據(jù)是:rng = a2:b25 );
- rdim=1:行數(shù)是1,這個其實我還不太明白,懂的同學(xué)請留言告訴我;
- $ gdxin H:\aaa.gdx:$gdxin + 文件名表示指定要讀取的gdx文件;
- $load demand:從gdx文件中讀取 demand;
- $gdxin:后面沒有文件名,表示關(guān)閉當(dāng)前gdx文件。
二維數(shù)據(jù)
如果你這個二維數(shù)據(jù)和上面的一維數(shù)據(jù)在一個Excel表格文件中,那你就不用再將Excel轉(zhuǎn)換成gdx文件了,因為你已經(jīng)轉(zhuǎn)過了,你只需要讀取內(nèi)容即可,二維數(shù)據(jù)保存在“twodim”這個表單中;
讀取代碼如下:
說明
rng = twodim!A1:D3 表示sheet的名字和相應(yīng)的數(shù)據(jù)位置,缺省默認(rèn)是第一個sheet。
三維數(shù)據(jù)
$call gdxxrw H:\aaa.gdx par = threedimention rng = thdim!A1:E3 rdim =2 cdim = 1 $gdxin H:\aaa.gdx $load threedimention $gdxin說明
如果是三維數(shù)據(jù),則代碼中的 rdim = 2
PS:
- $call后的雙引號可以不加~
- 導(dǎo)入數(shù)據(jù)的代碼不需要加分號~
總結(jié)
以上是生活随笔為你收集整理的GAMS中导入Excel数据的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: GAMS计算结果输出到Excel表格
- 下一篇: iOS 添加第三方字体库