久久99精品久久久久久琪琪,久久人人爽人人爽人人片亞洲,熟妇人妻无码中文字幕,亚洲精品无码久久久久久久

單純形法理論

時間:2019-05-13 22:33:26下載本文作者:會員上傳
簡介:寫寫幫文庫小編為你整理了多篇相關的《單純形法理論》,但愿對你工作學習有幫助,當然你在寫寫幫文庫還可以找到更多《單純形法理論》。

第一篇:單純形法理論

單純形法

單純形法不用計算函數的導數,只需要計算目標函數的函數值,因此計算比較簡單,幾何概念也比較清晰,屬于直接法的無約束最優化方法。所謂n維歐氏空間E中的單純形,是指在n維空間中由n?1個線性獨立的點構成的簡單圖形或凸多面體。

基本思想:根據問題的維數n選取n?1個線性獨立的點,然后計算這n?1個點的函數值并進行比較,確定其中的最大值的點及函數的下降方向,再設法找到一個新的好點替換函數值最大的點,從而構成新的單純形。這個過程不斷進行,新的單純形將向極小點收縮。經過若干次迭代后,即可得到滿足收斂條件的極小點。

基本過程包括:反射、擴張和壓縮。下面以二維問題為例來說明單純形法的求優過程。設二維函數f(X)在平面上有線性獨立的三個點Xh,Xl,Xg,構成單純形(三角形),計算這三個點的函數值,若

nf(Xh)?f(Xg)?f(Xl)

則說明Xh是最差點,Xl是最好點,Xg為次差點,迭代應該找出好的點Xr來替換最差點Xh,構成新的單純形。Xr在Xh與除去最差點Xh以后所有頂點的形心點Xc連線的延長線上進行選取。

Xr?Xc??(Xc?Xh)

式中:?——反射系數,一般取??1。

這個步驟稱為反射。通常,反射點Xr的取法是使Xr點Xr點稱為最差點Xh的反射點,至Xc點的距離等于Xc點到Xh的距離。

反射點Xr對新單純形構造的影響,有以下幾種情況:(1)擴張

1若反射點的函數值f(Xr)小于最好點的函數值f(Xl),即當 ○f(Xr)?f(Xl)

時,說明所取的方向是正確的,可進一步擴大效果,繼續沿XhXr向前進行擴張,在更遠處取一點Xe,并滿足 Xe?Xc??(Xr?Xc)

式中:?——擴張系數,??1.2~2.0,一般取??2.0。

如果f(Xe)?f(Xl),說明擴張有利,就用Xe代替最差點Xh,構成新的單純形。否則,說明擴張不利,舍棄Xe,仍以Xr代替最差點Xh,構成新的單純形。

2若f(Xr)?f(Xl)不成立,則不能進行擴張,此時如果 ○f(Xr)?f(Xg)

則用反射點Xr替換最差點Xh,構成新的單純形。(2)壓縮

1若反射點的函數值f(Xr)小于最差點的函數值f(Xh),但大于次差點的函數值○f(Xg),即當

f(Xg)?f(Xr)?f(Xh)

時,則表示Xr點走得太遠,需縮回一些,即進行壓縮,并且得到的壓縮點應為

Xs?Xc??(Xr?Xc)

式中:?——壓縮系數,常取??0.5。這時若f(Xs)?f(Xh)

則用壓縮點Xs代替最差點Xh,構成新的單純形。

2若反射點的函數值f(Xr)大于最差點的函數值f(Xh),即當 ○f(Xr)?f(Xh)

時,應當壓縮更加多些,即將新點壓縮至Xh與Xc之間,這時所得的壓縮點應為

Xs??Xc??(Xc?Xh)?Xc??(Xh?Xc)

如果f(Xs?)?f(Xh),說明不能沿Xh的反射方向搜索,應進行縮邊。(3)縮邊

使單純形向最好點進行收縮,即使最好點Xl不動,其余各頂點皆向Xl移近為原距離的一半。

Xi?Xi?Xl

i?0,1,?,n 2從以上各步得到新的單純形后,再重復開始各步,逐漸縮小單純形直至滿足精度要求為止。

初始單純形的形成:

構成單純形的頂點應是線性獨立的,否則,如二維問題,三個點在一條直線上,就變成二維問題了,即在一條直線上找極小點的問題,稱為退化。為防止退化,一般取成等邊三角形,因為它是周長一定前提下包圍面積最大的布點方式。

把二維等邊三角形推廣到n維的情況是n?1個點中任兩個點的距離都相等,這種單純形就稱為正規單純形。選取正規單純形作初始單純形的方法如下:

給定一個初始點X0?[x1,x2,?,xn]T,其余n個點可取為:

X1?[x1?p,x2?q,x3?q?,xn?q]T

??

Xn?[x1?q,x2?q,x3?q?,xn?p]T

即第i個頂點的第i個坐標分量比初始點增加p,其他分量增加q。設正規單純形任意兩頂點的距離等于c,這時p,q的公式推導如下。對于點X2和X1,有X2?X1?c即

(x1?q?x1?p)2?(x2?p?x2?q)2?(x3?q?x3?q)2???(xn?q?xn?q)2?c

2化簡得

(q?p)2?(p?q)2?2(p?q)2?c2

對于X1和X0,有X1?X0?c,即

(x1?p?x1)2?(x2?q?x2)2?(x3?q?x3)2???(xn?q?xn)2?c2

化簡得

p2?(n?1)q2?c2

