下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
單純形法求解線性規(guī)劃的步驟單純形法求解線性規(guī)劃的步驟單純形法求解線性規(guī)劃的步驟V:1.0精細(xì)整理,僅供參考單純形法求解線性規(guī)劃的步驟日期:20xx年X月單純形法求解線性規(guī)劃的步驟
1>
初始化將給定的線性規(guī)劃問題化成標(biāo)準(zhǔn)形式,并建立一個初始表格,它最右邊的單元格都是非負(fù)的(否則無解),接下來的m列組成一個m*m的單元矩陣(目標(biāo)行的單元格則不必滿足這一條件),這m列確定了初始的基本可行解的基本變量,而表格中行用基本變量來表示2>
最優(yōu)化測試如果目標(biāo)行的所有單元格都是非負(fù)的(除了最右列中代表目標(biāo)函數(shù)值的那個單元格),就可以停止了,該表格代表了一個最優(yōu)解,它的基本變量的值在最右列中,而剩下的非基本變量都為03>
確定輸入變量從目標(biāo)行的前n個單元格中選擇一個負(fù)的單元格(選擇絕對值最大的那個)該單元格所在的列確定的輸入變量及主元列4>
確定分離變量對于主元列的每個正單元格,求出θ比率(如果主元格的單元格為負(fù)或為0,說明該問題是無解的,算法終止),找出θ比率最小的列,改行確定了分離變量和主元行5>
建立下一張表格將主元行的所有單元格除以主元得到新的主元行,包括主元行在內(nèi)的每一行,要減去改行主元列單元格和新主元行的成績(除主元行為1外,這一步將主元列的所有單元格變成0).把主元列的變量名進(jìn)行代換,得到新的單純形表,返回第一步
為求簡單在本程序中,需要自己建立標(biāo)準(zhǔn)矩陣(比如加入松弛變量等工作需要用戶自己完成),程序的輸入有兩種方式:1:指定行和列,由用戶自行輸入每一個元素
SimpleMatrix(introw=0,intcol=0);2:直接在主程序中初始化一個二維數(shù)組,然后利用構(gòu)造函數(shù)
SimpleMatrix(introw,intcol,double**M)
來初始化和處理(本程序所用的實例用的是這種方法)
程序中主要的函數(shù)以及說明~SimpleMatrix();
銷毀動態(tài)分配的數(shù)組.用于很難預(yù)先估計矩陣的行和列,所以在程序中才了動態(tài)的內(nèi)存分配.需要重載析構(gòu)函數(shù)boolIs_objectLine_All_Positive();
其中row2為主元所在的行,col為主元所在的列,row1為要處理的行voidPrintAnswer();
數(shù)不合法"<<endl;
}
SimpleMatrix::SimpleMatrix(introw,intcol)
{
init(row,col);
for(inti=0;i<rowLen;i++)
{
cout<<"請輸入矩陣中第"<<i+1<<"行的系數(shù)"<<endl;
for(intj=0;j<colLen;j++)
cin>>data[i][j];
}
}
SimpleMatrix::SimpleMatrix(introw,intcol,double**M)
{
rowLen=row;
colLen=col;
init(row,col);
for(inti=0;i<row;i++)
for(intj=0;j<col;j++)
{
data[i][j]=*((double*)M+col*i+j);
;
}
}
SimpleMatrix::~SimpleMatrix()
{
if(colLen*rowLen!=0)
{
for(inti=rowLen-1;i>=0;i--)
{
if(data[i]!=NULL)
delete[]data[i];
}
if(data!=NULL)
delete[]data;
}
}
boolSimpleMatrix::Is_objectLine_All_Positive()
{
for(inti=0;i<colLen-1;i++)
if(data[rowLen-1][i]<0)
returnfalse;
returntrue;
}
boolSimpleMatrix::Is_MainCol_All_Negative(intcol)
{
for(inti=0;i<rowLen;i++)
if(data[i][col]>0)
returnfalse;
returntrue;
}
boolSimpleMatrix::Is_column_all_Positive(intcol)
{
for(inti=0;i<rowLen-1;i++)
{
if(data[i][col-1]<0)
returnfalse;
}
returntrue;
}
intSimpleMatrix::InColumn()
{
intcount=0;
for(inti=0;i<colLen-1;i++)
{
inttemp=GetItem(rowLen-1,i);
if(temp>=0)
{
count++;
}
else
break;
}
doublemaxItem=fabs(GetItem(rowLen-1,count));
intindex_col;
for(i=0;i<colLen-1;i++)
{
doubletemp=GetItem(rowLen-1,i);
if(temp<0)
{
if(maxItem<=fabs(temp))
{
maxItem=fabs(temp);
index_col=i;
}
}
}
returnindex_col;
}
intSimpleMatrix::DepartRow(intcol)
{
intindex_row;
intcount=0;
for(inti=0;i<rowLen;i++)
{
if(data[i][col]<0)
count++;
else
break;
}
doubleminItem=data[count][colLen-1]/data[count][col];
index_row=count;
doubletemp;
for(i=0;i<rowLen-1;i++)
{
temp=data[i][col];
if(temp>0)
{
temp=data[i][colLen-1]/temp;
if(temp<minItem)
{
minItem=temp;
index_row=i;
}
}
}
returnindex_row;
}
voidSimpleMatrix::MainItem_To_1(introw,intcol)
{
doubletemp=GetItem(row,col);
pp
#include<iostream>
#include""
usingnamespacestd;
intmain()
{
doubleM[4][7]={{5,3,1,1,0,0,9},{-5,6,15,0,1,0,15},{2,-1,1,0,0,-1,5},{-10,-15,-12,0,0,0,}};
SimpleMatrixMatrix(4,7,(double**)M);
if(5))
//判斷是否存在最優(yōu)解
{
boolp=();
//判斷主元列是否全部為正,確定是否已經(jīng)取得最優(yōu)解
while(!p)
{
intcol=();
//確定主元所在的行
if(col))
//確定線性規(guī)劃的解是否為無解的
{
cout<<"線性規(guī)劃問題是無界的,沒有最優(yōu)解"<<endl;
exit(EXIT_FAILURE);
}
else
{
intmainRow=(col);
//確定主元所在的行
(mainRow,col);
//將主元所在的行做變換,使主元變成1
inti=0;
while(i<())
{
if(i!=mainRow)
{
(i,mainRow,col);
//處理矩陣中其他的行,使主元列的元素為0
i++;
}
else
{
i++;
}
}
}
for(inti=0;i<();i++)
//輸出變換以后的矩陣,判斷是否正確處理
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年經(jīng)濟(jì)公司綜合崗筆試題及答案
- 2025年安徽省人事人才網(wǎng)考試及答案
- 2025年中學(xué)行政事業(yè)編考試及答案
- 2026年跨越歷史的春節(jié)與家族傳承
- 2025年中南大學(xué)輔導(dǎo)員筆試題及答案
- 2025年柏鄉(xiāng)教資筆試答案
- 2025年國企巡檢崗筆試題庫及答案
- 2026年人工智能算法工程師實戰(zhàn)技能提升培訓(xùn)
- 2026年老舊小區(qū)改造政策落實情況分析
- 2025年公職編制筆試及答案
- 總經(jīng)理聘用管理辦法
- 長護(hù)險護(hù)理培訓(xùn)
- DB34∕T 4648-2023 鋼結(jié)構(gòu)橋梁頂推施工技術(shù)規(guī)程
- 2025年時政100題(附答案)
- 貸款用別人名字協(xié)議書
- 寺院圍墻修繕方案(3篇)
- 麻醉科PDCA持續(xù)改進(jìn)麻醉術(shù)后鎮(zhèn)痛
- 6.3+基層群眾自治制度+課件高中政治統(tǒng)編版必修三政治與法治
- 村級公路管護(hù)協(xié)議書
- 班級思想教育工作
- 銀行消保投訴分析培訓(xùn)
評論
0/150
提交評論