李 淵,郭興明,蘇 芳
(1.山西大同大學機電工程學院,山西大同 037003;2.山西大同大學建筑與測繪工程學院,山西大同 037003)
約束函數(shù)和目標函數(shù)都是線性函數(shù)的優(yōu)化問題,稱作線性規(guī)劃問題[1]。線性規(guī)劃是運籌學、優(yōu)化設(shè)計(包括機械優(yōu)化設(shè)計)中研究較早、應用廣泛、方法較成熟的一個重要分支,是輔助人們進行科學管理生產(chǎn)生活的一種數(shù)學方法。在工農(nóng)業(yè)生產(chǎn)、經(jīng)濟管理、交通運輸?shù)冉?jīng)濟活動中,一般都要求提高經(jīng)濟效果,有2 種途徑:①技術(shù)方面的改進,例如,使用新設(shè)備、新型原材料和改善生產(chǎn)工藝;②生產(chǎn)組織與計劃的改進,即合理安排人力物力資源。例如,在下料優(yōu)化設(shè)計方面,秦旭輝[2]在圓形件的剪切排樣現(xiàn)有的需求約束下的板材用量的線性規(guī)劃模型進行分析,并提出了無多余量的線性規(guī)劃模型。陳立暢[3]運用線性規(guī)劃對鋼板彈簧的下料工序進行分析,以節(jié)省材料為目標,建立優(yōu)化模型,利用軟件WinQSB 求解,得出最優(yōu)方案。劉鑫[4]建立了用于規(guī)劃直角邊零件下料問題的混合整數(shù)規(guī)劃模型,并求出其松弛問題的解。在齒輪優(yōu)化設(shè)計方面,宋相男[5]提出了一種基于有限元及線性規(guī)劃計算斜齒面齒輪齒面接觸區(qū)域載荷分布及嚙合剛度的方法。張少軍[6]針對一類載荷系數(shù)一定的直齒圓柱齒輪傳動設(shè)計的優(yōu)化問題,建立了非線性優(yōu)化模型,而后等價地轉(zhuǎn)化為含混合變量的線性規(guī)劃模型,并給出全局優(yōu)化方法。卜忠紅[7-8]利用基于線性規(guī)劃法計算嚙合剛度和載荷分布的改進方法。此外,在鐵路運輸方面,如占曙光[9]針對高速鐵路受干擾影響導致某區(qū)間在一段時間內(nèi)部分喪失通過能力的情況,建立考慮動車組接續(xù)的列車運行調(diào)整混合整數(shù)線性規(guī)劃模型,采用商業(yè)優(yōu)化軟件CPLEX 對模型進行求解。在裝配方面,楊楠楠[10]依據(jù)起重機裝配工藝建立裝配作業(yè)優(yōu)先順序圖,采用線性規(guī)劃法建立模型,運用Lingo 軟件進行求解,而后重新分配各工序,有效解決了起重機的裝配流水線平衡問題。
某車間有一批長180 cm 的棒料,根據(jù)所加工零件的要求,需從這批棒料中成套截取70 cm 長的毛坯不少于100 根,52 cm長的毛坯不少于100 根,35 cm 長的毛坯不多于100 根。要求合理設(shè)計下料方案,使剩下的邊角料總長度最短。根據(jù)初步估算,可能的下料方案見表1。
設(shè)計變量:以xi表示第i 種下料方案所需原材料的根數(shù)(i=1~8)。
目標函數(shù):F(X)=5x1+6x2+23x3+5x4+24x5+6x6+23x7+5x8→min。
約束條件:g1(X)=2x1+x2+x3+x4≥100,g2(X)=2x2+x3+3x5+2x6+x7≥100,g3(X)=x1+x3+3x4+2x6+3x7+5x8≤100。
該上述一般形式的模型轉(zhuǎn)化為標準形式為:求X=(x1x2x3x4x5x6x7x8x9x10x11)T,使F(X)=5x1+6x2+23x3+5x4+24x5+6x6+23x7+5x8→min。并且滿足h(X)=2x1+x2+x3+x4-x9≥100,h2(X)=2x2+x3+3x5+2x6+x7-x10≥100,h3(X)=x1+x3+3x4+2x6+3x7+5x8+x11≥100,xi≥0(i=1~11)。
在數(shù)學模型的一般形式轉(zhuǎn)換為標準形式過程中,需要注意的一些問題可以參考文獻[1]。
基于數(shù)值法求解線性規(guī)劃問題的軟件主要有Matlab、Lingo等。本文著重介紹高版本Matlab 軟件中用于求解混合整數(shù)線性規(guī)劃intlinprog 函數(shù)。其用法基本和linprog 相差不大。Matlab 中,該模型的標注寫法如下。
式中,f,x,b,beq,lb,ub,intcon 是向量,A 和Aeq 是矩陣,基本語法為x=intlinprog(f,intcon,A,b,Aeq,beq,lb,ub)。與linprog 相比,多了參數(shù)intcon,代表整數(shù)決策變量所在的位置。例如,x1和x3是整數(shù)變量,則有intcon=[1,3]。編程過程中需要注意以下事項。
(1)熟悉intlinprog 函數(shù)的基本語法,將對應參量按照一定的順序帶入語法,沒有涉及到的,可以用[]表示;
(2)如果是函數(shù)求極大值,那么需要乘以-1,轉(zhuǎn)化成求極小值;
(3)如果不等式是大于等于的,那么兩端需要乘以-1,轉(zhuǎn)化成小于等于的。
基于上述實例的2 種形式,分別基于intlinprog 函數(shù)進行編程,求解如下:
2.2.1 一般形式
2.2.2 標準形式
結(jié)果分析:兩者模型的編程結(jié)果都顯示,采用第一種方案下料25 根,采用第二種方案下料50 根,可以滿足加工零件的需求,同時使得余料最少,為425 cm。
本文基于機械優(yōu)化設(shè)計中的棒料下料實際案例,建立了線性規(guī)劃的一般模型,并轉(zhuǎn)化為標準形式;然后簡單介紹Matlab軟件中的intlinprog 函數(shù),以及一些編程注意事項;最后基于intlinprog 函數(shù)對上述案例的2 種模型進行編程求解,結(jié)果一致,相互驗證其正確性。