聯立求解得 p?(n?1?n?1)c

n2(n?1?1)c

n2q?初始單純形也可以采用下面的方法:設目標函數f(X)為n維向量,因此單純形應有n?1個頂點X1,X2,?,Xn?1。構造單純形時,現在n維空間中選取初始點X1(0)(盡量靠近最優點),從X1(0)出發沿各坐標軸方向ei、以步長h找到其余n個頂點X(0)j(j?2,3,…,n?1):

(0)X(0)?Xj1?hei

式中:ei——第i個坐標軸的單位向量;

h——步長,一般取值范圍為0.5~15.0,接近最優點時要減小。構成初始單純形的步長可取1.6~1.7。

構成初始單純形后,可按以下步驟進行:

(k)(k)(1)計算各頂點的函數值并進行比較,找出最好點Xl(k),最差點Xh,次差點Xg,(k)(k)(k)以及除最差點外其它各點的形心Xn?2。求Xh對形心點Xn?2的反射點:

(k)(k)(k)(k)Xn?3?Xn?2??(Xn?2?Xh)

(k)(k)(k)(k)(2)比較Xn,如果反射點Xn還好,即進行擴張,得擴張點?3和Xl?3比最好點Xl為:

(k)(k)(k)(k)Xn?4?Xn?2??(Xn?3?Xn?2)

(k)(k)(k)(k)(k)得到擴張點Xn,否則?4后,若f(Xn?4)?f(Xl),用Xn?4代替Xh,并轉步驟(5)(k)(k)用Xn代替。X?3h后轉入步驟(5)(k)(k)若f(Xn?3)?f(Xl),即反射點比最好點差,則轉下一步。

(k)(k)(3)將反射點Xn?3與次差點Xg比較,如果f(Xn?3)?f(Xg),則用Xn?3代替最(k)(k)(k)差點Xh,并轉步驟(5);若f(Xg)?f(Xn?3)?f(Xh),則用Xn代替X?3h后進行

(k)(k)(k)(k)(k)(k)壓縮,否則直接進行壓縮,得壓縮點為:(k)(k)(k)(k)Xn?5?Xn?2??(Xh?Xn?2)

(k)(k)(k)(k)(k)(4)求得壓縮點Xn后與最差點比較,若,則用Xf(X)?f(X)X?5hn?5hn?5代替(k)以后轉下一步;否則使單純形向最好點Xl(k)收縮,收縮后的單純形頂點為: XhX(jk)?Xl(k)?0.5(X(jk)?Xl(k))

j?1,2,…,n?1

然后轉下一步。

(5)進行收斂性檢驗。若

?1n?12?(k)(k)??f(X)?f(X)??jn?2???? ??n?1j?1?則停止迭代并輸出Xl(k)及f(Xl(k)),否則使k?k?1后轉第1步。式中?為任意的小(k)數,Xn?2為形心。

12例

試用單純形法求解目標函數f(X)?4(x1?5)2?(x2?6)2的極小值。

Function f=fun(x)syms

x1

x2

f = 4*(x1-5)^2+(x2-6)^2;clear

x1= 0 x2= 0 z=0 e= [1;1] h=1.6 X0=[x1;x2] X1=X0 + h* e X2=X0 + h*e X3=X0 + h*e

第二篇:單純形法綜述

單純形法綜述

zy1415104-曹文亮

單純形法是1947年由George Bernard Dantzing(1914-2005)創建的,單純形法的創建標志著線性規劃問題的誕生。線性規劃問題是研究在線性約束條件下,求線性函數的極值問題。然而,對這類極值問題,經典的極值理論是無能為力的,只有單純形法才能有效解決這類極值問題的求解。線性規劃是數學規劃的一個重要分支,也是最早形成的一個分支,線性規劃的理論與算法均非常成熟,在實際問題和生產生活中的應用非常廣泛;線性規劃問題的誕生標志著一個新的應用數學分支——數學規劃時代的到來。過去的60年中,數學規劃已經成為一門成熟的學科。其理論與方法被應用到經濟、金融、軍事等各個領域。數學規劃領域內,其他重要分支的很多問題是在線性規劃理論與算法的基礎上建立起來的,同時也是利用線性規劃的理論來解決和處理的。由此可見,線性規劃問題在整個數學規劃和應用數學領域中占有重要地位。因此,研究單純形法的產生與發展對于認識整個數學規劃的發展有重大意義。

單純形法是從某一基可行解出發,連續地尋找相鄰的基可行解,直到達到最優的迭代過程,其實質是解線性方程組。

概述:

根據單純形法的原理,在線性規劃問題中,決策變量(控制變量)x1,x2,…x n的值稱為一個解,滿足所有的約束條件的解稱為可行解。使目標函數達到最大值(或最小值)的可行解稱為最優解。這樣,一個最優解能在整個由約束條件所確定的可行區域內使目標函數達到最大值(或最小值)。求解線性規劃問題的目的就是要找出最優解。最優解可能出現下列情況之一:①存在著一個最優解;②存在著無窮多個最優解;③不存在最優解,這只在兩種情況下發生,即沒有可行解或各項約束條件不阻止目標函數的值無限增大(或向負的方向無限增大)。

無最優解與無可行解是兩個不同的概念。無可行解是指原規劃不存在可行解,從幾何的角度解釋是指 線性規劃問題的可行域為空集; 無最優解則是指線性規劃問題存在可行解,但是可行解的目標函數達不到最優值,即目標函數在可行域內可以趨于無窮大(或者無窮小)。無最優解也稱為無限最優解,或無界解。

