版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、Lingo優(yōu)化軟件及其應(yīng)用Lingo Optimal Software and its Applications中國(guó)科學(xué)院研究生院Lingo和其他應(yīng)用程序的連接 Lingo可以和Visual C+、Visual Basic等軟件開(kāi)發(fā)中應(yīng)用盡管Lingo是一個(gè)交互性的模型構(gòu)建環(huán)境,但是也可以利用Lingo提供的一些功能嵌入自己 構(gòu)造的應(yīng)用程序中。Lingo允許采用動(dòng)態(tài)連接庫(kù), (DLL) 的方式讓外部的應(yīng)用程序調(diào)用它的功能。這樣其它的應(yīng)用程序可以構(gòu)造前臺(tái)程序,而和模型相關(guān)的復(fù)雜問(wèn)題交給Lingo在 運(yùn)算, 這一點(diǎn)對(duì)最終的用戶是透明的。Lingo的動(dòng)態(tài)連接庫(kù)Lingo的動(dòng)態(tài)連接庫(kù)是一個(gè)32位的DL
2、L, 因此可以運(yùn)行在Windows95及以后的 版本中。在這里將演示采用Visual C/C+ and Visual Basic 等如何使用動(dòng)態(tài)連接庫(kù)調(diào)用Lingo的。而其它開(kāi)發(fā)工具如何調(diào)用, 可以參照這些例子完成。Lingo的動(dòng)態(tài)連接庫(kù)的例子采用職員分配的例子進(jìn)行解釋MODEL:SETS:DAYS / MON TUE WED THU FRI SAT SUN/:NEEDS, START, ONDUTY;ENDSETSOBJECTIVE MIN = SUM( DAYS( I): START( I); FOR( DAYS( TODAY):! 計(jì)算每天的值日人員數(shù)量;ONDUTY( TODAY) =
3、SUM( DAYS( D)| D #LE# 5:START( WRAP( TODAY - D + 1, SIZE( DAYS);! 需要的人員數(shù)量;ONDUTY( TODAY) = NEEDS( TODAY); GIN( START);); DATA:NEEDS = POINTER( 1); POINTER( 2) = START; POINTER( 3) = ONDUTY; POINTER( 4) = OBJECTIVE; POINTER( 5) = STATUS();ENDDATA ENDLingo模型的修改數(shù)據(jù)域中的 POINTER函數(shù)的功能是在Lingo求解器與調(diào)用的應(yīng)用程序之間建立起
4、直接的內(nèi)存連接 。這樣的基于內(nèi)存的數(shù)據(jù)傳輸將是高效快捷的,避免了基于磁盤(pán)文件的數(shù)據(jù)傳輸當(dāng)外部程序調(diào)用Lingo的動(dòng)態(tài)鏈接庫(kù)時(shí),將傳遞給Lingo一個(gè)內(nèi)存指針列表。POINTER ( n) 表示指針列表中的第n個(gè)指針。 POINTER 函數(shù)僅在外部程序通過(guò)DLL接口方式訪問(wèn)模型時(shí)在模型的內(nèi)部使用。當(dāng) POINTER函數(shù)出現(xiàn)在等式的右側(cè)時(shí),(如下所示)表示從外部程序傳遞的數(shù)據(jù)賦值給模型中的內(nèi)容。NEEDS = POINTER( 1);反之,則是將模型內(nèi)部的數(shù)據(jù)傳遞到外部程序中。POINTER函數(shù)采用雙精度浮點(diǎn)指針格式讀寫(xiě)所有的數(shù)據(jù)。BASIC 以及 C/C+ 程序員可以采用 double 數(shù)據(jù)類型
5、,而FORTRAN程序員 采用的數(shù)據(jù)類型為 REAL*8 或者 DOUBLE PRECISION.由于LINGO 假定程序員已經(jīng)正確的分配了內(nèi)存空間,因此在使用POINTER函數(shù)設(shè)置內(nèi)存時(shí),必須確認(rèn) 分配了適當(dāng)?shù)膬?nèi)存空間 。如果程序員沒(méi)有分配足夠的內(nèi)存空間,將導(dǎo)致內(nèi)存保護(hù)錯(cuò)誤,或者出現(xiàn)沒(méi)有警告的計(jì)算錯(cuò)誤。DATA:NEEDS = POINTER( 1); POINTER( 2) = START; POINTER( 3) = ONDUTY; POINTER( 4) = OBJECTIVE; POINTER( 5) = STATUS();ENDDATA注意START、ONDUTY等屬性排列的先后順
6、序。LINGO 的動(dòng)態(tài)鏈接庫(kù)將輸出若干個(gè)函數(shù),它們?cè)趲?kù)文件LINGO8DLLLINGOD80.LIB中有列表,并可以將這些函數(shù)導(dǎo) 入到Microsoft C或者FORTRAN中. Visual Basic用戶可以通過(guò)在項(xiàng)目中包含模塊文件導(dǎo)入 LINGO8DLLLINGOD80.BAS 完成上述功能。下面給出Lingo動(dòng)態(tài)鏈接庫(kù)的輸出函數(shù):(1) :void LSclearPointersLng( pLSenvLINGO pL)清除通過(guò)LSsetPointerLng()函數(shù)建立起來(lái)POINTER()內(nèi)存區(qū)域參數(shù):pL指向LScreateEnvLng()函數(shù)建立的內(nèi)存區(qū)域(2) : int LSc
7、loseLogFileLng( pLSenvLINGO pL)件關(guān)閉由LSopenLogFileLng()函數(shù)打開(kāi)的Lingo創(chuàng)建的LOG文參數(shù):指向LScreateEnvLng()函數(shù)建立的內(nèi)存區(qū)域 返回值:沒(méi)有錯(cuò)誤返回0,非零表示出錯(cuò)。(3) :pLSenvLINGO CALLTYPE LScreateEnvLng();創(chuàng)建Lingo的內(nèi)存環(huán)境對(duì)象。所有的Lingo例程都需要一個(gè)合 法的指向內(nèi)存環(huán)境對(duì)象的指針。返回值:返回0表示出錯(cuò),否則返回對(duì)象地址。(4) :int LSdeleteEnvLng( pLSenvLINGO pL)刪除先前創(chuàng)建的Lingo環(huán)境對(duì)象,釋放Lingo對(duì)象申請(qǐng)的系
8、統(tǒng) 內(nèi)存。參數(shù):pL指向LScreateEnvLng()函數(shù)建立的內(nèi)存區(qū)域返回值:沒(méi)有錯(cuò)誤返回0,非零表示出錯(cuò)。(5) :int LSexecuteScriptLng( pLSenvLINGO pL,char* pcScript)該函數(shù)處理Lingo的命令行。參數(shù): pL指向LScreateEnvLng()函數(shù)建立的內(nèi)存區(qū)域pcScriptLingo的命令行指針。返回值:沒(méi)有錯(cuò)誤返回0,非零表示出錯(cuò)。(6) :int LSgetCallbackInfoLng( pLSenvLINGO pL, intnObject, void* pResult)可以在應(yīng)用程序中建立一個(gè)函數(shù),Lingo求解器會(huì)在
9、固定的時(shí) 間間隔調(diào)用該函數(shù)。這樣可以知道Lingo的運(yùn)行進(jìn)程。這種功 能的函數(shù)稱為回調(diào)函數(shù)。(7) :int LSopenLogFileLng( pLSenvLINGO pL, char*pcLogFile在進(jìn)行模型處理時(shí)創(chuàng)建一個(gè)LOG文件。(8) :int LSsetCallbackErrorLng( pLSenvLINGO pL, lngCBFuncError_t pcbf, void* pUserData)當(dāng)出現(xiàn)錯(cuò)誤時(shí),Lingo調(diào)用該回調(diào)函數(shù)。(9) :int LSsetCallbackSolverLng( pLSenvLINGO pL, lngCBFuncError_t pcgf,
10、void* pUserData)Lingo在運(yùn)行的過(guò)程中將定期調(diào)用該函數(shù)。Use this routine to specify a callback function that LINGO will call at frequent intervals when solving a model.Lingo與Visual C+的連接采用Visual C/C+ 6.0創(chuàng)建一個(gè)項(xiàng)目:1. 用 File|New 命令打開(kāi)一個(gè)對(duì)話框.2. 選擇MFC AppWizard(Exe)3. 選擇一個(gè)基于對(duì)話框的模板4. 選中OLE Automation 按鈕,OLE將支持Lingo的動(dòng)態(tài)鏈接庫(kù)功能5. 選擇
11、下一步.6. 按Finish 按鈕.使用Visual C+ 中的ClassWizard 將對(duì)話框中的成員變量等添加好為了在項(xiàng)目中更好的應(yīng)用Lingo的動(dòng)態(tài)鏈接庫(kù),在菜單的Project|Add toProject|Files command and select the file將 LINGO8DLLLINGD80.LIB文件加入到項(xiàng)目中。將Lingd80.h頭文件添加到對(duì)話框類的文件頭。/ staffDlg.h : header file #include lingd80.h#if!defined(AFX_STAFFDLG_H 74D746B7_CA4D_11D6_AC89_00010240 D2AE INCLUDED_)#defineAFX_STAFFDLG_H 74D746B7_CA4D_11D6_AC89_00010240D2AE I NCLUDED_#if _MSC_VER 1000#pragma once#endif / _MSC_VER 1000/ CStaffDlg dialogLingo與Visual C+的連接結(jié)果IlIll
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《GBT 21526-2008 結(jié)構(gòu)膠粘劑 粘接前金屬和塑料表面處理導(dǎo)則》專題研究報(bào)告
- 《GB 14722-2008組件式髖部、膝部和大腿假肢》專題研究報(bào)告深度
- 《GBT 22133-2008流體流量測(cè)量 流量計(jì)性能表述方法》專題研究報(bào)告
- 《GBT 17587.5-2008滾珠絲杠副 第5部分:軸向額定靜載荷和動(dòng)載荷及使用壽命》專題研究報(bào)告
- 道路安全培訓(xùn)教學(xué)課件
- 道教協(xié)會(huì)安全培訓(xùn)課件
- 道寶當(dāng)眾講話培訓(xùn)
- 2025局部晚期非小細(xì)胞肺癌多學(xué)科管理與治療策略共識(shí)課件
- 云南國(guó)防工業(yè)職業(yè)技術(shù)學(xué)院《機(jī)電一體化技術(shù)(軍工方向)》2024-2025 學(xué)年第一學(xué)期期末試卷(核心專業(yè))
- 達(dá)人培訓(xùn)課件安裝
- 2023-2024學(xué)年北京市海淀區(qū)清華附中八年級(jí)(上)期末數(shù)學(xué)試卷(含解析)
- 臨終決策中的醫(yī)患共同決策模式
- 2026年包頭輕工職業(yè)技術(shù)學(xué)院高職單招職業(yè)適應(yīng)性測(cè)試備考題庫(kù)及答案詳解
- 流感防治知識(shí)培訓(xùn)
- 呼吸內(nèi)科進(jìn)修匯報(bào)課件
- 康復(fù)治療進(jìn)修匯報(bào)
- 牽引供電系統(tǒng)短路計(jì)算-三相對(duì)稱短路計(jì)算(高鐵牽引供電系統(tǒng))
- 離婚協(xié)議書(shū)模板(模板)(通用)
- (完整版)第一性原理
- 降低住院患者口服藥缺陷率教學(xué)課件
- 《質(zhì)量管理與控制技術(shù)基礎(chǔ)》第一章 質(zhì)量管理基礎(chǔ)知識(shí)
評(píng)論
0/150
提交評(píng)論