涂 榮 陳順懷
武漢理工大學 交通學院,湖北 武漢,430063
基于Delphi的Free!ship二次開發初探
涂 榮 陳順懷
武漢理工大學 交通學院,湖北 武漢,430063
Free!ship軟件以其功能強大、界面友好以及免費使用等優勢得到廣泛應用。對船舶初步設計的工作而言,希望在完成線型設計前,該軟件也能對主尺度進行確定,而Free!ship現有功能還不能滿足這一要求。為此利用Free!ship提供的二次開發環境,在Free!ship 2.6版本原有功能的基礎上,對軟件進行二次開發。以主尺度優化模塊及用Delphi編程確定添加靈便型油輪主尺度為例,提出了開發的方法及步驟,為進一步的研究和開發該軟件提供了基礎。
船舶設計軟件;Free!ship軟件;二次開發;Delphi
Free!ship軟件是由荷蘭學者Martjin van Engeland等人負責開發的船舶工程軟件[1],可以用來設計各種常用船舶以及一些特殊船舶。Free!ship軟件近年來以其強大的功能、友好的界面以及號稱“綠色軟件”和免費使用等優勢在國外船舶設計領域得到廣泛的應用。Free!ship使用非常方便,簡單易學。該軟件可以生成船舶三維圖和型線圖,并且可任意添加水線、站線以及橫剖線,還可以進行船舶初步設計階段的一些計算,為后續設計提供了便利;它的數據輸出和輸入格式具有開放性,為導入其它軟件進行修改和復雜計算提供了方便。此外,該軟件的網站提供了大量的共享資源,由軟件設計者和使用者上傳的各種類型船舶模型共220多個供設計者們參考。為滿足船舶工程和其它各種不同用戶的需要,Free!ship 2.6版本為完全綠色的版本,開放源碼,為使用者和船舶設計人員提供了可進行二次開發的功能。
從總體上來說,Free!ship軟件實現的功能比較強大,并給我們的船舶設計帶來了很大方便。但是,對于船舶設計者而言,我們希望在完成線型設計之前,該軟件也能完成主尺度確定這一初步設計的重要工作。所以,就這一點而言Free!ship軟件提供的現有功能還不能非常好地滿足我們的要求。這就有必要在原有功能的基礎上對Free!ship軟件進行功能的擴充和程序的進一步開發。基于以上原因,本文在這方面進行了Free!ship二次開發的探索。
經過了近2~3年來的努力,研發人員在原有的基礎上開發出了新的版本Delftship,由于添加了一些裝配的模塊使該軟件成為了收費的船舶工程商業軟件。但是,新版本沒有外部接口不可進行二次開發,并且主要的功能沒有太大改變,甚至把部分原來Free!ship 2.6里面的功能添加到付費模塊里。因此,選擇了Free!ship 2.6版本作為二次開發的基礎。
Free!ship程序是采用編譯速度非常快、具有強大的數據庫開發能力的Delphi編譯而成的。程序具有模塊性好,獨立性強和連接簡單的特點。提供主程序和各個功能模塊的子程序代碼。如需要改進某個單獨的功能,只要在實現該功能的*.pas文件里直接編譯即可。如果要添加新的功能模塊,就需要在主程序里先添加子程序的模塊和聲明,并添加編譯子程序即可。最重要的,也是二次開發的關鍵點就是該軟件提供了Freepackage.dpk文件的組件包,包含了該軟件所有組件。通過編譯,這些組件都可以直接應用。使得在原軟件上進行開發更容易。
本文采用Delphi7.0軟件作為開發的工具,其一是因為Free!ship是采用該軟件編制的,為開發提供方便的接口。其二,該軟件功能強大、使用方便可以滿足開發的需要[2]。
本文選擇現在流行的靈便型油船作為實例,在Free!ship中進行開發,添加靈便型油船主尺度回歸和尺度優化兩個新模塊,主要的步驟見圖1。

