lingo入门教程之三 --- 文件数据处理
生活随笔
收集整理的這篇文章主要介紹了
lingo入门教程之三 --- 文件数据处理
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
有時候我們想輸入的數據是在一個Excel表格或者其他什么形式中,或者說這里數據是實時變化的并不利于直接在程序中輸入,耳而應該在程序之外將數據存儲,實現數據與程序的分離存儲,這個時候就涉及到程序與數據之間的傳遞
下面簡要介紹一個如何進行數據與程序之間的傳遞
下面的講解都是基于如下的問題模型
有個城市都需要采購一定量的物品,但每個城市只允許在自身所在的城市采購,城市i的最低需求量為need(i),最大供應量為supply(i),單件采購成本為cost(i),如何采購總成本最小?
模型:設order(i)為城市i的采購量,則問題的數學模型為
1.直接粘貼復制
開始的程序
model: sets: cities/!待輸入的數據個數;/:cost,need,supply,order; endsets min=@sum(cities:cost*order); @for(cities:need<=order;order<=supply); data: cost,need,supply=!待輸入的數據值;; enddata end直接利用把存儲在Excel或者其他什么地方的數據復制粘貼過來,這里需要注意lingo里面的復制是按列進行的(這里在前面已經講過),不注意的話可能會發生數據賦值的錯亂
粘貼的選項
可以依次試一下上面的不同粘貼格式的效果
下面是我直接在Excel中Ctrl+C與Ctrl+V實現的
model: sets: cities/ Seattle Detroit Chicago Denver /:cost,need,supply,order; endsets min=@sum(cities:cost*order); @for(cities:need<=order;order<=supply); data: cost,need,supply= 12 1600 1700 28 1800 1900 15 1200 1300 20 1000 1100 ; enddata end2.讀取ldt數據文件:@file(數據文件名); 這里默認數據文件與程序文件在同一子目錄下面,否則找不到數據文件而報錯 model: sets: cities/@file(數據文件.ldt)/:@file(數據文件.ldt); endsets min=@sum(cities:cost*order); @for(cities:need<=order;order<=supply); data: cost=@file(數據文件.ldt); need=@file(數據文件.ldt); supply=@file(數據文件.ldt); enddata end
如果路徑不一致,也可以手動添加,Edit --> insert new object...
應當注意此時的文件類型的ldt格式,
具體里面內容:Seattle,Detroit,Chicago,Denver~cost,need,supply,order~12,28,15,20~1600,1800,1200,1000~1700,1900,1300,1100 注意中間的不同賦值用~間隔
3.存取Excel數據文件:@ole(文件名,元素名);
model: sets: cities/@ole('原始數據1.xls','cities')/:cost,need,supply,order; endsets min=@sum(cities:cost*order); @for(cities:need<=order;order<=supply); data: cost,need,supply=@ole('原始數據1.xls'); !讀取數據文件 @ole('原始數據1.xls','order')=order; !將計算結果存入表格中 enddata end對于路徑不一致的情況解決方式與上述一樣
總結
以上是生活随笔為你收集整理的lingo入门教程之三 --- 文件数据处理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 项目验收文档模板(四)
- 下一篇: DLL注入——使用远程线程