//Logo Image
作者:徐業良(1995-015),推薦:徐業良(2001-07-06),最近更新:徐業良(2004-10-29)
附註:本文為元智大學機械工程研究所最佳化設計課程教材,僅限於教學上學生個人使用,原書初版由宏明書局印行。

最佳化方法在工程應用上的問題

儘管現在已有許多強健而有效率的解最佳化設計問題的數值演算法及電腦軟體,在實際工程最佳化設計的應用上,你可能會碰到的問題卻往往不是那麼單純,不是直接寫成電腦程式輸入檔交由電腦軟體解決那麼簡單。你的最佳化設計模型在交由電腦求解之前,常須先作一番處理,而許多時候你沒有辦法直接使用電腦軟體,而必須要根據你的最佳化設計問題的特性,自行設計演算法。

這一章便在討論實際工程問題應用上使用最佳化方法或最佳化數值軟體,可能會遇到的問題。最後並以省油車設計為實例,討論機械系統最佳化設計的程序。

1.     使用最佳化數值電腦軟體

解任何工程最佳化設計問題的第一步,自然是建立與檢驗模型。先前討論了有系統地建立模型的方法,並介紹如何以單調性分析法檢驗、分析最佳化設計模型,獲取此模型的各種定性資訊。在最佳化設計模型建立且檢驗無誤後,下一步便是去使用電腦軟體或設計演算法來解這個模型了。

在工程最佳化設計問題中,時常會因為變數使用的單位不同,而所得變數的數值也就不一樣。但在利用最佳化數值演算法做求解運算時,一個最佳化設計模型事實上是沒有單位的,各種演算法僅在作純粹數值的運算,而沒有以任何物理概念判定這些變數的量是大或小,合理或不合理。然而如果兩個變數的比例差異過大,即使在物理意義上完全沒有問題,在演算法的收斂性、計算的精確度等等卻都會產生極大的影響。因此使用最佳化數值電腦軟體前,一個重要的步驟是去檢查各個變數是否符合比例,設計者依各變數代表的物理意義,對其大小應有一大略估計,如變數之間數值比例差異過大,則必須作一個變數變換程序,使各個變數「符合比例(scaling)

舉個簡單的例子,如果我們要求下面函數的最小值,

        min.                                                                                (1)

這個函數的圖形是一個長寬比為10,000的狹長橢圓,也就是最佳解上兩個變數的數值相差在10,000倍左右。以最佳化演算法解這樣的問題很可能會發生數值問題,另外所求得的解準確度也可能有問題。例如假設所使用計算器的精確度或演算法中止要件的容許差設在0.01時,對第一項中的變數準確度已經相當足夠,對第二項中的變數來說卻是相當不準確。如果把式(1)中的變數作某種形式的正規化,例如作一個簡單的線性變數變換,

                                                                                                        (2)

使原函數成為

        min.                                                                                 (3)

(3)中的目標函數便成了一個正圓,即使用梯度法也可以輕易地在一次迭代中求得最佳解,且對兩個變數沒有精確度不一致的情況。

然而這種簡單的線性變數變換,在某些情況下可能反而會影響到變數的精確度。例如假設某個設計變數x的範圍在[200.1242, 200.1806]的區間之內,倘使作一個線性變數變換=x/200.1242的範圍變成在[1, 1.000282]的區間之內。如果所使用的計算器有7位小數的精確度,那麼經過變數變換之後反而只剩3位有效數字可以表現變數的變化量[Gill, Murray, and Wright, 1989]

因此在如果我們可以估計設計變數的上下界,如,一個比較好的線性變數變換方式反而是,如在前例之中令,如此變數的值便在[0, 1]區間之中,而享有所有七位小數的精確度。

除了設計變數常需要作正規化之外,限制條件函數有時也需要作正規化,否則兩個限制條件的函數值差距過大,如,也可能也會造成數值精確度上的問題。本書前面的章節裡在建立最佳化設計模型時,限制條件一概是以表示,也就是所謂“非負零的形式(non-negative null form)”。而另外一種表示形式是所謂“非負單位形式(non-negative unit form),如,這個形式不等號右方的函數值為1,因此在形成這個形式時便有正規化的意味。然而在實際工程問題上碰到的限制條件,有時很難表示成這個形式,或者在這個形式中設計變數大量出現在分母,反而增加數值運算上的困難。