圖1 二次開發過程框圖
3.1 二次開發前的設置
在進行各種功能模塊添加以前,應該先對Free!ship文件夾下的“FreePackage.dpk”文件進行編譯。
并且,應該將已經生成的控件包“FreePackage.bpl”文件添加至工程所使用的“包”中,這樣才能順利的進行編譯。
此外,在進行編譯時也應注意,建立新的子程序時,最好保持該軟件原有結構的統一性,新的文件名和工程名都與其它的子程序保持協調一致。
3.2 尺度回歸模塊建立
根據相關論文、資料以及網站上收集的40多艘10 000~50 000 t油輪的主尺度資料,建立主尺度回歸模型[3],模型均轉化為單變量線性回歸模型。通過對主尺度數據的處理和分析可以得到靈便型油船的主尺度回歸公式:

對上面回歸公式進行相關性檢驗,回歸公式(1)中DW和L的相關系數R=0.964 3,回歸公式(2)中1/DW和1/B的相關性系數R=0.945 0,回歸公式 (3)中1/DW和1/D的相關性系數R=0.941 6,回歸公式(4)中DW和T的相關系數R=0.859 2。以上數據表明,上述回歸公式中自變量和函數值均為強相關,可以用來進行預測。
根據回歸公式編制尺度回歸程序,并添加至Free!ship中,具體步驟如下:首先,編譯好“主尺度初步確定”的程序,程序的界面見下圖,再將該程序添加到Free!ship文件夾下。
接著,添加“Dimension”的子菜單,同時,對該選項的各種屬性進行設定。最后,在主程序里進行引用。功能模塊的添加就完成了,如圖2所示。

圖2 尺度回歸模塊
3.3 尺度優化模塊建立
在船舶噸位、初始航速和機型等確定以后,接下來的工作是,根據運輸需要和營運條件,擬定一系列船型方案,并對其進行技術性能和經濟性能的分析、計算和評價,從中選出技術上可行,且比較先進,營運經濟效益優良的船型方案。
3.3.1 優化模型[4]
設計變量取為x1=L,x2=B,x3=D,x4=T,x5=Cb,而x=(x1,x2,x3,x4,x5)T。
油船是盈利型的船舶,經濟性能好是本船設計追求的主要目標,故選取單位排水量船價、凈現值、投資回收期和平均年費用作為目標函數,即f1(x)=C/Δ,f2(x)=NPV,f3(x)=PBP,f4(x)=AAC。這是一個多目標優化的問題,采用加權的方法,將其轉化為單目標問題進行求解[5]。
f=a1·CC/Δ-a2·CNPV+a3·CPBP+a4·CAAC
式中,ai為各指標對應權重,由設計者根據各指標的重要性來選取;CC/Δ為單位排水量造價C的無量綱系數;CNPV為凈現值NPV的無量綱系數;CPBP為動態投資回收期PBP的無量綱系數;CAAC為平均年費用AAC的無量綱系數。
約束條件包括尺度約束:船長、船寬、型深、吃水和方形系數的上下限值。規定的約束:長寬比、寬深比、長深比。性能約束包括:快速性、穩性、橫搖周期、艙容和重量校核等共17項[6]。
綜上所述,可得到該船型主尺度優選問題的數學模型:

式中,x=(x1,x2,x3,x4,x5)T。
3.3.2 優化算法
上述優化模型為一個有約束非線性最優化問題的數學模型。近年來,各種優化方法發展迅速,尤其是智能算法。但是,各種流行的智能算法由于它們本身的特點,選擇具有唯一解的可靠的數值解法:步長加速法[7,8](也稱模式搜索法)作為求解問題的方法。
首先,采用乘子罰函數法將有約束的非線性優化問題轉化為無約束問題。再采用改進的步長加速方法[9]來求問題的最優解,可以大幅提高計算效率。
3.3.3 主尺度優化模塊的添加
該模塊下添加了幾個計算功能選項,包括:性能校核選項,年運輸能力的計算,年運輸成本和利潤的計算選項、經濟性計算選項以及優化和優化后船舶參數的輸出。通過這些選項,設計者輸入已知的一些參數,就可以得到最后目標函數的表達式,再選擇進行優化。優化后的結果用來進行計算各項指標,得到優化后船舶的方案。以下是經濟性計算的兩個主要功能界面。
在設計各個功能模塊時采用了友好的界面設置,其中大量數據都是由設計者根據設計時的不同情況自行選擇和輸入參數,例如貸款利率、各個目標函數的權重以及不同時期運價等。

圖3 年運輸成本及年利潤

