Location : Home > Softwares > GAMS Title : GAMS Tips |
![]() |
GAMS Tips
GAMS 使用上の Tips を。
外部データからのデータの代入
実はこれで2日ほ棒にふった。
実際のモデルで計算するにはかなり大量のデータを読み込ませて、しかも何度も入れ替えて計算することが多い。そのたびにプログラムファイルを書き換えるよりも、データファイルを読み込ませるようにし、そのファイル名の指定を変更するほうが楽である。
実際にはデータは Excel 等で管理していることが多いので、CSVあたりでやり取りできると楽なんだが、そういう場合は以下のように書け、とマニュアルやサンプルコード、その他資料には書いてある。
SETS
PLANT PLANT LOCATIONS /NEWYORK,CHICAGO,LOSANGLS /table dataCSV(plant,market) data in CSV format
MARKET DEMANDS /MIAMI,HOUSTON, PORTLAND/
$Ondelim
$Include datafile.csv
$Offdelim
さて、これを
SETS
PLANT PLANT LOCATIONS /NEWYORK,CHICAGO,LOSANGLS /table dataCSV(plant,market) data in CSV format
MARKET DEMANDS /MIAMI,HOUSTON, PORTLAND/
$Ondelim
$Include datafile.csv
$Offdelim
と書くとエラー(実行前のコンパイルエラー)が出て読んでくれない。早い話が、文法的に間違っていると宣言されるのだ。
この差は、$-command の前のインデントのみ。この部分がタブであろうが空白であろうが関係ない。とにかくそこに何かがあっちゃだめなのだ。これまでのプログラム経験からすると空白なんかは本体の処理に無関係(まあ、Fortranは書く幅に限界があったが)なのが普通で、プログラムを見やすいようにインデントするのが当たり前だったので衝撃。皆さんも気をつけてたもれ。
![]() |
Updated : 2006/07/20 |