許多電腦軟體容許設計者自行設定中止要件中的容許誤差,變數數值比例設定良好,設定容許誤差才較有比較的基準。容許誤差的設定自然和你要求的最佳解精確度有關係,容許誤差設得太大,可能演算法尚未真正收斂便已停止了,而演算法容許誤差設得太小,卻也會浪費許多不必要的運算時間。

另外電腦軟體可否成功地解出你的最佳化設計模型,迭代起始點的設定也有關鍵性的影響。大部分最佳化數值演算法從一可行解出發會有比較穩定的收斂表現,且如果迭代起始點越接近最佳解,演算法收斂的速度自然越快,而且由不同的初始值出發可能會收斂到不同的區域最小值。因此在使用最佳化電腦軟體時,設計者應根據各設計變數的物理意義,設定各變數可行或接近可行區域的初始值。在實際應用上你會發現,如果你的最佳化設計模型中等式限制條件越多,你越難找到一個可行解來當作迭代初始點,如果你的最佳化設計模型中等式限制條件個數甚至超過設計變數的數目的話,那就必須要重新檢討你的最佳化設計模型了。

如果你的最佳化設計模型限制太嚴,以致於最佳化電腦軟體無法找到一個可行解,通常的策略是先鬆弛一些不重要的限制條件,或者放鬆限制條件內限制的參數,再重新求解,以檢討是因為哪些限制條件太嚴而造成沒有可行解。

2.     有內隱式函數的最佳化設計問題

工程最佳化設計問題中常常包含所謂內隱式函數,這些函數沒有簡單的外顯形式,而需要以電腦模擬分析或實驗來求得。最佳化設計問題中有這樣的函數的話,通常便很難直接寫成電腦程式輸入檔,交由最佳化電腦軟體解出最佳解。怎麼樣可以有效率地解出這樣的工程最佳化設計問題,事實上是一個值得研究的領域。

2.1 內隱式函數的處理

在建立最佳化設計模型時,遇到這類內隱式函數,還是要先給它一個符號形式的函數表示方式,如,雖然函數g(x)可能表示作一個實驗,或者作一次電腦模擬分析。雖然這個函數沒有外顯形式的表示式,在這個函數中,設計者仍然可以依其物理意義設定各個變數在函數中的單調性符號,先前介紹的單調性分析還是可以按正常程序進行

在實際求最佳化設計模型數值解時,設計者還是可以嘗試是否能由簡化的理論分析,為這個內隱式函數找到一個外顯形式的近似式。在設計變數個數不多的情況下,甚至可以考慮先計算出幾個設計點的函數值,然後以曲線適應(curve fitting)的方式求其外顯形式的近似式,得到外顯形式的近似式後,便可以直接套入電腦數值分析軟體中求解了。當然這樣求出來得解,並不是理論最佳解,但是在工程最佳化設計問題中,設計者通常也並不在乎是否得到理論最佳解,只要設計的性能表現能有相當進步,最佳化的目的便達成了一大半。事實上在許多數值處理經驗上發現,使用一個合理的外顯形式近似函數得到的最佳值,和原先內隱式函數問題的理論最佳值差距並不大[Hsu, Sheppard, and Wilde, 1996]。而在最佳化迭代過程中,得到更多數值資訊後,可以隨時修正你的外顯形式近似函數,也就是所謂序列近似法的觀念。

如果實在無法轉化成外顯形式函數,設計者便需要自行設計演算法來解這個問題了。解這一類有內隱式函數的最佳化設計問題,先前介紹的序列近似法應該是首先考慮的演算法概念。在工程最佳化設計問題的應用上自行設計演算法時一個重要的原則,是儘量和現成的最佳化電腦軟體相結合,如此不論是所需耗費的時間、成本,與解數值問題之精確性、強健性,都比自行撰寫電腦程式為佳。而序列近似法一類的演算法,不論是線性、二次、倒數、保守、非線性等各種近似方式,都在使迭代過程中每一個子問題,是現成的最佳化電腦軟體可以解的外顯形式的最佳化設計問題

自行設計的演算法通常也會牽涉到最佳化數值電腦軟體和其他計算、分析軟體的輸出入介面的問題,系統間的整合常會是工程問題最佳化過程中的一項重要工作,如結構最佳化設計問題,如何整合幾何模型、有限元素分析、與最佳化電腦軟體,使其成為一個自動化的過程,便是一個最明顯的例子。