圖4 年運輸能力
以航行于中國沿海湛江至上海的20 000 t油船作為實例進行上述步驟的計算和優化[10],在該計算實例中取a1=0.2,a2=0.2,a3=0.4,a4=0.2。以下為優化結果。

表1優化結果
選取最優的解作為船舶尺度方案即垂線間長145.25 m,船寬25 m,型深13.6 m,吃水8.9 m,方形系數為0.81。型船垂線間長為166 m,船寬為29.5 m,吃水為7.6 m。
將優化的結果通過該軟件原有的Lackenby功能選項,通過Lackenby變化實現型線的生成。
取設計船與型船的Cm相同,將型船的型線導入后,直接將尺度優化結果導入Lackenby選項里進行簡單的Lackenby變化(見圖5),得到與設計船要求的主要參數相一致的船舶。然后,通過3個方向上的比例,即

進行比例變換(見圖6和圖7),就可完成型船水線以下部分的改造工作,水上部分再由設計者參考型船進行自行設計,就可得到設計船的線型圖。
完成上述步驟后就可以進行后續的計算,也可以根據需要導出各種格式的數據和圖形文件。由于添加了尺度確定及優化的模塊,能在該軟件中快速地進行初步設計時的尺度確定,并且能夠與該軟件的其它功能相得益彰,加快了初步設計的速度,大大提高了設計效率。

圖5 Lackenby變化

圖6 變化前的線型圖

圖7 變化后的線型圖
本文探索了Free!ship軟件二次開發的可行性,并以一種船型為實例對開發的步驟進行了敘述。在掌握數據資料比較多的情況下,設計者也可以根據自己的實際情況,建立各種船舶的主尺度回歸的數據庫。上述主尺度優化的模塊目前也只能應用于靈便型油輪,對于其它的船型,需要輸入添加包含各種船型不同系數的數據庫才能進行優化。Free!ship軟件功能強大使用方便,本文只是在二次開發的方法和實現上進行了探索,還有待進行更加深入的分析和研究。
[1] ENGLAND M V.Free!ship manual(version 2.6)[J/OL].http://www.marin.ntnu.no/havromsteknologi/Freeship/Freeship_Manual_2.6.pdf,2006.
[2] 雷夢龍.Delphi中數據集對象化的設計和實現[J].計算機技術與發展,2006,6:157-159.
[3] 金平仲,榮煥宗.船舶主尺度的回歸分析[J].船舶工程,2004,26(5):8-18.
[4] 張付喜.沿海成品油船技術經濟論證[D].大連:大連理工大學,2006.
[5] 張仁頤.船舶工程經濟學[M].上海:上海交通大學出版社,2001.
[6] 劉寅東,唐煥文.船舶設計決策理論與方法[M].北京:高等教育出版社,2006.
[7] LEWIS R M,TORCZON V,TROSSET M W.Direct search methods:then and now[J].Journal of Computational and Applied Mathematics,2000,124(1/2):191-207.
[8] LEWIS R M,TORCZON V.Pattern search methods for bound constrained minimization [J].SIAM Journal on Optimization,2000,10(3):917-941.
[9] 吳緒權.探索步長加速法的改進措施[J].中國水運(理論版),2006,8:182-183.
[10]張付喜,馬坤,紀卓尚.沿海成品油船船型技術經濟論證[J].船海工程,2006,35(2):11-14.
Re-developing Free!ship Software by Using Delphi
Tu Rong Chen Shun-huai
School of Transportation,Wuhan University of Technology,Wuhan 430063,China
Free!ship as one ship design tool,has been widely utilized due to its robust functions,userfriendly interface and available free use.As for the work of preliminary ship design,it is desirable that it can determine the ship's principle dimension prior to the completion of ship lines design.Free!ship can not meet this requirement,however,an effort was made to re-develop it on the basis of its original functions and perfect reproduction environment.For this purpose,flexible oil tanker was studied as an example and two modules(i.e.principle dimension regression module and dimension optimization module)were added into the Free!ship by programming with Delphi to determine the principle dimensions.The development method and procedure are established and they provide a basis for further development and research.
ship design software;Free!ship;redevelopment;Delphi
TK421
A
1673-3185(2009)05-67-04
2009-03-16
涂 榮(1983-),女,碩士。研究方向:現代船舶設計方法。E-mail:rongt@163.com
陳順懷(1966-),男,教授。研究方向:船舶與海洋結構物設計制造