




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
重慶三峽學(xué)院財(cái)經(jīng)學(xué)院LINGO程序設(shè)計(jì)簡明教程與應(yīng)用舉例運(yùn)籌學(xué)綜合實(shí)驗(yàn)教程主要內(nèi)容:
LINGO簡介(包括常用菜單項(xiàng)、基本組成、運(yùn)算符與函數(shù))
運(yùn)籌學(xué)主要內(nèi)容程序段(部分內(nèi)容可擴(kuò)展應(yīng)用)
目錄TOC\o"1-3"\h\u1. LINGO簡介 11.1LINGO常用菜單項(xiàng) 11.1.1文件菜單 21.1.2編輯菜單: 31.1.3LINGO菜單 41.2LINGO的基本組成 111.3集合定義的語法規(guī)則: 111.4運(yùn)算符: 121.5函數(shù) 122. LINGO編程應(yīng)用舉例 132.1線性與整數(shù)規(guī)劃 13例2.1.1(資源分配問題) 13例2.1.2(混合問題) 13例2.1.3(條材下料問題) 14例2.1.4(投資分配問題) 15例2.1.5(生產(chǎn)安排問題) 16例2.1.6(排班問題) 17例2.1.7計(jì)劃排序程序(稀疏集合:直接列表法) 18例2.1.8配對(duì)模型(稀疏集合:元素過濾法) 192.2指派問題 19例2.2.1 19例2.2.2 202.3運(yùn)輸問題 22例2.3.1 22例2.3.2(P103-7) 23例2.3.3(P104) 232.4目標(biāo)規(guī)劃 25例2.4.1(P116例6.5) 262.5圖與網(wǎng)絡(luò)模型 272.5.1最短路問題 272.5.2最大流問題 282.6動(dòng)態(tài)規(guī)劃 282.6.1最短路問題 282.6.2資源分配問題 292.7存儲(chǔ)論 302.7.1不允許缺貨,即時(shí)補(bǔ)充模型(基本EOQ模型) 302.7.2不允許缺貨,生產(chǎn)需要一定時(shí)間模型 302.7.3允許缺貨,即時(shí)補(bǔ)充模型 312.7.4允許缺貨,生產(chǎn)需要一定時(shí)間模型 312.8決策分析 322.8.1不確定型決策 322.8.2風(fēng)險(xiǎn)型決策 332.8.3貝葉斯公式 332.9對(duì)策論 342.9.1二人零和對(duì)策 34LINGO簡介LINGO是LinearInteractiveandGeneralOptimizer的縮寫,即“交互式的線性和通用優(yōu)化求解器”,由美國LINDO系統(tǒng)公司(LindoSystemInc.)推出的,可以用于求解非線性規(guī)劃,也可以用于一些線性和非線性方程組的求解等,功能十分強(qiáng)大,是求解大規(guī)模優(yōu)化模型的最佳選擇。其特色在于內(nèi)置建模語言,提供十幾個(gè)內(nèi)部函數(shù),可以允許決策變量是整數(shù)(即整數(shù)規(guī)劃,包括0-1整數(shù)規(guī)劃),方便靈活,而且執(zhí)行速度非常快。能方便與EXCEL,數(shù)據(jù)庫等其他軟件交換數(shù)據(jù)。1.1LINGO常用菜單項(xiàng)標(biāo)題欄:顯示所建立文件的標(biāo)題,默認(rèn)的為Lingo1、Lingo2…菜單欄:包括文件(File)、編輯(Edit)、Lingo、窗口(Window)、幫助(Help).工具欄:將常用的命令列于此欄,以便快捷操作:1.1.1文件菜單(1)新建(New)(2)打開(Open)(3)保存(Save)(4)另存為...(SaveAs...)(5)關(guān)閉(Close)(6)打印(Print)(7)打印設(shè)置(PrintSetup...)(8)打印預(yù)覽(PrintPreview)
(9)輸出到日志文件(LogOutput...)(10)提交LINGO命令腳本文件(TakeCommands...)(11)引入LINGO文件(ImportLingoFile...)(12)退出(Exit)1.1.2編輯菜單:(1)恢復(fù)(Undo)(2)剪切(Cut)(3)復(fù)制(Copy)(4)粘貼(Paste)(5)粘貼特定..(PasteSpecial。。)(6)全選(SelectAll)(7)選擇所有(SelectAll)(8)查找(9)查找下一個(gè)(10)復(fù)位(11)光標(biāo)移到某一行(GoToLine)(12)匹配括號(hào)(MatchParenthesis)(13)粘貼函數(shù)(PasteFunction)(14)選擇字體(SelectFont...)(15)插入新對(duì)象(InsertNewObject...)(16)連接(links)(17)對(duì)象性質(zhì)(ObjectProperties)1.1.3LINGO菜單(1)求解模型(Slove)(2)求解結(jié)果(Solution)可以文本或圖形(柱狀圖bar,折線圖Line,餅圖Pie)顯示結(jié)果。(3)查看(Look)(4)靈敏性分析(Range,Ctrl+R)(5)選項(xiàng)(Options):有7個(gè)選項(xiàng)卡,其中最常用的是通用求解器(GenerlSolver)中的對(duì)偶計(jì)算(DualComputations).若要進(jìn)行靈敏度分析,則在對(duì)偶計(jì)算中選擇PricesandRanges;(6)生成模型的展開形式(Generate):用代數(shù)表達(dá)式顯示完整形式。(7)生成圖形(Picture):以矩陣形式顯示模型系數(shù)(8)調(diào)試(Debug)(9)顯示模型統(tǒng)計(jì)資料(ModelStatistics)(10)查看(Look):以文本形式顯示模型內(nèi)容,前面加行號(hào)。第(5)項(xiàng)選項(xiàng)(Option)參數(shù)設(shè)置列表:Interface(界面)選項(xiàng)卡選項(xiàng)組選項(xiàng)含義General(一般選項(xiàng))ErrorsinDialogs(錯(cuò)誤信息對(duì)話框)如果選擇該選項(xiàng),則求解程序遇到錯(cuò)誤時(shí)將打開了個(gè)對(duì)話框顯示錯(cuò)誤,關(guān)閉該對(duì)話框后程序才會(huì)繼續(xù)執(zhí)行;否則,錯(cuò)誤信息將在報(bào)告窗口顯示,程序仍會(huì)繼續(xù)執(zhí)行。SplashSreen(彈出屏幕)如果選擇該選項(xiàng),則LINGO每次啟動(dòng)時(shí)會(huì)在屏幕上彈出一個(gè)對(duì)話框,顯示LINGO的版本和版權(quán)信息;否則不彈出。StatusBar(狀態(tài)欄)如果選擇該選項(xiàng),則LINGO系統(tǒng)在主窗口最下面一行顯示狀態(tài)欄(其中顯示時(shí)間、光標(biāo)位置、菜單提示和程序的當(dāng)前狀態(tài));否則不顯示。StatusWindow(狀態(tài)窗口)如果選擇該選項(xiàng),則LINGO系統(tǒng)每次運(yùn)行LINGOSoler(求解命令時(shí)會(huì)在屏幕上彈出求解狀態(tài)窗口;否則不彈出。TerseOutput(簡潔輸出)如果選擇該選項(xiàng),則LINGO系統(tǒng)對(duì)求解結(jié)果報(bào)告等將以簡潔形式輸出(僅顯示目標(biāo)函數(shù)值);否則以詳細(xì)形式輸出。Toolbar(工具欄)如果選擇該選項(xiàng),則顯示工具欄;否則不顯示。SolutionCutoff(解的截?cái)?如果中小于等于這個(gè)值的解將報(bào)告為“0”,以免分散注意力,SolutionCutoff默認(rèn)值是10-9.FileFormat(文件格式)Lg4(extended)(擴(kuò)展格式)模型文件的默認(rèn)保存格式是lg4格式(這是一種二進(jìn)制文件,只有LINGO能讀出)Lng(testonly)(純文本格式)模型文件的默認(rèn)保存格式是lng格式(純文本)SyntaxColoring(語法配色)Linelimit(行數(shù)限制)語法配色的行數(shù)限制(默認(rèn)是1000),LINGO模型窗口中將LINGO關(guān)鍵詞顯示為藍(lán)色,注釋為綠色,其他為黑色,超過該行數(shù)限制后不再區(qū)分顏色。特別是,設(shè)置行數(shù)限制為0時(shí),整個(gè)文件不再區(qū)分顏色。Delay(延遲)設(shè)置語法配色的延遲時(shí)間(秒,默認(rèn)為0,從最后一次擊鍵算起)ParenMatch(括號(hào)匹配)如果選擇該選項(xiàng),則模型中當(dāng)前光標(biāo)所在處的括號(hào)及其相匹配的括號(hào)將以紅色顯示;否則不使用該功能。CommandWindow(命令窗口)SendReportstoCommandWindow(報(bào)告發(fā)送到命令窗口)如果選擇該選項(xiàng),則輸出信息將會(huì)發(fā)送到命令窗口,而不是單獨(dú)的報(bào)告窗口;否則不使用該功能。EchoInput(輸入信息反饋)如果選擇該選項(xiàng),則用File|TakeCommand命令執(zhí)行腳本文件時(shí),處理信息會(huì)發(fā)送到命令窗口,這對(duì)調(diào)試命令腳本有用;否則不使用該功能。LineCountLimits(行數(shù)限制)命令窗口能顯示的行數(shù)的最大值為Maxmum(默認(rèn)為800);如果要顯示的內(nèi)容超過這個(gè)值,每次從命令窗口滾動(dòng)刪除的最小行數(shù)為Minmum(默認(rèn)值為400)PageSizeLimit(頁面大小限制)命令窗口每次顯示的行數(shù)的最大值為Length(默認(rèn)為沒有限制),顯示這么多行后會(huì)暫停,等待用戶響應(yīng);每行最大字符數(shù)為Width(默認(rèn)為74,可以設(shè)定為64-200之間),多余的字符將被截?cái)?。GeneralSolver(通用求解器)選項(xiàng)卡選項(xiàng)組選項(xiàng)含義GeneratorMemoryLimit(MB)模型生成器的內(nèi)存限制(兆)為模型生成器預(yù)留內(nèi)在,默認(rèn)值為32M,如果模型生成器使用的內(nèi)在超過該限制,LINGO將報(bào)告“Themodelgeneratorranoutofmemory”.該值設(shè)置大則對(duì)大型模型有利,但不宜過高,過高了會(huì)造成求解程序可使用的內(nèi)存減少,導(dǎo)致LINGO運(yùn)行不暢。RuntimeLimits運(yùn)行限制Iterations迭代次數(shù)上限求解一個(gè)模型時(shí),允許的最大迭代次數(shù)(默認(rèn)值為無限)Time(sec)運(yùn)行時(shí)間(秒)求解一個(gè)模型時(shí),允許的最大迭代時(shí)間(默認(rèn)值為無限)DualComputations對(duì)偶計(jì)算求解時(shí)控制對(duì)偶計(jì)算的級(jí)別,有以下四種可能的設(shè)置:None:不計(jì)算任何對(duì)偶信息,有利于加快運(yùn)行;Prices:計(jì)算對(duì)偶值(默認(rèn)設(shè)置),但不計(jì)算靈敏度;PricesandRanges:計(jì)算對(duì)偶值和靈敏度;Prices,OptOnly:只計(jì)算最優(yōu)行的對(duì)偶信息。ModelRegeneration模型的重新生成控制重新生成模型的方式,有三種可能的設(shè)置:Onlywhentextchanges:只有當(dāng)模型的文本修改后才再生成模型;Whentextchangesorwhthexternalreferences:當(dāng)模型的文本修改或模型含有外部引用時(shí)且外部數(shù)據(jù)源被改變時(shí)重新生成模型(默認(rèn)設(shè)置);Always:每當(dāng)有需要時(shí)。Linearization控制線性化選項(xiàng)Degeer線性化程度決定求解模型時(shí)線性化的程度,有四種可能的設(shè)置:SolverDecodes:若變量數(shù)小于等于12個(gè),則盡可能全部線性化;否則不做任何線性化(默認(rèn)設(shè)置)Nome:不做任何線性化。Low:對(duì)函數(shù)@ABS,@MAX,@MIN,@SMAX,@SMIN,以及二進(jìn)制變量與連續(xù)變量的乘積項(xiàng)做線性化。High:同上,此外對(duì)邏輯運(yùn)算符#LE#,#EQ#,#NE#做線性化ABigM(線性化的大M系數(shù))設(shè)置線性化的大M系數(shù)(默認(rèn)值為10-6)該數(shù)如果太小,則模型可能最終無可靠解,該值太大,則可能導(dǎo)致產(chǎn)生算法的穩(wěn)定性問題。Delta(線性化的誤差限)設(shè)置線性化的誤差限(默認(rèn)值為10-6),大多數(shù)模型無需改變此默認(rèn)值)AllowUnrestrictedUseofPrimitive/setMemberNames允許無限制地使用基本集合的成員名選擇該選項(xiàng)可以保持與LINGO4.0以前的版本兼容,即允許使用基本命令的成員名稱直接作為該成員在該命令的索引值(Lingo4.0以后的版本要求使用@INDEX函數(shù))。默認(rèn)不選擇該選項(xiàng)。CheckforDuplicateNamesinDataandModel(檢查數(shù)據(jù)和模型中的名稱是否重復(fù)使用)選擇該選項(xiàng),LINGO將檢查數(shù)據(jù)和模型中的名稱是否重復(fù)使用,如基本命令的成員名是否與決策變量名重復(fù)。UseR/CformatnamesforMPSI/O(在MPS文件格式的輸入輸出中使用R/C格式的名稱)在MPS文件格式的輸入輸出中,將變量和行名轉(zhuǎn)換為R/C格式LinearSolver(線性求解器)選項(xiàng)卡選項(xiàng)組選項(xiàng)含義Method求解方法求解時(shí)的算法,有四種可能的設(shè)置:SolverDecides:LINGO自動(dòng)選擇算法(默認(rèn)設(shè)置)PrimalSimplex:原始單純形法DualSimplex:對(duì)偶單純形法Barrier:障礙法(內(nèi)點(diǎn)法)大體上,求解行數(shù)少于列數(shù)的稀疏模型時(shí)用原始單純形法較好,求解列數(shù)少于行數(shù)的稀疏模型時(shí)用對(duì)偶單純形法較好,而求解密集型或大型規(guī)劃時(shí)用障礙法較好。InitialLinearFeasibilityTol:初始線性可靠性誤差限控制線性模型中約束被滿足時(shí)的初始允許誤差限,即在該限度內(nèi)時(shí)就認(rèn)為約束得到滿足(默認(rèn)值為3*10-6)FinalLinearFeasibilityTol:最后線性可靠性誤差限控制線性模型中約束被滿足時(shí)的最后允許誤差限(默認(rèn)值為10-7)ModelReduction模型降維控制是否檢查模型中的無關(guān)變量,從而降低模型的規(guī)模:Off:不檢查On:檢查,LINGO在求解之前嘗試從表達(dá)式中識(shí)別并移除無關(guān)的變量和約束SolverDecides:LINGO自動(dòng)決定(默認(rèn)設(shè)置)PricingStrategies價(jià)格策略(決定出基變量的策略)PrimalSolver原始單純形法有三種可能的設(shè)置:SolverDecides:LINGO自動(dòng)決定(默認(rèn)設(shè)置)Partial:LINGO對(duì)一部分可能的出基變量進(jìn)行嘗試Devex:用Steepest-Edge(最陡邊)近似算法對(duì)所有可能的變量進(jìn)行嘗試,找到使目標(biāo)值下降最多的出基變量。DualSolver對(duì)偶單純形法有三種可能的設(shè)置:SolverDecides:LINGO自動(dòng)決定(默認(rèn)設(shè)置)Dantzig:按最大下降比例法確定出基變量Steepest-Edge:最陡邊策略,對(duì)所有可能的變量進(jìn)行嘗試,找到使目標(biāo)值下降最多的出基變量。MatrixDecomposition矩陣分解選擇該選項(xiàng),LINGO將嘗試把一個(gè)大模型分解為幾個(gè)小模型求解;否則不嘗試。ScaleModel模型尺度的改變選擇該選項(xiàng),LINGO檢查模型中的數(shù)據(jù)是否平衡(數(shù)量級(jí)是否相差太大)并嘗試改變尺度使模型平衡;否則不嘗試。NonlinearSolver(非線性求解器)選項(xiàng)卡選項(xiàng)組選項(xiàng)含義InitialNonlinearFeasibilityTol初始非線性可行性誤差限控制模型中的約束滿足的初始誤差限,參閱線性求解器的相關(guān)說明,默認(rèn)值為10-3FinalNonlinearFeasibilityTol最后非線性可行性誤差限控制模型中約束滿足的最后誤差限(默認(rèn)值為10-6)NonlinearOptimalityTol非線性規(guī)劃的最優(yōu)性誤差限如果目標(biāo)函數(shù)的梯度的改變量小于等于這個(gè)值,則停止迭代(默認(rèn)值為2*10-7)SlowProgressIterationLimit緩慢改進(jìn)的迭代次數(shù)的上限當(dāng)目標(biāo)函數(shù)在連續(xù)這么多次迭代沒有顯著改進(jìn)以后,停止迭代(默認(rèn)值5)Derivatives導(dǎo)數(shù)計(jì)算方式Numerical數(shù)值法用有限差分法計(jì)算數(shù)值導(dǎo)數(shù),默認(rèn)用該方法Analytical解析法用解析法計(jì)算導(dǎo)數(shù)(僅對(duì)只含有自述運(yùn)算符的函數(shù)使用)Strategies策略CrashInitialSolution生成初始解選擇該選項(xiàng),LINGO將用啟發(fā)式方法生成一個(gè)“好”的出發(fā)點(diǎn)(初始解);否則不生成(默認(rèn)值)。QuadraticRecognition識(shí)別二次規(guī)劃選擇該選項(xiàng),LINGO將判別模型是否為二次規(guī)劃,若是則采用二次規(guī)劃算法(包含在線性規(guī)劃的內(nèi)點(diǎn)法中);否則不判別(默認(rèn)值)SelectiveConstraintEval有選擇地檢查約束選擇該選項(xiàng),LINGO在每次迭代時(shí)只檢查必須檢查的約束(如果有些約束函數(shù)在某些區(qū)欄目沒有定義,這樣做會(huì)出現(xiàn)錯(cuò)誤);否則,檢查所有約束(默認(rèn)值)SLPDirectionsSLP方向選擇該選項(xiàng),LINGO在每次迭代時(shí)用SLP(SuccessiveLP,逐次線性規(guī)劃)方法尋找搜索方向,運(yùn)用線性逼近的方法加快迭代時(shí)間(默認(rèn)值)SteepestEdge最陡邊策略選擇該選項(xiàng),LINGO在每次迭代時(shí)將對(duì)所有可能的變量進(jìn)行嘗試,找到使目標(biāo)值下降最多的變量進(jìn)行迭代,此時(shí)選擇變量所花費(fèi)的時(shí)間較多,但每次迭代時(shí)目標(biāo)函數(shù)值的改變量較大;默認(rèn)值為不使用最陡邊策略。IntegerPre-Solver(整數(shù)預(yù)處理求解器)選項(xiàng)卡選項(xiàng)組選項(xiàng)含義Heuristics啟發(fā)式方法Level水平控制采用啟發(fā)式搜索的次數(shù)(默認(rèn)值為3,可能的值為0-100)。啟發(fā)式方法的目的是從分枝節(jié)點(diǎn)的連續(xù)解出發(fā)嘗試找到一個(gè)好的整數(shù)解。MinSeconds最小時(shí)間每個(gè)分枝節(jié)點(diǎn)使用啟發(fā)式搜索的最小時(shí)間(秒,默認(rèn)值是0)ProbingLevel探測水平(級(jí)別)控制采用探測(probing)技術(shù)的級(jí)別(探測能夠用于混合整數(shù)線性規(guī)劃模型,收緊變量的上下界和約束的右端項(xiàng)的值)。多數(shù)時(shí)候探測可以充分緊縮模型并縮短求解時(shí)間,但有時(shí)并非如此,可能的取值為:SolverDecides:LINGO自動(dòng)決定(默認(rèn)設(shè)置)1-7:探測級(jí)別逐步升高同。ConstraintCuts約束的割(平面)Application應(yīng)用節(jié)點(diǎn)控制在分枝定界樹中,哪些節(jié)點(diǎn)需要增加割(平面),可能的取值為:RootOnly:僅根節(jié)點(diǎn)增加割(平面)AllNodes:所有節(jié)點(diǎn)均增加割(平面)SolverDecides:LINGO自動(dòng)決定(默認(rèn)設(shè)置)RelativeLimit相對(duì)上限控制生成的割(平面)的個(gè)數(shù)相對(duì)于原問題的個(gè)數(shù)的上限(比值),默認(rèn)值為0.75MaxPasses最大迭代檢查的次數(shù)為了尋找合適的割,最大迭代檢查的次數(shù),有兩個(gè)參數(shù):Root:對(duì)根節(jié)點(diǎn)的次數(shù)(默認(rèn)值為200)Tree:對(duì)其他節(jié)點(diǎn)的次數(shù)(默認(rèn)值為2)Types類型控制生成的割(平面)的策略,共有12種策略可供選擇(如想了解細(xì)節(jié),請(qǐng)參閱整數(shù)規(guī)劃方面的專著)IntegerSolver(整數(shù)求解器)選項(xiàng)卡選項(xiàng)組選項(xiàng)含義Branching分枝Direction取整方向控制分枝策略中優(yōu)先對(duì)變量取整的方向,有三種選擇:Both:LINGO自動(dòng)決定(默認(rèn)設(shè)置)Up:向上取整優(yōu)先Down:向下取整優(yōu)先Priority優(yōu)先級(jí)控制分枝策略中優(yōu)先對(duì)哪些變量進(jìn)行分枝,有兩種選擇:LINGODecides:LINGO自動(dòng)決定(默認(rèn)設(shè)置)Binary:二進(jìn)制(0-1)變量優(yōu)先。Integrality取整性質(zhì)Absolute絕對(duì)誤差限當(dāng)變量與整數(shù)的絕對(duì)誤差小于這個(gè)值時(shí),該變量被認(rèn)為是整數(shù),默認(rèn)值為10-6Relative相對(duì)誤差限當(dāng)變量與整數(shù)的絕對(duì)誤差小于這個(gè)值時(shí),該變量被認(rèn)為是整數(shù),默認(rèn)值為8*10-6Optimality優(yōu)化選項(xiàng)。整數(shù)規(guī)劃問題非常復(fù)雜,求解大型整數(shù)規(guī)劃時(shí),通常選擇運(yùn)行幾分鐘得到挖于真正最優(yōu)解的可行解,而不是運(yùn)行很長時(shí)間(幾天)來找最優(yōu)解。Absolute目標(biāo)函數(shù)的絕對(duì)誤差限如果當(dāng)前目標(biāo)函數(shù)值與目前找到的最優(yōu)值的絕對(duì)誤差小于這個(gè)值時(shí),則當(dāng)前解被認(rèn)為是最優(yōu)解(也就是說:只需要搜索比當(dāng)前解至少改進(jìn)這么多個(gè)單位的解),從而縮短求解時(shí)間。默認(rèn)值是8*10-8Relative目標(biāo)函數(shù)的相對(duì)誤差限如果當(dāng)前目標(biāo)函數(shù)值與目前找到的最優(yōu)值的絕對(duì)誤差小于這個(gè)值時(shí),當(dāng)前解被認(rèn)為是最優(yōu)解(也就是說:只需要搜索比當(dāng)前解至少改進(jìn)這么多百分比的解),從而縮短求解時(shí)間。默認(rèn)值是5*10-8TimetoRelative開始采用相對(duì)誤差限的時(shí)間(秒)在程序開始運(yùn)行后這么多秒內(nèi),不采用相對(duì)誤差限策略,目的是希望找到真正的最優(yōu)解;此后才使用相對(duì)誤差限策略,在求解比較耗費(fèi)時(shí)間的情況下,用相對(duì)誤差限策略來縮短求解時(shí)間(放棄追求高精度,縮短求解時(shí)間)。默認(rèn)值為100s.Tolerances誤差限,控制分支定界法求解整數(shù)規(guī)劃的分支策略Hurdle控制值IP目標(biāo)函數(shù)的閾值,即最優(yōu)解的一個(gè)界限,如果知道某個(gè)整數(shù)可行解,可利用這個(gè)可行解的目標(biāo)函數(shù)值,設(shè)置最優(yōu)解的界限,只尋找比廖值好的目標(biāo)函數(shù)對(duì)應(yīng)的整數(shù)解,一個(gè)好的閾值能夠大大縮短求解時(shí)間。一旦找到一個(gè)初始整數(shù)解,Hurdle值就不再為None.表示沒有指定這個(gè)閾值。NodeSelection節(jié)點(diǎn)選擇控制算法如何選擇節(jié)點(diǎn)分枝的次序,有以下選項(xiàng):LINGODecides:LINGO自動(dòng)選擇(默認(rèn)設(shè)置)DepthFirst:采用深度優(yōu)先策略WorstBound:選擇具有最弱限制的節(jié)點(diǎn)BestBound:選擇具有最強(qiáng)限制的節(jié)點(diǎn)StrongBranch強(qiáng)分枝的層數(shù)控制采用強(qiáng)分枝的層數(shù),即分枝樹的前n層運(yùn)用更精深(強(qiáng))的分支策略。所謂強(qiáng)分枝,就是在一個(gè)節(jié)點(diǎn)對(duì)多個(gè)變量分別嘗試進(jìn)行預(yù)分枝,找出其中最好(使目標(biāo)函數(shù)改變最大)的解(變量)最終進(jìn)行實(shí)際分枝。默認(rèn)值為10.IntegerPre-Solver(整數(shù)預(yù)處理求解器)選項(xiàng)卡選項(xiàng)組選項(xiàng)含義GlobalSolver全局最優(yōu)解程序UseGlobalSolver使用全局最優(yōu)程序很多非線性規(guī)劃是非凸的和(或)不光滑的,LINGO默認(rèn)的非線性算法會(huì)收斂到局部的次最優(yōu)點(diǎn),這個(gè)點(diǎn)可能離真正的全局最優(yōu)點(diǎn)很遠(yuǎn)。如果選中該選項(xiàng),LINGO將用全局最優(yōu)求解程序求解模型,盡可能得到全局最優(yōu)解(求解花費(fèi)的時(shí)間可能很長,但是,如果變量不很多,使用全局最優(yōu)求解程序花費(fèi)的時(shí)間并不多);否則不使用全局最優(yōu)求解程序,通常只得到局部最優(yōu)解(有時(shí)局部最優(yōu)解就是全局最優(yōu)解)VariableUpperBound變量上界有兩個(gè)欄目可以控制變量上界(按絕對(duì)值):value:設(shè)定變量的上界,若該值為d,則變量的賦值被限制在區(qū)域[d,-d]內(nèi)該值盡可能設(shè)置得緊湊些,防止進(jìn)入無意義的搜索區(qū)域而浪費(fèi)求解時(shí)間,默認(rèn)值為1010;Application列表框設(shè)置這個(gè)界的三種應(yīng)用范圍:None:所有變量都不使用這個(gè)上界,一般不推薦;All:所有變量都使用這個(gè)上界;Selected:先找到第一個(gè)局部最優(yōu)解,然后使用這個(gè)上界,并且只用于不中止于初始局部解的變量(默認(rèn)設(shè)置)Tolerances誤差限包括兩個(gè)欄目(按絕對(duì)值):optimality:只搜索比當(dāng)前解至少改進(jìn)這么多個(gè)單位的解(默認(rèn)值為10-6)Delta:全局最優(yōu)求解程序在凸化過程中增加的附加約束的誤差限,即必須滿足的程度(默認(rèn)值為10-7)Strategies策略可以控制全局最優(yōu)求解程序的三類策略:branching:第1次對(duì)變量分枝時(shí)使用的分枝策略:AbsoluteWidth(絕對(duì)寬度)LocalWidth(局部寬度)GlobalWidth(全局寬度)GlobalDistance(全局距離)ABS(Absolute)Violation(絕對(duì)沖突)Rel(Relative)Violation(相對(duì)沖突,默認(rèn)設(shè)置)BoxSelection:選擇活躍分枝節(jié)點(diǎn)的方法;DepthFirst(深度優(yōu)先)WorstBound(具有最壞界的分枝優(yōu)先,默認(rèn)設(shè)置)Reformulation:模型重整的級(jí)別;None(不進(jìn)行重整)Low(低)Medium(中)High(高,默認(rèn)設(shè)置)MultistartSolver多初始點(diǎn)求解程序Attempts嘗試次數(shù)嘗試多少個(gè)初始點(diǎn)求解,有以下幾種可能的設(shè)置:SolverDecides:由LINGO決定(默認(rèn)設(shè)置,對(duì)小規(guī)模NLP問題為5次,對(duì)大規(guī)模問題不使用多點(diǎn)求解)Off:不使用多點(diǎn)求解N(>1的正整數(shù)):N點(diǎn)求解Barrier:障礙法(即內(nèi)點(diǎn)法)注意:Multistart算法將急劇增加求解時(shí)間。1.2LINGO的基本組成Model:sets:!集合定義部分;語句體;endsetsdata:!數(shù)據(jù)初始化部分;語句體;enddata!目標(biāo)函數(shù)與約束條件語句;min(max)=...;@for(...);End模型均以model:開頭,以end結(jié)束;每條語句用分號(hào)";"結(jié)束;注釋部分以"!"開頭,";"結(jié)束;集合定義與數(shù)據(jù)初始化開始以":"標(biāo)識(shí),結(jié)束語句不加任何符號(hào);所有表達(dá)式中乘號(hào)"*"不能省略;為便于閱讀,通常采取縮進(jìn)式編寫。1.3集合定義的語法規(guī)則:sets:集合名/成員(可以省略不寫明)/:屬性(可以沒有);endsets例:BIANLANG/B1..B4/:X;YUESU/A1..A3/:B;!以上兩個(gè)集合為初始集合,相當(dāng)于一維數(shù)組;YXB(YUESU,BIANLANG):A;!此集合由兩個(gè)初始集合構(gòu)成,稱為衍生集合或派生集合;數(shù)據(jù)的初始化:sets:BIANLANG/B1..B4/:X;YUESU/A1..A3/:B;YXB(YUESU,BIANLANG):A;endsetsdata:B=100,200,400;A=1,2,3,44,5,6,77,8,9,10;此集合由兩初始集合所有成員組合,為稠密集合。sets:BIANLANG/B1..B4/:X;YUESU/A1..A3/:B;YXB(YUESU,BIANLANG),/A1,B1A1,B2A2,B3A3,B4/:A;endsets此集合成員只有兩初始集合部分成員組合,稱為稀疏集合。1.4運(yùn)算符算術(shù)運(yùn)算符:-取反;^乘方;﹡乘;/除;﹢加;﹣減。邏輯運(yùn)算符:最高#not#,最低#and#和#or#,其余中間平級(jí)#not# 否定該操作數(shù)的邏輯值,#not#是一個(gè)一元運(yùn)算符#eq# 若兩個(gè)運(yùn)算數(shù)相等,則為true;否則為flase#ne# 若兩個(gè)運(yùn)算符不相等,則為true;否則為flase#gt# 若左邊的運(yùn)算符嚴(yán)格大于右邊的運(yùn)算符,則為true;否則為flase#ge# 若左邊的運(yùn)算符大于或等于右邊的運(yùn)算符,則為true;否則為flase#lt# 若左邊的運(yùn)算符嚴(yán)格小于右邊的運(yùn)算符,則為true;否則為flase#le# 若左邊的運(yùn)算符小于或等于右邊的運(yùn)算符,則為true;否則為flase#and# 僅當(dāng)兩個(gè)參數(shù)都為true時(shí),結(jié)果為true;否則為flase#or# 僅當(dāng)兩個(gè)參數(shù)都為false時(shí),結(jié)果為false;否則為true關(guān)系運(yùn)算符:“=”、“<=”和“>=”優(yōu)先順序:單目優(yōu)于雙目,算術(shù)優(yōu)于邏輯,邏輯優(yōu)于關(guān)系,平級(jí)從左到右,括號(hào)改變次序。1.5函數(shù)LINGO提供了15個(gè)數(shù)學(xué)函數(shù),14個(gè)概率函數(shù),9個(gè)集合操作函數(shù),4個(gè)變量定界函數(shù),5個(gè)文件輸入輸出函數(shù),2個(gè)金融函數(shù),4個(gè)結(jié)果報(bào)告函數(shù),以及文字信息、條件和允許C語言或fortran語言編寫并編譯函數(shù),共73個(gè)函數(shù)。本課程所涉及內(nèi)容所用到的主要是集合操作函數(shù)和變量定界函數(shù),其他函數(shù)一旦用到,可查看相應(yīng)的函數(shù)使用說明。常用的集合函數(shù):@for(s:e);@sum(s:e);@max(s:e);@min(s:e);@prod(s:e);@wrap(i,n);前5個(gè)的格式:@函數(shù)名(集合名|條件:表達(dá)式),后1個(gè)用于轉(zhuǎn)換集合端點(diǎn)。變量定界函數(shù):@BIN(X),@BND(L,X,U),@GIN(X),@FREE(X)條件函數(shù):@if(條件表達(dá)式,條件為真的表達(dá)式,條件為假的表達(dá)式);LINGO編程應(yīng)用舉例2.1線性與整數(shù)規(guī)劃例2.1.1(資源分配問題)求解運(yùn)籌學(xué)問題程序段model:sets:dv/1..2/:x,c;st/1..2/:b;dxs(st,dv):a;endsetsdata:c=3,2;b=10,8;a=2,11,1;enddatamax=@sum(dv:c*x);@for(st(i):@sum(dv(j):a(i,j)*x(j))<=b(i););end例2.1.2(混合問題)飼料營養(yǎng)成分含量g/kg單價(jià)元/kg營養(yǎng)甲營養(yǎng)乙營養(yǎng)丙123450.52.03.000.060.080.700.350.250.0226543需求量g85518Model: sets: dv/1..5/:x,c; st/1..3/:b; dxs(dv,st):a; endsets data: c=2,6,5,4,3; b=85,5,18; a=0.5,0.1,0.082,0.06,0.73,0.04,0.351.5,0.15,0.25 0.8,0.2,0.02; enddata min=@sum(dv:c*x); @for(st(j):@sum(dv(i):a(i,j)*x(j))>=b(j););end例2.1.3(條材下料問題)圓鋼長5.5m,需要A(3.1m)、B(2.1m)、C(1.2m)三種圓鋼材料分別為100、200、400根,試安排下料方式,使所需圓鋼原材料的總數(shù)量最少?(截取方式不超過5種)model:sets: jefa/1..5/:x; cailao/1..3/:l,b;cxj(cailao,jefa):a;endsetsdata: l=3.1,2.1,1.2; b=100,200,400;enddata min=@sum(jefa:x); @for(jefa(j):@sum(cailao(i):l(i)*a(i,j))<=5.5;); @for(cailao(i):@sum(jefa(j):x(j)*a(i,j))>=b(i);); @for(jefa:@gin(x));@for(cxj:@gin(a));end例2.1.4(投資分配問題)(P25案例2-2)萬得集團(tuán)有限公司是一家集工、商、貿(mào)一體化的企業(yè),為了拓展公司的業(yè)務(wù)范圍,增加企業(yè)的競爭實(shí)力,公司董事會(huì)確定了投資方向。責(zé)成財(cái)務(wù)經(jīng)理制定出切實(shí)可行的投資計(jì)劃。財(cái)務(wù)部門通過收集相關(guān)資料和數(shù)據(jù),決定在今后五年內(nèi)給A、B、C、D四個(gè)產(chǎn)品項(xiàng)目投資6000萬元。財(cái)務(wù)部門設(shè)計(jì)的投資方案如下:產(chǎn)品項(xiàng)目A:從第一年到第五年每年年初都可以進(jìn)行投資,當(dāng)年年末就能收回本利110%。產(chǎn)品項(xiàng)目B:從第一年到第四年每年年初都可以進(jìn)行投資,次年年末收回本利125%。產(chǎn)品項(xiàng)目C:投資必須在第三年年初進(jìn)行,到第五年年末收回本利140%。產(chǎn)品項(xiàng)目D:投資需在第二年年初進(jìn)行,到第五年年末收回本利155%。其中:項(xiàng)目B的每年最大投資額不能超過900萬元,項(xiàng)目C的最大投資額不能超過2400萬元,項(xiàng)目D的最大投資額不能超過3000萬元。在滿足各個(gè)投資項(xiàng)目的限制條件下,使企業(yè)在五年內(nèi)獲得最大的收益max=1.1*x51+1.25*x42+1.4*x33+1.55*x24;x11+x12=6000;x21+x22+x24=1.1*x11;x31+x32+x34=1.1*x21+1.25*x12;x41+x42=1.1*x31+1.25*x22;x51=1.1*x41+1.25*x32;x12<=900;x22<=900;x32<=900;x42<=900;x33<=2400;x24<=3000;model: sets: nian/1..5/; xiangmu/1..4/; nxx(nian,xiangmu):例2.1.5(生產(chǎn)安排問題)(P35)Sytech國際公司是一家在同行業(yè)中處于領(lǐng)先地位的計(jì)算機(jī)和外圍設(shè)備的制造商。公司的主導(dǎo)產(chǎn)品分類如下:大型計(jì)算機(jī)(MFRAMES)、小型計(jì)算機(jī)(MINIS)、個(gè)人計(jì)算機(jī)(PCS)、和打印機(jī)(PRINTERS)。公司的兩個(gè)主要市場是北美和歐洲。公司一直按季度作出公司最初的重要決策。公司必須按照營銷部門的需求預(yù)測來對(duì)分布在全球的三個(gè)工廠調(diào)整產(chǎn)量,公司下一季度需求預(yù)測如下:表2-SEQ表2-\*ARABIC1需求預(yù)測產(chǎn)品北美歐洲大型計(jì)算機(jī)962321小型計(jì)算機(jī)44171580個(gè)人計(jì)算機(jī)4821015400打印機(jī)155406850而公司的三個(gè)工廠的生產(chǎn)能力限度又使得其不能隨心所欲地在任一工廠進(jìn)行生產(chǎn),限制主要是各工廠規(guī)模及勞動(dòng)力約束。表2-SEQ表2-\*ARABIC2工廠的生產(chǎn)能力產(chǎn)品空間(平方英尺)勞動(dòng)力(小時(shí))伯靈頓540710277710中國臺(tái)灣201000499240愛爾2-SEQ表2-\*ARABIC3資源利用率產(chǎn)品空間/單位勞動(dòng)小時(shí)/單位大型計(jì)算機(jī)17.4879.0小型計(jì)算機(jī)17.4831.5個(gè)人計(jì)算機(jī)3.006.9打印機(jī)5.305.6最終分析所要求的數(shù)據(jù)由會(huì)計(jì)部門提供,表2-23所顯示的數(shù)據(jù)表示單位利潤貢獻(xiàn)(稅后)。表2-SEQ表2-\*ARABIC4產(chǎn)品單位利潤單位利潤大型計(jì)算機(jī)小型計(jì)算機(jī)個(gè)人計(jì)算機(jī)打印機(jī)伯靈頓16136.4613694.038914.476956.231457.181037.571663.511345.43中國臺(tái)灣17358.1414709.969951.047852.361395.351082.491554.551270.16愛爾蘭15652.6813216.349148.557272.891197.521092.611478.91312.44model:sets: chanpin/1..4/:xuqiu1,xuqiu2; chandi/1..3/; ziyan/1..2/; cpxz(chanpin,ziyan):danhao; cdxz(chandi,ziyan):nengli; cdxcp(chandi,chanpin):x,y,cx,cy;endsetsdata:xuqiu1=962,4417,48217,15540;xuqiu2=321,1580,15400,6850;danhao=17.48,79.0 17.48,31.5 3.00,6.9 5.30,5.6;nengli=540710,277710 201000,499240 146900,80710;cx=16136,8914,1457,1663 17358,9915,1395,1554 15652,9148,1197,1478;cy=13694,6956,1037,1345 14709,7852,1082,1270 13216,7272,1092,1312;enddatamax=@sum(cdxcp:cx*x+cy*y);@for(chanpin(j):@sum(chandi(i):x(i,j))>=xuqiu1(j);@sum(chandi(i):y(i,j))>=xuqiu2(j););@for(chandi(i):@sum(chanpin(j):danhao(i,1)*x(i,j))<=nengli(i,1);@sum(chanpin(j):danhao(i,2)*y(i,j))<=nengli(i,2););@for(cdxcp:@gin(x);@gin(y););End例2.1.6(排班問題)星期星期一星期二星期三星期四星期五星期六星期目需求15171414151920model:sets: zou/mon..sun/:x,r;endsetsdata: r=15,17,14,14,15,19,20;enddatamin=z;z=@sum(zou:X);@for(zou(i):z-x(@wrap(i+1,7))-x(@wrap(i+2,7))>=r(i));@for(zou:@gin(x));end例2.1.7計(jì)劃排序程序(稀疏集合:直接列表法)11項(xiàng)工作,工作時(shí)間如表所示,先后順序如圖所示。交給4個(gè)工作站完成,工作站也按順序分配,不能倒流。如何安排,可使裝配時(shí)間最少。任務(wù)ABCDEFGHIJK時(shí)間4511950151212121289model:sets: task/A..K/:t; station/1..4/; txt(task,task)/a,bb,cc,fc,gd,ee,he,if,jg,jh,ji,jj,k/; txs(task,station):x;endsetsdata:t=4511950151212121289;enddata@for(task(i):@sum(station(j):x(i,j))=1);@for(txt(i,j):@sum(station(k):k*x(j,k)-k*x(i,k))>=0);@for(station(k):@sum(task(i):t(i)*x(i,k))<=cyctime);min=cyctime;@for(txs:@bin(x));end例2.1.8配對(duì)模型(稀疏集合:元素過濾法)某公司準(zhǔn)備將8個(gè)職員安排到4個(gè)辦公室,每室2人,根據(jù)觀察,兩兩之間的合作相容性如表所示,數(shù)字越小相容性越好。如何安排可使總相容程度最好?s1s2s3s4s5s6s7s8s19342156s2173521s344292s41552s5876s623s74model:sets:ren/1..8/;links(ren,ren)|&2#gt#&1:c,x;!第2個(gè)父集索引值大于第1個(gè)父集索引值;endsetsdata: c=9,3,4,2,1,5,6 1,7,3,5,2,1 4,4,2,9,2 1,5,5,2 8,7,6 2,3 4;enddatamin=@sum(links:c*x);@for(ren(i):@sum(links(j,k)|j#eq#i#or#k#eq#i:x(j,k))=1);@for(links:@bin(x));End2.2指派問題例2.2.1四名隊(duì)員A,B,C,D參加混合接力賽,其100米自由泳、蛙泳、蝶泳、仰泳成績?nèi)缦拢鹤杂捎就苡镜狙鲇続BCD56635756746977766165636363716772如何安排可使預(yù)期成績最好。Model:Sets:Xiangmu/ziyouyong,wayong,dieyong,yangyong/;Renyuan/A..D/;XXR(renyuan,xiangmu):X,C;EndsetsData:C= 56,74,61,63 63,69,65,71 57,77,63,67 56,76,63,72;EnddataMin=@sum(xxr:c*x);@for(xiangmu(j):@sum(renyuan(i):x(i,j))=1);@for(renyuan(i):@sum(xiangmu(j):x(i,j))=1);@for(xxr:@bin(x));end例2.2.2P73案例4-4分配甲、乙、丙、丁四個(gè)人去完成A、B、C、D、E五項(xiàng)任務(wù),每個(gè)人完成各項(xiàng)任務(wù)的時(shí)間如表4-6所示。表4-6完成任務(wù)所用時(shí)間任務(wù)人員ABCDE甲乙丙丁2539342429382742312628364220402337333245由于任務(wù)數(shù)多于人數(shù),故考慮:(1)任務(wù)E必須完成,其他4項(xiàng)中可任選3項(xiàng)完成;(2)其中有一個(gè)人完成兩項(xiàng),其他每人完成一項(xiàng);(3)任務(wù)A由甲或丙完成,任務(wù)C由丙或丁完成,任務(wù)E由甲、乙或丁完成,且規(guī)定4人中丙或丁完成兩項(xiàng)任務(wù),其他每人完成一項(xiàng)。試分別確定最優(yōu)分配方案,使完成任務(wù)的總時(shí)間為最小。(1)任務(wù)E必須完成,其他4項(xiàng)中可任選3項(xiàng)完成Model:Sets:Renyuan/jia,yi,bing,ding/;Renwu/A..E/;RXR(renyuan,renwu):c,x;EndsetsData:C= 25,20,31,42,3739,38,26,20,3334,27,28,40,3224,42,36,23,45;EnddataMin=@sum(rxr:c*x);@for(renyuan(i):@sum(renwu(j):x(i,j))=1);@sum(renyuan(i):x(i,4))=1;@for(renwu(j)|j#ne#4:@sum(renyuan(i):x(i,j))<=1);@for(rxr:@bin(x));End(2)其中有一個(gè)人完成兩項(xiàng),其他每人完成一項(xiàng)Model:Sets:Renyuan/jia,yi,bing,ding/;Renwu/A..E/;RXR(renyuan,renwu):c,x;EndsetsData:C= 25,20,31,42,3739,38,26,20,3334,27,28,40,3224,42,36,23,45;EnddataMin=@sum(rxr:c*x);@for(renyuan(i):@sum(renwu(j):x(i,j))>=1);@for(renyuan(i):@sum(renwu(j):x(i,j))<=2);@for(renwu(j):@sum(renyuan(i):x(i,j))=1);@for(rxr:@bin(x));End(3)任務(wù)A由甲或丙完成,任務(wù)C由丙或丁完成,任務(wù)E由甲、乙或丁完成,且規(guī)定4人中丙或丁完成兩項(xiàng)任務(wù),其他每人完成一項(xiàng)Model:Sets:Renyuan/jia,yi,bing,ding/;Renwu/A..E/;RXR(renyuan,renwu):c,x;EndsetsData:C= 25,20,31,42,3739,38,26,20,3334,27,28,40,3224,42,36,23,45;EnddataMin=@sum(rxr:c*x);@sum(renyuan(i)|i#eq#1#or#i#eq#3:x(i,1))=1;@sum(renyuan(i)|i#eq#3#or#i#eq#4:x(i,3))=1;@sum(renyuan(i)|i#ne#3:x(i,5))=1;@for(renwu(j)|j#eq#2#or#j#eq#4:@sum(renyuan(i):x(i,j))=1);@for(renyuan(i)|i#le#2:@sum(renwu(j):x(i,j))=1);@for(renyuan(i)|i#gt#2:@sum(renwu(j):x(i,j))<=2);@for(rxr:@bin(x));End2.3運(yùn)輸問題例2.3.1(P96案例5-1)某化肥公司根據(jù)現(xiàn)有定單及對(duì)市場的預(yù)測,估計(jì)下一年度每個(gè)季度對(duì)化肥的需求量分別為10萬噸、25萬噸、25萬噸、10萬噸,其每季度的生產(chǎn)能力和生產(chǎn)成本如表5-22所示,假設(shè)在每個(gè)季度內(nèi)產(chǎn)銷都是平穩(wěn)的,又若產(chǎn)品當(dāng)季不銷售,每季度存儲(chǔ)費(fèi)用為10萬元/萬噸,要求在滿足需求量的前提下,如何制訂生產(chǎn)計(jì)劃,才能使全年總成本(包括生產(chǎn)成本和存儲(chǔ)費(fèi)用)最低?表5-22生產(chǎn)能力及生產(chǎn)成本表季度生產(chǎn)能力(萬噸)生產(chǎn)成本(萬元/萬噸)Ⅰ20250Ⅱ25280Ⅲ25300Ⅳ20250model: sets: jijie/1..4/:xuqiu,nengli,chengben; jxj(jijie,jijie)|&2#ge#&1:x,c; endsets data: xuqiu=10,25,25,10; nengli=20,25,25,20; chengben=250,280,300,250; enddata @for(jxj(i,j):c(i,j)=chengben(i)+10*(j-i)); @for(jijie(i):@sum(jijie(j)|j#ge#i:x(i,j))<=nengli(i)); @for(jijie(j):@sum(jijie(i)|i#le#j:x(i,j))=xuqiu(j));End例2.3.2(P103-7)model: sets: chandi/1..4/:chanliang,chengben; xiaodi/A..F/:xiaoliang,xiaojia; cxx(chandi,xiaodi):x,c; endsets data: chanliang=200,300,400,100; chengben=1.2,1.4,1.1,1.5; xiaoliang=200,150,400,100,150,150; xiaojia=2.0,2.4,1.8,2.2,1.6,2.2; enddata @for(cxx(i,j):c(i,j)=xiaojia(j)-chengben(i)); @for(chandi(i):@sum(xiaodi(j):x(i,j))=chanliang(i)); @for(xiaodi(j)|j#ne#3:@sum(chandi(i):x(i,j))>=0.8*xiaoliang(j)); @sum(chandi(i):x(i,3))>=100; @sum(chandi(i):x(i,4))=xiaoliang(4); max=@sum(cxx:c*x);End例2.3.3(P104)(1)繼續(xù)僅由火車運(yùn)輸model: sets: product/1..3/:quanlity; market/1..5/:demand; pxm(product,market):cx,cy,invers,x,y; endsets data: quanlity=15,20,15; demand=11,12,9,10,8; cx= 61,72,45,55,66 69,78,60,49,56 59,66,63,61,47; cy= 31,38,24,1000,35 36,43,28,24,31 1000,33,36,32,26; invers=275,303,238,1000,285 293,318,270,250,265 1000,283,275,268,240; enddata min=@sum(pxm:cx*x); @for(product(i):@sum(market(j):x(i,j))=quanlity(i)); @for(market(j):@sum(product(i):x(i,j))=demand(j));end最優(yōu)值:2816.僅由船只運(yùn)輸(船只無法到達(dá)除外)model: sets: product/1..3/:quanlity; market/1..5/:demand; pxm(product,market):cx,cy,invers,x,y; endsets data: quanlity=15,20,15; demand=11,12,9,10,8; cx= 61,72,45,55,66 69,78,60,49,56 59,66,63,61,47; cy= 31,38,24,1000,35 36,43,28,24,31 1000,33,36,32,26; invers=275,303,238,1000,285 293,318,270,250,265 1000,283,275,268,240; enddata min=z;z=@sum(pxm:@if(cx*x#le#cy*y+invers,cx*x,cy*y+invers)).; @for(product(i):@sum(market(j):x(i,j)+y(i,j))=quanlity(i)); @for(market(j):@sum(product(i):x(i,j)+y(i,j))=demand(j));end最優(yōu)值:3563.由運(yùn)費(fèi)少來決定。model: sets: product/1..3/:quanlity; market/1..5/:demand; pxm(product,market):cx,cy,invers,x,y; endsets data: quanlity=15,20,15; demand=11,12,9,10,8; cx= 61,72,45,55,66 69,78,60,49,56 59,66,63,61,47; cy= 31,38,24,1000,35 36,43,28,24,31 1000,33,36,32,26; invers=275,303,238,1000,285 293,318,270,250,265 1000,283,275,268,240; enddata min=@sum(pxm:@if(cx*x#le#cy*y+invers,cx*x,cy*y+invers)); @for(product(i):@sum(market(j):x(i,j)+y(i,j))=quanlity(i)); @for(market(j):@sum(product(i):x(i,j)+y(i,j))=demand(j));End最優(yōu)值:851.2.4目標(biāo)規(guī)劃介紹兩種方法:序貫算法與線性加權(quán)法。例2.4.1(P116例6.5)序貫算法STEP1MIN=D1_;2*X1+2*X2<=12;2*X1+3*X2+D1_-D1=15;求解結(jié)果:d1_=0,固定轉(zhuǎn)第2步STEP2MIN=D2_+D2;2*X1+2*X2<=12;2*X1+3*X2+D1_-D1=15;D1_=0;2*X1-X2+D2_-D2=0;求解結(jié)果:D2_=D2=0,固定轉(zhuǎn)第3步STEP3:MIN=3*D3_+3*D3+D4;2*X1+2*X2<=12;2*X1+3*X2+D1_-D1=15;D1_=0;2*X1-X2+D2_-D2=0;D2_=0;D2=0;4*X1+D3_-D3=16;5*X2+D4_-D4=15;優(yōu)化結(jié)果:Globaloptimalsolutionfound.Objectivevalue:29.00000Infeasibilities:0.000000Totalsolveriterations:0VariableValueReducedCostD3_8.0000000.000000D30.0000006.000000D45.0000000.000000X12.0000000.000000X24.0000000.000000D1_0.0000000.000000D11.0000000.000000D2_0.0000000.000000D20.0000000.000000D4_0.0000001.000000線性加權(quán)法MIN=100*D1_+10*(D2_+D2)+3*D3_+3*D3+D4;2*X1+2*X2<=12;2*X1+3*X2+D1_-D1=15;2*X1-X2+D2_-D2=0;4*X1+D3_-D3=16;5*X2+D4_-D4=15;優(yōu)化結(jié)果:Globaloptimalsolutionfound.Objectivevalue:29.00000Infeasibilities:0.000000Totalsolveriterations:4VariableValueReducedCostD1_0.000000100.0000D2_0.00000015.66667D20.0000004.333333D3_8.0000000.000000D30.0000006.000000D45.0000000.000000X12.0000000.000000X24.0000000.000000D11.0000000.000000D4_0.0000001.0000002.5圖與網(wǎng)絡(luò)模型2.5.1最短路問題A例:求A到G的最短路A13A13A32A32A312AAAA312AAAA34A34A41A41A22model:sets: CITIES/A..G/:FL;!定義城市; ROADS(CITIES,CITIES)/A,BA,CB,DB,EB,FC,DC,EC,FD,GE,GF,G/:W,P; !定義相鄰城市、城市間里程及最短路徑;endsetsdata: w=2,4,3,3,1,2,3,1,1,3,4;enddata N=@size(cities);FL(N)=0; @for(cities(i)|i#lt#n:FL(i)=@min(roads(i,j):w(i,j)+FL(J))); @for(roads(i,j):P(i,j)=@if(FL(i)#eq#w(i,j)+FL(j),1,0));End2.5.2最大流問題對(duì)2.5.1例題求從A到G的最大流。model:sets: POINT/A..G/; LINKS(POINT,POINT)/A,BA,CB,DB,EB,FC,DC,EC,FD,GE,GF,GG,A/:c,f;endsetsdata: c=2,4,3,3,1,2,3,1,1,3,4,1000;enddata MAX=F(7,1); @for(LINKS(i,j):f(i,j)<=c(i,j)); @for(point(i):@sum(links(j,i):f(j,i))=@sum(links(i,j):f(i,j)));end2.6動(dòng)態(tài)規(guī)劃2.6.1最短路問題A例:求A到G的最短路A13A13A32A32A312AAAA312AAAA34A34A41A41A22model:sets: CITIES/A..G/:FL;!定義城市; ROADS(CITIES,CITIES)/A,BA,CB,DB,EB,FC,DC,EC,FD,GE,GF,G/:W,P; !定義相鄰城市、城市間里程及最短路徑;endsetsdata: w=2,4,3,3,1,2,3,1,1,3,4;enddata N=@size(cities);FL(N)=0; @for(cities(i)|i#lt#n:FL(i)=@min(roads(i,j):w(i,j)+FL(J))); @for(roads(i,j):P(i,j)=@if(FL(i)#eq#w(i,j)+FL(j),1,0));End2.6.2資源分配問題model:sets: jieduan/A..D/:F; ziyuan/1..6/; jxz(jieduan,ziyuan):W,X;endsetsdata: w=0,4,8,11,11,110,5,9,11,12,120,3,7,9,11,120,0,0,0,0,0;enddata N=@size(jieduan);F(N)=0; @for(jieduan(i)|i#lt#n:F(i)=@max(jxz(i,j):w(i,j)+f(i+1))); @for(jxz(i,j)|i#lt#n:x(i,j)=@if(F(i)#eq#w(i,j)+F(i+1),1,0)); @for(ziyuan(j):x(n,j)=1);Endmodel:sets: jieduan/A..D/:F; ziyuan/1..6/; jxz(jieduan,ziyuan):W,X;endsetsdata: w=0,4,8,11,11,110,5,9,11,12,120,3,7,9,11,120,0,0,0,0,0;enddata N=@size(jieduan);f(N)=0; @for(jieduan(i)|i#lt#n:f(i)=@max(jxz(i,j):w(i,j)+f(i+1))); @for(jxz(i,j)|i#lt#n:x(i,j)=@if(f(i)#eq#w(i,j)+f(i+1),1,0)); @for(ziyuan(j):x(n,j)=1);End設(shè)備負(fù)荷問題model:sets: jd/1..4/:s,x,v; zb/1..5/:f;endsetsf(5)=0;s(1)=100;@for(jd:x<=s);@for(jd(k)|k#lt#4:s(k+1)=0.65*X(K)+0.95*(S(K)-X(K)));@FOR(JD(K):V(K)=9*X(K)+4*(S(K)-X(K)));@FOR(ZB(K)|k#lt#5:f(k)=v(k)+f(k+1));max=f(1);end2.7存儲(chǔ)論2.7.1不允許缺貨,即
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 合同范例廣聯(lián)達(dá)
- 寫勞動(dòng)合同范本
- 北京自住房合同范本
- 合同范本游樂場
- 合同范本修改格式
- 合作廠房修建合同范本
- 2025年IC卡鑒別機(jī)項(xiàng)目發(fā)展計(jì)劃
- 單位分工合同范本
- 創(chuàng)業(yè)培訓(xùn)合同范本
- 基地種植合作合同范本
- 湘教版高中地理必修2全冊(cè)導(dǎo)學(xué)案
- 2024陜西西安事業(yè)單位歷年公開引進(jìn)高層次人才和急需緊缺人才筆試參考題庫(共500題)答案詳解版
- 2024年時(shí)事政治熱點(diǎn)題庫200道含完整答案(必刷)
- 《石油化工企業(yè)場地地下水污染防治技術(shù)指南》(T-CAEPI 39-2021)
- 人大代表身份證明
- 城區(qū)排水管網(wǎng)雨污分流改造項(xiàng)目可行性報(bào)告
- 充電設(shè)施運(yùn)營管理制度文件范文
- 《幼兒教育評(píng)價(jià)》課程標(biāo)準(zhǔn)
- 教職工安全教育培訓(xùn)課件
- 2024年山東省春季高考技能考試-汽車專業(yè)備考試題庫(濃縮500題)
- 復(fù)工復(fù)產(chǎn)安全培訓(xùn)考試題
評(píng)論
0/150
提交評(píng)論