2.2 以有限差分法計算梯度向量

大部分的數值演算法在求解的過程中,會利用到目標函數或限制條件的梯度向量。一般的建議是如果可以求出精確的解析形式梯度向量,為了演算法的收斂性及運算效率,應該儘量使用解析形式的梯度計算,因此在各種工程最佳化設計問題中,靈敏度分析常常是研究的重點

但是在工程最佳化設計問題中經常碰到的內隱式函數,如果函數值是經由實驗求得時,梯度向量通常無法以解析形式計算,而如果函數值是經由電腦模擬求得時,以解析形式計算梯度值可能需要將原先的分析程式作大幅度的修改。因此以有限差分法計算梯度向量在工程最佳化設計問題中是極為常見的作法,然而在作有限插分時插分步長的決定對梯度計算的精確度有十分重要的影響,梯度計算不精確的話,原先收斂性很好的演算法也可能變得不穩定。

有限插分法誤差的來源有二,「截短誤差(truncation error)」和「消去誤差(cancellation error)。例如函數f的一次微分,可用前項插分公式表示如下:

                                                                                        (4)

事實上函數f一次微分的正式定義是時式(4)的極限值,因此插分步長h越小,前項插分式(4)越接近f'的真值。在實際狀況下有限插分法的插分步長h自然不可能趨近於零,因為計算器的有效數字位數不夠,h仍然是一個有限值,在計算一次微分時因插分步長h不趨近零而產生的誤差便叫做截短誤差。

那們插分步長h越小越好囉?也並非如此,舉一個簡單的例子,假設函數f有四位有效數字,如果插分步長h太小,使得前三位有效數字都相同,如圖1所示,代入式(4)計算時,只剩下一位有效數字!這樣造成的誤差,便稱作消去誤差。

1. 消去誤差

因此作有限插分時插分步長的決定,主要和函數值計算的精確度有關,消去誤差在以實驗或電腦模擬分析來計算函數值、精確度不夠時,尤其應該特別注意,否則經有限插分法計算出來的一次微分值,只是一串由誤差產生沒有意義的數字而已。。如前段例子中,決定插分步長一個粗略的原則是,在四個精確的有效數字中,插分步長h固然越小越好,但仍必須至少使得有兩位有效數字不同,如此代入式(4)計算,相減結果,至少還能保持兩位有效數字,也就是原函數值計算一半的精確度。