無最優解判別定理:在求解極大化的線性規劃問題過程中,若某單純形表的檢驗行存在某個大于零的檢驗數,但是該檢驗數所對應的非基變量的系數列向量的全部系數都為負數或零,則該線性規劃問題無最優解。

無窮多最優解判別原理:若線性規劃問題某個基本可行解所有的非基變量檢驗數都小于等于零,但其中存在一個檢驗數等于零,那么該線性規劃問題有無窮多最優解。

退化與循環:如果在一個基本可行解的基變量中至少有一個分量為零,則稱此基本可行解是退化的基本可行解。產生的原因:在單純形法計算中用最小比值原則確定換出變量時,有時存在兩個或兩個以上相同的最小比值θ,那么在下次迭代中就會出現一個甚至多個基變量等于零。

退化可能出現以下情況:

① 進行進基、出基變換后,雖然改變了基,但沒有改變基本可行解(極點),目標函數當然也不會改進。進行若干次基變換后,才脫離退化基本可行解(極點),進入其他基本可行解(極點)。這種情況會增加迭代次數,使單純形法收斂的速度減慢。

② 在特殊情況下,退化會出現基的循環,一旦出現這樣的情況,單純形迭代將永遠停留在同一極點上,因而無法求得最優解。事實上,已經有人給出了循環的例子。

單純形法的一般解題步驟可歸納如下:①把線性規劃問題的約束方程組表達成典范型方程組,找出基本可行解作為初始基本可行解。②若基本可行解不存在,即約束條件有矛盾,則問題無解。③若基本可行解存在,從初始基本可行解作為起點,根據最優性條件和可行性條件,引入非基變量取代某一基變量,找出目標函數值更優的另一基本可行解。④按步驟3進行迭代,直到對應檢驗數滿足最優性條件(這時目標函數值不能再改善),即得到問題的最優解。⑤若迭代過程中發現問題的目標函數值無界,則終止迭代。

用單純形法求解線性規劃問題所需的迭代次數主要取決于約束條件的個數。現在一般的線性規劃問題都是應用單純形法標準軟件在計算機上求解,對于具有106個決策變量和104個約束條件的線性規劃問題已能在計算機上解得。

求解步驟:

(1)確定初始基可行解

① 從線性規劃標準形的系數矩陣中能直接找出m個線性獨立的單位向量;

② 對約束條件全為“<=”連接的LP,化為標準形,左端添加松弛變量后即形成一個單位子矩陣;

③ 約束條件中含有“<=”或“=”連接的方程,在插入剩余變量后找不到單位矩陣,則必須采用“人造基”法,也稱“人工變量”法。

(2)最優性檢驗及解的判別準則

① 最優性判定準則 ② 多重最優解判定準則 ③ 無界最優解判定準則(3)換基迭代

① 確定換入變量 ② 確定換出變量 ③ 樞運算(旋轉運算)

單純形法-正文:

根據單純形法的原理,在線性規劃問題中,決策變量(控制變量)x1,x2,…x n的值稱為一個解,滿足所有的約束條件的解稱為可行解。使目標函數達到最大值(或最小值)的可行解稱為最優解。這樣,一個最優解能在整個由約束條件所確定的可行區域內使目標函數達到最大值(或最小值)。求解線性規劃問題的目的就是要找出最優解。

可能出現下列情況之一:①存在著一個最優解;②存在著無窮多個最優解;③不存在最優解,這只在兩種情況下發生,即沒有可行解或各項約束條件不阻止目標函數的值無限增大(或向負的方向無限增大)。

要縮小對最優解的搜索范圍,就必須認識最優解的一般性質,最優解如果存在的話,則它必然處于可行區域的邊界上。

任何一項約束條件的邊界方程是用“=”號來替換該約束條件中的“≤”或“≥”號而得到的。每一個邊界方程確定一個超平面。因此,可行區域的邊界是由那些滿足一個或同時滿足幾個邊界方程(即處在作為邊界的一個或幾個超平面上)的可行解所組成,而且最優解必在其中。最優解不僅是在可行區域的邊界上,而且也在這個區域的一個隅角上。一個可行解,如果不處在由另兩個可行解連接起來的任何線段上,它就是一個角點可行解。如果連接兩個角點可行解的線段處在可行區域的邊界上,這兩個角點可行解就稱為相鄰的角點可行解。角點可行解具有下列三個重要性質:①如果存在著一個最優解,那么它必定是角點可行解。如果存在有多個最優解,那么至少有兩個最優解必定是相鄰的角點可行解。②只存在有限個數的角點可行解。③如果一個角點可行解按目標函數值來衡量時比其所有的相鄰角點可行解更好一些,那它就比所有其他角點可行解都更好,也就是最優解。

上述這些性質構成單純形法的原理基礎。最后一個性質的重要性在于它為一個角點可行解是否是最優解提供了一種簡便的檢驗標準,因而毋需列舉所有的可行解。單純形法正是利用了這個性質,只要檢查少數的角點可行解,并且一旦這個最優性檢驗獲得通過就可立即停止運算。

單純形法的運算步驟可歸結為:①起始步驟──在一個角點可行解上開始。②迭代步驟──移動至一個更好一些的相鄰角點可行解(根據需要反復進行這一步驟)。③停止法則──在當前角點可行解比所有相鄰角點可行解都更好些時停止。當前角點可行解就是一個最優解。

