利用修正單純形法解線性規(guī)劃問題_第1頁
利用修正單純形法解線性規(guī)劃問題_第2頁
利用修正單純形法解線性規(guī)劃問題_第3頁
利用修正單純形法解線性規(guī)劃問題_第4頁
利用修正單純形法解線性規(guī)劃問題_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、利用單純形法解線性規(guī)化問題 動力工程系.車輛工程.王偉.20510009利用修正單純形法解線性規(guī)劃問題一 軟件示意:二 代碼說明:dim a(1 to 3, 1 to 6) as double 矩陣adim a1(1 to 3) as double 矩陣a的第一列向量dim a2(1 to 3) as double 矩陣a的第二列向量dim a3(1 to 3) as double 矩陣a的第三列向量dim a4(1 to 3) as double 矩陣a的第四列向量dim a5(1 to 3) as double 矩陣a的第五列向量dim a6(1 to 3) as double 矩陣a的第

2、六列向量dim b_(1 to 3, 1 to 3) as double 基矩陣b的逆矩陣dim xb(1 to 3) as double 基本可行解dim b(1 to 3) as double 右端向量bdim c(1 to 6) as double 檢驗(yàn)數(shù)dim cb(1 to 3) as double 基本可行解對應(yīng)的檢驗(yàn)數(shù)dim (1 to 3) as double 單純形乘子矢量dim r(1 to 6) as double 檢驗(yàn)矢量rdim r_min as double 檢驗(yàn)矢量最小值dim k_sign as integer 檢驗(yàn)矢量最小值對應(yīng)的位置dim y(1 to 3,

3、 0 to 6) as double 矩陣ydim just_vector(1 to 3) as doubledim liji_min as double 用于判斷離基變量所用值dim r_sign as integer 用于記錄離基變量對應(yīng)的位置dim main_yuan as double 用于存放主元dim erk(1 to 3, 1 to 3) as doubledim exchange_b(1 to 3, 1 to 3) 在矩陣erk與矩陣b_進(jìn)行乘法運(yùn)算時,作為矩陣b_的替換矩陣dim exchange_xb(1 to 3) 在矩陣erk與xb_進(jìn)行乘法運(yùn)算時,作為xb_的替換矩陣

4、dim iterative_time as integer 定義迭代的次數(shù)dim xb_optimization(1 to 6) as double 最優(yōu)解private sub command1_click()窗口1for iterative_time = 1 to 1000 開始了迭代循環(huán) select case k_sign case 1 if (r_sign - 3) = 3 then cb(1) = c(2) 付值給基本可行解對應(yīng)的檢驗(yàn)數(shù) cb(2) = c(3) cb(3) = c(6) xb_optimization(1) = 0 xb_optimization(2) = xb(

5、1) xb_optimization(3) = xb(2) xb_optimization(4) = 0 xb_optimization(5) = 0 xb_optimization(6) = xb(3) end if case 2 if (r_sign - 3) = 1 then cb(1) = c(2) 付值給基本可行解對應(yīng)的檢驗(yàn)數(shù) cb(2) = c(5) cb(3) = c(6) xb_optimization(1) = 0 xb_optimization(2) = xb(1) xb_optimization(3) = 0 xb_optimization(4) = 0 xb_optim

6、ization(5) = xb(2) xb_optimization(6) = xb(3) end if case 3 if (r_sign - 3) = 2 then cb(1) = c(2) 付值給基本可行解對應(yīng)的檢驗(yàn)數(shù) cb(2) = c(3) cb(3) = c(6) xb_optimization(1) = 0 xb_optimization(2) = xb(1) xb_optimization(3) = xb(2) xb_optimization(4) = 0 xb_optimization(5) = 0 xb_optimization(6) = xb(3) end if end

7、select for i = 1 to 3 計算單純形乘子矢量 (i) = cb(1) * b_(1, i) + cb(2) * b_(2, i) + cb(3) * b_(3, i) next i for j = 1 to 6 計算檢驗(yàn)矢量r r(j) = c(j) - (1) * a(1, j) + (2) * a(2, j) + (3) * a(3, j) next j r_min = r(1) 預(yù)先給定一個值 k_sign = 1 for i = 1 to 6 找出最小檢驗(yàn)值 if (r(i) r_min) then r_min = r(i) 最小檢驗(yàn)值 k_sign = i 最小檢驗(yàn)