另外如果在最佳化設計問題中,函數的梯度值有解析形式的表示法可以輕易求出,則可以考慮以有限插分法計算其二次的Hessian矩陣,如此便可採用收斂快速的牛頓法形態的演算法,這種作法也被稱作「離散牛頓法(discrete Newton's method)[Gill, Murray, and Wright, 1989]。如前面對牛頓法的討論中提到,許多牛頓法形態的演算法僅試圖製造一個近似的牛頓方向,對於Hessian矩陣精確度的敏感程度並不高,所以離散牛頓法一般來說都有不錯的收斂性。

3. 對最佳化結果的闡釋

當最佳化數值電腦軟體或自行設計的演算法,成功地計算出工程設計問題的最佳解之後,設計者的工作並沒有結束。和使用所有的數值分析電腦軟體一樣,設計者首先必須考慮這個數值最佳解在物理意義上是否合理,並且檢查在這個最佳解上,哪些限制條件是有效的?哪些是無效的?這和單調性分析的結果是否相同?各自代表什麼設計法則?

另外一個重要的觀念是,即使在確定這個數值最佳解在精確度、物理意義上都是可信賴的,設計者仍不應立刻無條件地接受這個解。這個最佳解之所以為“最佳”,實在是在設計者所設定的最佳化設計模型之下的產物。設計者這時所應思考的問題是,在這個最佳解上所有有效的限制條件是否都有存在的必要?是否能經由某些設計上的改變,鬆弛甚至刪除掉部分有效限制條件,便能得到更佳的解?

這個步驟事實上代表對原先所設定的設計條件作一個檢討,設法修改、鬆弛、甚至刪除掉部分有效限制條件,是否可大幅提升設計的性能?相對的是否也必須付出相當成本?哪些限制條件對設計整體的性能表現並無顯著影響?

要回答這些問題,最佳設計點上的「靈敏度分析(sensitivity analysis)」及「參數分析(parametric analysis)是重要的工具。由最佳設計點上的靈敏度,可以看出這個設計是否強健(robust),也就是如果實際產品有製造或其他誤差造成設計點的些微變動,是否會大幅影響目標函數及限制條件的值?哪些變數是最敏感的變數?參數分析則在改變系統參數的值,重新解這個最佳化設計問題,觀察系統參數的改變對最佳解、目標函數值有何影響?哪些限制條件中參數的改變對設計影響最大?其間是否可以找到新的系統定性資訊?

得到數值最佳解並不是最佳化設計的唯一目的或者最終目的,能夠經由最佳化設計,對所設計、分析系統的性質得到更深入的了解,才是一個完整的最佳化設計程序。

4. 機械系統最佳化設計-以省油車設計為例

這一節裡將以省油車設計為實例,討論機械系統最佳化設計的過程。國際自動車工程學會中華民國分會近幾年來每年都為大專學生舉辦「省油車大賽」,由大專機械科系學生自行設計、製造最省油的汽油引擎車,目的在培養大專機械科系學生設計、實作的能力,全國每年有二十幾所大專院校機械科系學生參加這項比賽。

省油車的設計基本上是一個典型最佳化設計的問題-如何得到最佳的耗油率。當然省油車設計的成功,引擎的改良、傳動機構的設計、乃至於自行製造的工藝水準、車手臨場的駕駛技術等等實務細節,都是十分重要的因素,然而本節純由最佳化的角度出發,由概念性的層次來討論這個機械系統最佳化設計問題。

省油車比賽的規則每年略有修改,比賽場地也有更換,這裡假設比賽的場地是400公尺田徑場跑道,每部車須在30分鐘內繞行跑道25圈,完成全程10公里的比賽,也就是說平均時速要在每小時20公里以上。

以下的分析分成兩個部分,首先是假設比賽過程中車子為定速行駛,討論影響省油性的因素,第二部份則討論“加速-熄火-加速”的變速度駕駛策略對省油設計的影響。

4.1 定速行駛模型的建立

首先我們要建立省油車分析的最佳化數學模型。汽油引擎一般有兩個重要的引擎特性曲線來描述這個引擎的性能,一個是在一般汽車型錄、雜誌上常見的常見的馬力扭力曲線,另一個則是所謂「燃料消耗率(fuel consumption rate, fc)」曲線,要計算引擎的耗油量,燃料消耗率曲線是非常重要的依據。

所謂燃料消耗率是指每單位時間所消耗的油料。引擎在某一工作狀態下的燃料消耗率,是當時的引擎轉速w和當時的輸出馬力ps的函數,一般引擎在中低轉速約20003500轉之間,部分負載(也就是油門未全開,輸出馬力不到該轉速最大馬力)的操作狀態下燃料消耗率最低。然而這裡我們要求的目標函數是所謂的“耗油率(fuel efficiency, fe),指每公升汽油可以跑多少公里,在省油車比賽中總共要跑10公里,所以省油車比賽的目標函數耗油率fe可以寫成

                                                                                                    (5)

在定速行駛狀況下,fc不隨時間改變,因此式(5)可以寫成

                                                                           (6)

其中v是省油車定速行駛的速度。

前面提到引擎在某一工作狀態下的fc,是當時的引擎轉速w和當時的輸出馬力ps的函數,fc可以說是一個標準的內隱式函數,引擎的燃料消耗率不可能有對wps解析形式的函數,完全需要以實驗的方式求出。前面提到過許多處理內隱形式函數的方法,但是因為fc僅是兩個變數的函數,所以這裡直接取多個實驗點,採曲線適應的方式,求出一個外顯形式的近似函數如下:

            (7)

在作曲線適應時,曲線函數形式的選擇十分重要,例如式(7)中以wps的二次多項式交乘的形式作曲線適應,如果多項式的項數不夠,那麼適應出來的曲線可能無法適切地近似原函數,但是如果項數太多,則需要更多的實驗點才能曲線適應出來。所以在作曲線適應之前,設計者須對所要適應曲線大致的形狀有初步了解,才能選定較為適當的形式。此外實驗點位置的選擇也很重要,因為曲線適應得出的函數,僅在包含實驗點的範圍之內近似,如果超過這個範圍,曲線適應出的函數表現便完全無法預測了。其他關於曲線適應的方法與應注意事項,可進一步參考曲線適應相關書籍[Lancaster and Salkauskas, 1986]

接下來則要討論馬力、轉速和省油車其他設計變數的關係。省油車行駛中所需要的馬力,等於行駛阻力乘上速度,在定速行駛下行駛阻力僅有摩擦阻力與風阻兩項,因此

                                                                       (8)

其中m是車輪滾動摩擦係數,m是車子加上駕駛人的重量,是車子的風阻係數,而a則是車頭正投影面積,G是重力加速度。引擎轉速w則可以下式表示

                                                                                                     (9)

其中r為車輪半徑,gr為傳動系統減速比。

最後省油車設計可以表示成如下的最佳化設計問題:

        max.        

        s.t.           

                       

                       

                                                                                                           (10)

(10)中共有10個設計變數,均用小寫字母表示,設計參數和常數則用大寫字母表示。

數學模型建立之後,下一步是以單調性分析檢驗這個模型。單調性分析的結果,設計變數m, m, cd, a都沒有從下被界限住,因此這是一個限制條件不足的模型。

這個單調性分析的結果是十分合理的,因為如果m, m, cd, a這四個設計變數沒有下界的話,最理想的省油車自然是選擇完全沒有摩擦的車輪、車重為零、風阻係數為零、車頭正投影面積也為零,這樣的車子耗油率為無限大。這當然是不合理的情況,實際上這四個設計變數必定有下界,假設其下界分別為mmin, M, Cd, A,最佳解也必定發生在這些下界上,也就是說這四個下界都是有效的限制條件,因此可以把mmin, M, Cd, A這四個參數直接代入,式(10)便成為

        max.        

        s.t.           

                       

                       

                                                                                                           (11)

4.2 求解最佳值

1是對一90c.c.四行程機車引擎作實驗,取得多個燃料消耗率實驗點,經曲線適應後求得之參數,另外並就現實製造能力考量,定出mmin, M, Cd, A等四個參數,則是比賽規則中的最小平均速度。將表1中的參數代入式(11)中,再將整個數學模型以最佳化電腦軟體求解,可以得到表2中的最佳設計。從表2中可以看出,當車子以每秒7.20公尺的速度(約26km/hr)的速度行駛時,每一公升汽油可行駛114.64公里,是省油車最佳的耗油率。

1. 省油車設計各項參數

M

A

4.052

-3.521

12.82

-1.035

.222

1.926

-0.056

-4.520

.476

.010

120kg

.35

.09m2

5.6m/sec

2. 省油車最佳化設計結果

fe

ps

w

fc

r

gr

v

114.64

0.381hp

2200rpm

3.77cc/min

0.350m

19

7.20m/sec

在這裡有一個離散式變數的問題,在省油車大賽中,大部分學校以自行車車輪作為省油車車輪,然而自行車車輪半徑有固定的標準尺寸如下表:

3. 自行車車輪標準尺寸

25

26

27

0.318m

0.330m

0.343m

以這三個車輪標準尺寸作離散變數的枝界法搜尋,發現一個有趣的結果,三個離散值的子問題最佳耗油率fe的結果都相同,究其原因,發現車輪半徑r與減速比gr這兩個變數,僅在滿足而已,只要為定值fe便不會改變。因此此處選擇較不易屈曲的25吋車輪,此時gr=12.37,可經由調整輪胎齒輪盤對引擎齒輪箱輸出軸之間的減速比來達成。

4.3 定速行駛的靈敏度分析與參數分析

前一節的分析結果中,車速必須保持在定速7.2m/sec,然而如果車手實際行駛時速度有所偏差,省油率會相差多少?這便要討論在這個最佳解上,省油率對設計變數v的靈敏度。給設計變數v一個1%的擾動,也就是說車速為m/sec時,得到耗油率的降低不到0.02%,可以知道這個設計速度是相當強健的,些許速度改變對耗油率影響並不顯著。

前一節中自行設定的幾個參數mmin, M, Cd, A,也在這裡作一個參數分析,看看每個參數對省油率的影響如何。表4是參數分析的結果,由此表中可以發現,即使對這四個參數給予很大的擾動,對省油率的影響十分有限。事實上進一步分析發現,對整體耗油率的影響,引擎燃料消耗率fc這個限制條件影響最大,也就是說決定以定速行駛時,在這個最佳設計點上,與其花費大量精力企圖進一步降低車重和風阻,不如把設計重點放在引擎校調,改進引擎本身的燃料消耗率。另外路面摩擦係數也是一個重要參數,尤其是不同等級路面摩擦係數往往差異甚大,對整體耗油率會有顯著影響。

4. 省油車定速行駛的參數分析

 

mmin

M

Cd

A

基準值

0.010

120kg

0.35

0.09m2

比較值

0.009

110kg

0.20

0.05m2

耗油率差異

+1.7%

+1.5%

+0.69%

+0.44%

4.3 變速行駛

除了校調引擎外,省油車競賽中另一個可能大幅提高省油率的方式,是改變駕駛策略,以“加速-熄火-加速-熄火”的模式行駛,如此加速期間耗油率雖超過原先定速行駛模式的耗油率,但是熄火滑行時完全不必耗油,整體來說耗油率還是可能有所提升。這一節裡便對這種可能的駕駛策略作最佳化的分析。

如圖2所示,將比賽的四百公尺跑道分成兩個半圈,每個半圈是一個“加速-熄火”的過程,我們的目的是要分析每個半圈200公尺中,加速、減速時間t1t2各是多少?最高速、最低速各是多少?加速期間速度對時間的曲線為何?

2. 變速度行駛,速度對時間的曲線

這個問題已經成為「最佳控制(optimal control)[Bryson and Ho, 1975]的問題,要求變數v對時間的最佳曲線。解這個問題,我們必須把式(11)的模型,加速部分和減速部分的時間各分成n個離散區間,這時變數fcpswv都成了時間的函數。這個最佳化設計模型可改寫如式(12),其中足標i1n,表示加速部分,足標jn+12n,表示熄火滑行部分。

        max.        

        s.t.           

                       

                       

                       

                       

                                                                                                    (12)

與式(11)相較,式(12)中加速部分的行駛阻力多了加速時的慣性力一項,熄火滑行時的減速度則是決定於摩擦和風阻兩項阻力,最後表示熄火滑行過程的末速度必須等於下一次“加速-熄火”循環的初速度。

將式(12)中離散區間個數n100,我們得到一個大型的最佳化數學模型(約400個變數,400個限制條件),代入最佳化數值軟體中求解,可以得到每一個時間點的速度值,如圖3所示。其中加速時間共13.5秒,行駛86.2公尺,初速度為3.9m/sec,末速度為8.0m/sec,熄火滑行時間共19.9秒,行駛113.8公尺。這樣的駕駛策略下耗油率提升至每公升汽油可跑160.95公里,較等速行駛時大幅提升約40%。得出這個結果看起來固然十分理想,但如何達成這樣的駕駛模式卻是個大問題,除了反覆訓練駕駛人之外,可能可以設計以電腦控制的方式,依照這個最佳模式控制油門加速,與引擎電門熄火、再發動。

3. 車速對時間之柱狀圖

5是在變速行駛的模式下,對參數mmin, M, Cd, A的參數分析結果。在這個駕駛模式中因為有加速的關係,車體重量的敏感度顯然較等速行駛模式時為高,因此車體結構的輕量化便成了重要考量。

5. 省油車變速行駛的參數分析

 

mmin

M

Cd

A

基準值

0.010

120kg

0.35

0.09 m2

比較值

0.009

110kg

0.20

0.05 m2

耗油率差異

+4.7%

+7%

+2.3%

+2.8%

參考資料

Bryson, A. E., and Ho, Y.-C., 1975. Applied Optimal Control, Optimization, Estimation and Control, Hemisphere Publishing Corporation.

Gill, P. E., Murray, W., and Wright, M. H., 1989. Practical Optimization, Eighth Printing,  Academic Press, San Diego, California.

Hsu, Y. L., Sheppard, S. D., Wilde, D. J., 1996. “The Explicit Approximation Method for Design Optimization with Implicit Constraints,” Engineering Optimization, Vol. 27, No. 1, p.21~42.

Lancaster, P., and Salkauskas, K., 1986. Curve and Surface Fitting, An Introduction, Acdemic Press, Orlando, Florida.