單純形法的優點及其成功之處在于它只需要較少的有限次數的迭代,即可找到最優解。

改進單純形法:

原單純形法不是很經濟的算法。1953年美國數學家G.B.丹齊克為了改進單純形法每次迭代中積累起來的進位誤差,提出改進單純形法。其基本步驟和單純形法大致相同,主要區別是在逐次迭代中不再以高斯消去法為基礎,而是由舊基陣的逆去直接計算新基陣的逆,再由此確定檢驗數。這樣做可以減少迭代中的累積誤差,提高計算精度,同時也減少了在計算機上的存儲量。

對偶單純形法:

(Dual Simplex Method)1954年美國數學家C.萊姆基提出對偶單純形法。單純形法是從原始問題的一個可行解通過迭代轉到另一個可行解,直到檢驗數滿足最優性條件為止。對偶單純形法則是從滿足對偶可行性條件出發通過迭代逐步搜索原始問題的最優解。在迭代過程中始終保持基解的對偶可行性,而使不可行性逐步消失。設原始問題為min{cx|Ax=b,x≥0},則其對偶問題(Dual Problem)為 max{yb|yA≤c}。當原始問題的一個基解滿足最優性條件時,其檢驗數cBB-1A-c≤0。即知y=cBB-1(稱為單純形算子)為對偶問題的可行解。所謂滿足對偶可行性,即指其檢驗數滿足最優性條件。因此在保持對偶可行性的前提下,一當基解成為可行解時,便也就是最優解。

對偶單純形法的基本原則:在保持對偶可行的前提下進行基變換——每一次迭代過程中取出基變量中的一個負分量作為換出變量去替換某個非基變量(作為換入變量),使原始問題的非可行解向可行解靠近。

第三篇:單純形法matlab程序

算法實現與分析

算法1.單純形法 具體算例:

minz=?3x1+x2+2x3 3x1+2x2?3x3=6 x1?2x2+x3+x5=4

x1,x2,x3≥0標準化后:

min z=?3x1+x2+2x3+Mx4+Mx5

3x1+2x2?3x3+x4=6 x1?2x2+x3+x5=4

x1,x2,x3,x4,x5≥0用單純形法求解,程序如下: clear clc

M=1000000;

A=[3,2,-3,1,0;1,-2,1,0,1];%系數矩陣 C=[-3,1,2,M,M,0];%價值矩陣 B=[6;4];Xt=[4 5];

for i=1:length(C)-1 D=0;

for j=1:length(Xt)

D=D+A(j,i)*C(Xt(j));

end

xi(i)=C(i)-D;end s=[];

for i=1:length(xi)

if xi(i)<0 s=[s,i];

end end

f=length(s);h=1;

while(f)

for k=1:length(s)j=1;A x=[];

for i=1:length(Xt)

if A(i,s(k))>0 x(j)=i;j=j+1;

end end x

if(length(x)+1==1)break;end y=1 x

for i=1:length(x)

if B(x(i))/A(x(i),s(k))

end end y=x(y);end

y1=Xt(y);%??3?±?á? s k

aa=A(y,s(k))%s(k)?a??è?±?á? A(y,:)=A(y,:)./aa;B(y,:)=B(y,:)./aa;z=[];

for i=1:length(Xt)z=[z,i];end

z z(y)=[];z Xt

for i=1:length(z);yz=-A(z(i),s(k))

A(z(i),:)=A(z(i),:)+A(y,:).*yz B(z(i))B(y)yz

B(z(i))=B(z(i))+B(y).*yz end

for i=1:length(Xt)

if Xt(i)==y1 Xt(i)=s(k);break

end end Xt

disp('×a??oó')A=A B=B AB=[A,B];

for i=1:length(C)D=0;

for j=1:length(Xt)D=D+AB(j,i)*C(Xt(j));

end

xi(i)=C(i)-D;

end xi s=[];

for i=1:length(xi)-1

if xi(i)<0 s=[s,i];

end

end s

vpa([A,B;C]);f=length(s);h=h+1;

if h==5

break

end end

-xi(length(xi))

第四篇:單純形法課程論文

最優化方法課程論文

題目:單純形法的發展及其應用系別:理學院專業:信息與計算科學姓名:班級:信息

101班

單純形法的發展及其應用

一. 單純形法簡介:

單純形法,求解線性規劃問題的通用方法。單純形是美國數學家G.B.丹齊克于1947年首先提出來的。它的理論根據是:線性規劃問題的可行域是 n維向量空間Rn中的多面凸集,其最優值如果存在必在該凸集的某頂點處達到。頂點所對應的可行解稱為基本可行解。單純形法的基本思想是:先找出一個基本可行解,對它進行鑒別,看是否是最優解;若不是,則按照一定法則轉換到另一改進的基本可行解,再鑒別;若仍不是,則再轉換,按此重復進行。因基本可行解的個數有限,故經有限次轉換必能得出問題的最優解。如果問題無最優解也可用此法判別。

二. 單純形法在線性規劃中的應用 1.單純形法解線性規劃問題

在生產管理和經濟活動中,經常遇到這些問題,如生產計劃問題,即如何合理利用有限的人、財、物等資源,以便得到最好的經濟效果;材料利用問題,即如何下料使用材最少;配料問題,即在原料供應量的限制下如何獲取最大利潤;勞動力安排問題,即如何用最少的勞動力來滿足工作的需要;運輸問題,即如何制定調運方案,使總運費最小;投資問題,即從投資項目中選取方案,使投資回報最大等等。對于這些問題,都能建立相應的線性規劃模型。事實上,線性規劃就是利用數學為工具,來研究在一定條件下,如何實現目標最優化。單純形法是求解線性規劃問題的通用方法。