8、值所在位置,對應(yīng)進(jìn)基矢量位置 end if next i if r_min 0 then for i = 1 to 3 對應(yīng)進(jìn)基矢量所得的y值 y(i, k_sign) = b_(i, 1) * a(1, k_sign) + b_(i, 2) * a(2, k_sign) + b_(i, 3) * a(3, k_sign) next i for i = 1 to 3 確定離基變量 if y(i, k_sign) 0 then just_vector(i) = y(i, 0) / y(i, k_sign) end if next i for i = 1 to 3 if (just_vector(

9、i) 0 then liji_min = just_vector(i) 預(yù)先給定一個值 exit for end if next i r_sign = 4 for i = 1 to 3 找出最小檢驗(yàn)值 if (just_vector(i) 0) then liji_min = just_vector(i) 最小檢驗(yàn)值 r_sign = i + 3 最小檢驗(yàn)值所在位置,對應(yīng)進(jìn)基矢量位置 end if next i main_yuan = y(r_sign - 3, k_sign) if main_yuan 0 then select case (r_sign - 3) 計算矩陣erk case

10、1 erk(1, 1) = 1 / main_yuan erk(2, 1) = -y(2, k_sign) / main_yuan erk(3, 1) = -y(3, k_sign) / main_yuan for i = 2 to 3 for j = 1 to 3 erk(j, i) = a(j, i + 3) next j next i case 2 erk(1, 2) = -y(1, k_sign) / main_yuan erk(2, 2) = 1 / main_yuan erk(3, 2) = -y(3, k_sign) / main_yuan for j = 1 to 3 erk(

11、j, 1) = a(j, 4) next j for j = 1 to 3 erk(j, 3) = a(j, 6) next j case 3 erk(1, 3) = -y(1, k_sign) / main_yuan erk(2, 3) = -y(2, k_sign) / main_yuan erk(3, 3) = 1 / main_yuan for i = 1 to 2 for j = 1 to 3 erk(j, i) = a(j, i + 4) next j next i end select end if for i = 1 to 3 給矩陣exchange_b(i, j)付值 for

12、 j = 1 to 3 exchange_b(i, j) = b_(i, j) next j next i for i = 1 to 3 計算b的新可逆矩陣b_ for j = 1 to 3 b_(i, j) = erk(i, 1) * exchange_b(1, j) + erk(i, 2) * exchange_b(2, j) + erk(i, 3) * exchange_b(3, j) next j next i for i = 1 to 3 給exchange_xb(i)付值 exchange_xb(i) = xb(i) next i for i = 1 to 3 計算基本可行解 xb

13、(i) = erk(i, 1) * exchange_xb(1) + erk(i, 2) * exchange_xb(2) + erk(i, 3) * exchange_xb(3) y(i, 0) = xb(i) next i else msgbox (優(yōu)化完畢!) exit for end ifnext iterative_timecommand2.enabled = true 使能按鈕command3.enabled = true 使能按鈕form1.text1(1).text = xb_optimization(1) 顯示最優(yōu)解x1form1.text1(2).text = xb_opt

14、imization(2) 顯示最優(yōu)解x2form1.text1(3).text = xb_optimization(3) 顯示最優(yōu)解x3form1.text1(4).text = xb_optimization(4) 顯示最優(yōu)解x4form1.text1(5).text = xb_optimization(5) 顯示最優(yōu)解x5form1.text1(6).text = xb_optimization(6) 顯示最優(yōu)解x6form1.text1(0).text = c(1) * xb_optimization(1) + c(2) * xb_optimization(2) + c(3) * xb_

15、optimization(3) + c(4) * xb_optimization(4) + c(5) * xb_optimization(5) + c(6) * xb_optimization(6) 顯示最優(yōu)值zform1.text1(7) = iterative_time - 1 顯示迭代次數(shù)end subprivate sub command2_click()end 結(jié)束程序end subprivate sub command3_click() form1.show 調(diào)用優(yōu)化結(jié)果顯示窗口end subprivate sub form_load()dim i, j as integerfor

16、 i = 1 to 3 付值給系數(shù)矩陣a for j = 1 to 6 a(i, j) = quotiety_a(j + 6 * (i - 1).text 付值給系數(shù)矩陣a next jnext ifor i = 1 to 6 將矩陣a列分塊(a1,a2,a3,a4,a5,a6) for j = 1 to 3 select case i case 1 a1(j) = a(j, i) case 2 a2(j) = a(j, i) case 3 a3(j) = a(j, i) case 4 a4(j) = a(j, i) case 5 a5(j) = a(j, i) case 6 a6(j) =

17、a(j, i) end select next jnext ifor i = 1 to 3 付值給基矩陣b的逆矩陣b_ for j = 1 to 3 select case i case 1 b_(j, i) = a4(j) case 2 b_(j, i) = a5(j) case 3 b_(j, i) = a6(j) end select next jnext ifor i = 1 to 6 付值給檢驗(yàn)數(shù) select case i case 1 c(1) = c_quotiety(0).text case 2 c(2) = c_quotiety(1).text case 3 c(3) = c_quotiety(2).text case 4 c(4) = c_quotiety(3).text case 5 c(5) = c_quotiety(4).text case 6 c(6) = c_quotiety(5).text end selectnext ib(1) = b_quotiety(0).text 付值給右端向量bb(

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論