(1)單純形法解線性規劃問題的理論根據是:

線性規劃問題的可行域是 n維向量空間Rn中的多面凸集,其最優值如果存在必在該凸集的某頂點處達到。頂點所對應的可行解稱為基本可行解。

(2)單純形法的基本思想是:

先找出一個基本可行解,對它進行鑒別,看是否是最優解;若不是,則按照一定法則轉換到另一改進的基本可行解,再鑒別;若仍不是,則再轉換,按此重復進行。因基本可行解的個數有限,故經有限次轉換必能得出問題的最優解。如果問題無最優解也可用此法判別。

(3)單純形法的一般解題步驟可歸納如下:

①把線性規劃問題的約束方程組表達成典范型方程組,找出基本可行解作為初始基本可行解。②若基本可行解不存在,即約束條件有矛盾,則問題無解。③若基本可行解存在,從初始基本可行解作為起點,根據最優性條件和可行性條件,引入非基變量取代某一基變量,找出目標函數值更優的另一基本可行解。④按步驟3進行迭代,直到對應檢驗數滿足最優性條件(這時目標函數值不能再改善),即得到問題的最優解。⑤若迭代過程中發現問題的目標函數值無界,則終止迭代。(4)概述

根據單純形法的原理,在線性規劃問題中,決策變量(控制變量)x1,x2,…x n的值稱為一個解,滿足所有的約束條件的解稱為可行解。使目標函數達到最大值(或最小值)的可行解稱為最優解。這樣,一個最優解能在整個由約束條件所確定的可行區域內使目標函數達到最大值(或最小值)。求解線性規劃問題的目的就是要找出最優解。

最優解可能出現下列情況之一:①存在著一個最優解;②存在著無窮多個最優解;③不存在最優解,這只在兩種情況下發生,即沒有可行解或各項約束條件不阻止目標函數的值無限增大(或向負的方向無限增大)。

單純形法的一般解題步驟可歸納如下:①把線性規劃問題的約束方程組表達成典范型方程組,找出基本可行解作為初始基本可行解。②若基本可行解不存在,即約束條件有矛盾,則問題無解。③若基本可行解存在,從初始基本可行解作為起點,根據最優性條件和可行性條件,引入非基變量取代某一基變量,找出目標函數值更優的另一基本可行解。④按步驟3進行迭代,直到對應檢驗數滿足最優性條件(這時目標函數值不能再改善),即得到問題的最優解。⑤若迭代過程中發現問題的目標函數值無界,則終止迭代。

用單純形法求解線性規劃問題所需的迭代次數主要取決于約束條件的個數。現在一般的線性規劃問題都是應用單純形法標準軟件在計算機上求解,對于具有10^6個決策變量和10^4個約束條件的線性規劃問題已能在計算機上解得。

2.線性規劃問題的標準化

使用單純形法求解線性規劃時,首先要化問題為標準形式 所謂標準形式是指下列形式:

maxz??cj?1njxj

?n??aijxj?bi(i?1,?,m)s?t??j?1

?x?0(j?1,2,?,n)?j當實際模型非標準形式時,可以通過以下變換化為標準形式: ①當目標函數為minz??cjxj時,可令Z′=-Z,而將其寫成為

j?1nminz????cjxj

j?1n求得最終解時,再求逆變換Z=-Z′即可。

②當s·t·中存在ai1x1?ai2x2???ainxn?bi形式的約束條件時,可引進變量

?xn?1?bi?(ai1x1?ai2x2???ainxn)??xn?1?0便寫原條件成為

?ai1x1?ai2x2???ainxn?xn?1?bi ?x?0?n?1其中的xn+1稱為松馳變量,其作用是化不等式約束為等式約束。同理,若該約束不是用“≤”號連接,而是用“≥”連接,則可引進松馳變量

?xn?1?(ai1x1?ai2x2???ainxn)?bi ??xn?1?0使原條件寫成

?ai1x1???ainxn?xn?1?bi ??xn?1?0

3.單純形法迭代原理(1)確定初始可行解

① 當線性規劃問題的所有約束條件均為≤號時,松弛變量對應的系數矩陣即為單位矩陣,以松弛變量為基變量可確定基可行解。

② 對約束條件含≥號或=號時,可構造人工基,人為產生一個m×m單位矩陣用大M法或兩階段法獲得初始基可行解。

(2)最優性檢驗與解的判別(目標函數極大型)

① 當所有變量對應的檢驗數均非正時,現有的基可行解即為最優解。若存在某個非基變量的檢驗數為零時,線性規劃問題有無窮多最優解;當所有非基變量的檢驗數均嚴格小于零時,線性規劃問題具有唯一最優解。② 若存在某個非基變量的檢驗數大于零,而該非基變量對應的系數均非正,則該線性規劃問題具有無界解(無最優解)。③ 當存在某些非基變量的檢驗數大于零,需要找一個新的基可行解,基要進行基變換。

4.確定初始可行解

確定初始的基本可行解等價于確定初始的可行基,一旦初始的可行基確定了,那么對應的初始基本可行解也就唯一確定,為了討論方便,不妨假設在標準型線性規劃中,系數矩陣A中前m個系數列向量恰好構成一個可行基,即A=(BN),其中B=(P1,P2,?Pm)為基變量x1,x2,?xm的系數列向量構成的可行基,N=(Pm+1,Pm+2,?Pn)為非基變量xm+1,xm+2,?xn的系數列向量構成的矩陣。

所以約束方程AX=b就可以表示為AX=(BN)??XB??=BXB+NXN=b ?XN?用可行基B的逆陣B-1左乘等式兩端,再通過移項可推得:XB=B-1b-B-1NXN

若令所有非基變量XN=0,則基變量XB=B-1b

?B?1b?由此可得初始的基本可行解X=??

?0?

5.最優性檢驗

?B?1b?假如已求得一個基本可行解X=?將這一基本可行解代入目?,?0??B?1b?-1標函數,可求得相應的目標函數值Z=CX=(CBCN)??=CBBb

?0?其中CB=(c1,c2,cm), CN=(cm+1,cm+2,cn)分別表示基變量和非基變量所對應的價值系數子向量。

要判定Z=CBB-1b是否已經達到最大值,只需將XB=B-1b-B-1NXN代入目標函數,使目標函數用非基變量表示,即:

?X?Z=CX=(CBCN)?B??XN?=CBXB+CNXN=CB(B-1b-B-1NXN)+CNXN

CBB-1b+σNXN?CBB-1b+(σm+1,σm+1,?xm+1???xm+2? σn)?????x?n?其中?N=CN-CBB-1N=(?m+1,?m+1,?n)稱為非基變量XN的檢驗向量,它的各個分量稱為檢驗數。若σN的每一個檢驗數均小于等于0,即σN≤0,那么現在的基本可行解就是最優解。

6.解的判別

定理1:最優解判別定理

對于線性規劃問題maxZ=CX,D=?X?Rn/AX=b,X?0?,若某個基本可行解所對應的檢驗向量?N=CN-CBB-1N?0,則這個基本可行解就是最優解。

定理2:無窮多最優解判別定理

?B?1b?若X=??是一個基本可行解,所對應的檢驗向量?0??N=CN-CBB-1N?0,其中存在一個檢驗數σm+k=0,則線性規劃問題有無窮多最優解。定理3:無最優解判別定理

?B?1b?若X=??是一個基本可行解,有一個檢驗數?m+k?0,但是?0?B-1Pm+k?0,則該線性規劃問題無最優解。

7.基本可行解的改進

如果現行的基本可行解X不是最優解,即在檢驗向量?N=CN-CBB-1N中存在正的檢驗數,則需在原基本可行解X的基礎上尋找一個新的基本可行解,并使目標函數值有所改善。具體做法是:

(1)先從檢驗數為正的非基變量中確定一個換入變量,使它從非基變量變成基變量(將它的值從零增至正值)。

(2)再從原來的基變量中確定一個換出變量,使它從基變量變成非基變量(將它的值從正值減至零)。

?xm+1???xm+2?σn)?????x?n?由此可得一個新的基本可行解,由Z?CBB-1b+(σm+1,σm+1,可知,這樣的變換一定能使目標函數值有所增加。

8.換入變量的確定--最大增加原則

把基檢驗數大于0的非基變量定為入基變量。若有兩個以上的σj>0,則選其中的σj最大者的非基變量為入基變量。

從最優解判別定理知道,當某個σj>0時,非基變量xj變為基變量不取零值可以使目標函數值增大,故我們要選基檢驗數大于0的非基變量換到基變量中去(稱之為入基變量)。若有兩個以上的σj>0,則為了使目標函數增加得更大些,一般選其中的σj最大者的非基變量為入基變量。

9.換出變量的確定--最小比值原則

把已確定的入基變量在各約束方程中的正的系數除以其所在約束方程中的常數項的值,把其中最小比值所在的約束方程中的原基變量確定為出基變量。

即若

?b?bxk?min?i|aik?0??l?aik?alk

則應令xl出基。其中bi是目前解的基變量取值,aik是進基變量xk所在列的各個系數分量,要求僅對正分量做比,(這由前述作法可知,若aik≤0,則對應的xi不會因xk的增加減值而成為出基變量)。

10.兩階段法

用大M法求解含人工變量的LP時,用手工計算不會碰到麻煩,但用電子計算機求解時,對M就只能在計算機內輸入一個機器最大字長的數字,這就可能造成一種計算上的誤差,為克服這個困難,對添加人工變量后的LP分兩個階段來計算,稱為兩階段法。

第一階段:不考慮原問題是否存在基可行解,給原LP加入人工變量,并構造僅含人工變量的目標函數Minw,然后用單純形法求解,若得w=0,說明原LP存在基可行解,可進行第二階段計算,否則,停止計算。

第二階段:將第一階段計算得到的最終單純形表除去人工變量,將目標函數行的系數換成原LP的目標函數,作為第二階段計算的初始表。然后按照前面的方法進行計算。

11.大M法

大M法首先將線性規劃問題化為標準型。如果約束方程組中包含有一個單位矩陣I,那么已經得到了一個初始可行基。否則在約束方程組的左邊加上若干個非負的人工變量,使人工變量對應的系數列向量與其它變量的系數列向量共同構成一個單位矩陣。以單位矩陣為初始基,即可求得一個初始的基本可行解。

為了求得原問題的初始基本可行解,必須盡快通過迭代過程把人工變量從基變量中替換出來成為非基變量。為此可以在目標函數中賦予人工變量一個絕對值很大的負系數-M。這樣只要基變量中還存在人工變量,目標函數就不可能實現極大化。

以后的計算與單純形表解法相同,M只需認定是一個很大的正數即可。假如在單純形最優表的基變量中還包含人工變量,則說明原問題無可行解。否則最優解中剔除人工變量的剩余部分即為原問題的初始基本可行解。

三. 結論 單純形法的創建標志著線性規劃的誕生。單純形法的創建統一了以往運輸問題和營養問題等的算法,同時推進線性規劃理論的發展。反過來,理論的發展也刺激算法的更新。線性規劃在這樣理論與算法相互促進和相互作用中發展。單純形法有效地提升了數學規劃的應用。很多重大理論誕生之初遭到人們的質疑和反對,但是線性規劃不一樣,一誕生就得到人們的青睞。這是因為,單純形算法的計算簡潔明了,計算結果精確有效。它求出的是最優解,超乎很多人的期望和想象力。因此被各個領域頻頻應用來提高工作效率、節

約能量和減少損失,使利潤最大化。線性規劃加速了數學規劃的普及。線性規劃是有史以來傳播速度最快的學科之一。誕生后很快就普及五大洲,并幾乎應用到所有的行業,故后興起的整數規劃、二次規劃和非線性規劃等倍受關注、期待和歡迎。從而,促進了數學規劃的普及。

第五篇:單純形法C語言程序代碼

長 春 工 業 大 學

課程設計程序代碼

課程設計名稱 運籌學課程設計 專 業 信息管理與信息系統 班 級 130506班 學 生 姓 名 于松南、張鑫蕊、趙改玲、趙海潮

指 導 教 師

王亞君、王忠吉

2015年7月3日

#include #include

int m;//記錄約束條件方程組的個數 int n;//記錄未知量的個數 float M=1000000.0;float A[100][100];

//用于記錄方程組的數目和系數

float C[100];

//用于存儲目標函數中各個變量的系數 float b[100];

//用于存儲常約束條件中的常數 float CB[100];

//用于存儲基變量的系數 float seta[100];

//存放出基與入基的變化情況 float cn[100];

//存儲檢驗數矩陣 float x[100];int num[100];

//用于存放出基與進基變量的情況 float Z=0;

//記錄目標函數值

void shuru();void print();int mincz();int find_line(int a);void exchange(int a,int b);int main(){

int i,j=0;

int p,q,temp;//q:換入,p:換出

shuru();

printf(“n------------n”);

printf(“ tCBtXBtbt”);

for(i=0;i

printf(“ X(%d)t”,i+1);

for(i=0;i

x[i]=0;

printf(“n”);

while(1){

q=mincz();

if(q==-1){

print();

printf(“n所得解已經是最優解!n”);

printf(“n最優解為:n”);

for(j=0;j

temp=num[j]-1;

x[temp]=b[j];

}

for(i=0;i

printf(“x%d=%.2f ”,i+1,x[i]);

Z=Z+x[i]*C[i];

}

printf(“Z=%.2f”,Z);

break;

}

print();

p=find_line(q);

printf(“np=%d,q=%d”,p,q);

if(q==-1)break;

exchange(p,q);

}

return 0;} int mincz(){

int i,k=0;

int flag=0;//檢驗數標記

float min=0;

for(i=0;i

if(cn[i]>=0)

flag=1;

else {

flag=0;

break;

}

if(flag==1)

return-1;

//進行到此處,說明存在<0的檢驗數

//找到最小的檢驗數,作為換入變量

for(i=0;i

if(min>cn[i]){

min=cn[i];

k=i;

}

}

return k;} int find_line(int a){

int i,k,j;

int flag=0;

float min;

k=a;

for(i=0;i

if(A[i][k]<=0)

flag=1;

else {

flag=0;

break;

}

if(flag==1){

printf(“n該線性規劃無最優解!n”);

return-1;

}

for(i=0;i

if(A[i][k]>0)

seta[i]=b[i]/A[i][k];

else seta[i]=M;

}

min=M;

for(i=0;i

if(min>=seta[i]){

min=seta[i];

j=i;

}

}

num[j]=k+1;

CB[j]=C[k];

return j;} void exchange(int p,int q){

int i,j,c,l;

float temp1,temp2,temp3;

c=p;//行號,換出

l=q;//列號,換入

temp1=A[c][l];//A[c][l]主元

b[c]=b[c]/temp1;

for(j=0;j

A[c][j]=A[c][j]/temp1;//主元化為1

for(i=0;i

if(i!=c)

if(A[i][l]!=0){

temp2=A[i][l];

b[i]=b[i]-b[c]*temp2;

//主元所在列,其余元素化為0

for(j=0;j

A[i][j]=A[i][j]-A[c][j]*temp2;

}

}

temp3=cn[l];

for(i=0;i

cn[i]=cn[i]-A[c][i]*temp3;} void print(){

int i,j=0;

printf(“n------------n”);

for(i=0;i

printf(“%8.2ftX(%d)%8.2f ”,CB[i],num[i],b[i]);

for(j=0;j

printf(“%8.2f ”,A[i][j]);

printf(“n”);

}

printf(“n------------n”);

printf(“ttt”);

for(i=0;i

printf(“ %8.2f”,cn[i]);

printf(“n------------n”);} void shuru(){

int i,j;//循環變量

int k;

printf(“請輸入線性規劃問題的約束條件個數M:”);

scanf(“%d”,&m);

printf(“請輸入線性規劃問題的決策變量個數N:”);

scanf(“%d”,&n);

printf(“n請輸入方程組的系數矩陣A(%d行%d列):n”,m,n);

for(i=0;i

for(j=0;j

scanf(“%f”,&A[i][j]);

printf(“n請輸入初始基變量的數字代碼矩陣:n”);

for(i=0;i

scanf(“%d”,&num[i]);

printf(“n請輸入方程組右邊的值矩陣b:n”);

for(i=0;i

scanf(“%f”,&b[i]);

printf(“n請輸入目標函數各個變量的系數所構成的系數陣C:n”);

for(i=0;i

scanf(“%f”,&C[i]);

for(i=0;i

cn[i]=-C[i];

for(i=0;i

k=num[i]-1;

CB[i]=C[k];

}

}

下載單純形法理論word格式文檔
下載單純形法理論.doc
將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
點此處下載文檔

文檔為doc格式


聲明:本文內容由互聯網用戶自發貢獻自行上傳,本網站不擁有所有權,未作人工編輯處理,也不承擔相關法律責任。如果您發現有涉嫌版權的內容,歡迎發送郵件至:645879355@qq.com 進行舉報,并提供相關證據,工作人員會在5個工作日內聯系你,一經查實,本站將立刻刪除涉嫌侵權內容。

相關范文推薦

    改進單純形法matlab程序

    clear clc X=[1 2 3 4 5]; A=[ 1 2 1 0 0; 4 0 0 1 0; 0 4 0 0 1]; C=[2 3 0 0 0 ]; b=[8;16;12]; t=[3 4 5]; B0=A(:,t); while 1 CB0=C(:,t); XN01=X; for i=1:lengt......

    線性規劃單純形法matlab解法

    線性規劃單純形法matlab解法 %單純形法matlab程序-ssimplex % 求解標準型線性規劃:max c*x; s.t. A*x=b; x>=0 % 本函數中的A是單純初始表,包括:最后一行是初始的檢驗數,最后......

    單純形法和擬牛頓法五篇范文

    擬牛頓法(Quasi-Newton Methods)是求解非線性優化問題最有效的方法之一,于20世紀50年代由美國Argonne國家實驗室的物理學家W. C. Davidon所提出來。Davidon設計的這種算法在......

    實驗二 用Mathematica實現單純形法

    實驗二 用Mathematica實現單純形法 一、實驗目的 (1)學習并學會使用Mathematica軟件。 (2)掌握單純形法的計算機實現的方法。 二、實驗原理 算法的具體步驟如下:書30頁 Matnmatic......

    基于單純形法的PID參數尋優

    基于單純形法的PID參數尋優 1. 引言 由于PID 控制具有直觀、易于實現、穩態精度高以及魯棒性和穩定性較好等優點,并且人們對其原理和物理意義等比較熟悉,已經建立了比較完善的......

    運籌學單純形法matlab程序(小編整理)

    function [xx,fm]=myprgmh(m,n,A,b,c) B0=A(:,1:m); cb=c(:,1:m); xx=1:n; sgm=c-cb*B0^-1*A; h=-1; sta=ones(m,1); for i=m+1:n if sgm(i)>0 h=1; end end while h>0 [ms......

    用c語言實現單純形法的編程

    用c語言實現單純形法的編程 #include "stdio.h" #include "math.h" #include int M,N; float c[100],a[100][100],b[100],CZ[100],Dn[100],th[100],x[100]; int Fn[100]; i......

    習題答案選01_線性規劃和單純形法(推薦五篇)

    運籌學教程(胡運權主編,清華版)部分習題答案(第一章) 1.5 記可行集4個頂點分別為O:(0,0),A:(1.6,0),B:(1,1.5),C:(0,2.25) 當c=0,d=0時,四邊形OABC中的點都是最優解 當c=0,d>0時,頂點C是......

主站蜘蛛池模板: 国产又色又爽无遮挡免费| 久久婷婷激情综合色综合俺也去| 亚洲色偷偷色噜噜狠狠99网| 国产精品成人免费一区久久羞羞| 久久99国产综合精品女同| v一区无码内射国产| 少妇久久久久久被弄到高潮| 国精产品一区一区三区| 久久久噜噜噜www成人网| 蜜桃av色欲a片精品一区| 久久久综合九色合综国产精品| 精品久久久久久久免费人妻| 亚洲国产精品久久久久网站| 久久大香香蕉国产免费网动漫| 国产在线精品成人一区二区| aa性欧美老妇人牲交免费| 色婷婷狠狠久久综合五月| 无码国产福利av私拍| 奇米777四色在线精品| 九色九九九老阿姨| 国产suv精品一区二区33| 初尝人妻少妇中文字幕| 国产成人精品免费视频大| 国产亚洲色视频在线| 精品久久久中文字幕人妻| 国内成+人 亚洲+欧美+综合在线| 亚洲浮力影院久久久久久| 久久天天躁狠狠躁夜夜avapp| 久久www免费人成看片入口| 国产成人无码一区二区在线观看| 亚洲最新版av无码中文字幕| 强行糟蹋人妻hd中文字幕| 好大好深好猛好爽视频免费| 男人的天堂在线| 国产成人无码激情视频| 偷看农村妇女牲交| 欧美综合婷婷欧美综合五月| 水蜜桃无码视频在线观看| 日韩精品无码专区免费播放| 日本一卡2卡3卡4卡无卡免费网站| 国产精品亚洲一区二区三区喷水|