




下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
單純形法求解線性規(guī)劃的步驟單純形法求解線性規(guī)劃的步驟單純形法求解線性規(guī)劃的步驟V:1.0精細(xì)整理,僅供參考單純形法求解線性規(guī)劃的步驟日期:20xx年X月單純形法求解線性規(guī)劃的步驟
1>
初始化將給定的線性規(guī)劃問(wèn)題化成標(biāo)準(zhǔn)形式,并建立一個(gè)初始表格,它最右邊的單元格都是非負(fù)的(否則無(wú)解),接下來(lái)的m列組成一個(gè)m*m的單元矩陣(目標(biāo)行的單元格則不必滿足這一條件),這m列確定了初始的基本可行解的基本變量,而表格中行用基本變量來(lái)表示2>
最優(yōu)化測(cè)試如果目標(biāo)行的所有單元格都是非負(fù)的(除了最右列中代表目標(biāo)函數(shù)值的那個(gè)單元格),就可以停止了,該表格代表了一個(gè)最優(yōu)解,它的基本變量的值在最右列中,而剩下的非基本變量都為03>
確定輸入變量從目標(biāo)行的前n個(gè)單元格中選擇一個(gè)負(fù)的單元格(選擇絕對(duì)值最大的那個(gè))該單元格所在的列確定的輸入變量及主元列4>
確定分離變量對(duì)于主元列的每個(gè)正單元格,求出θ比率(如果主元格的單元格為負(fù)或?yàn)?,說(shuō)明該問(wèn)題是無(wú)解的,算法終止),找出θ比率最小的列,改行確定了分離變量和主元行5>
建立下一張表格將主元行的所有單元格除以主元得到新的主元行,包括主元行在內(nèi)的每一行,要減去改行主元列單元格和新主元行的成績(jī)(除主元行為1外,這一步將主元列的所有單元格變成0).把主元列的變量名進(jìn)行代換,得到新的單純形表,返回第一步
為求簡(jiǎn)單在本程序中,需要自己建立標(biāo)準(zhǔn)矩陣(比如加入松弛變量等工作需要用戶自己完成),程序的輸入有兩種方式:1:指定行和列,由用戶自行輸入每一個(gè)元素
SimpleMatrix(introw=0,intcol=0);2:直接在主程序中初始化一個(gè)二維數(shù)組,然后利用構(gòu)造函數(shù)
SimpleMatrix(introw,intcol,double**M)
來(lái)初始化和處理(本程序所用的實(shí)例用的是這種方法)
程序中主要的函數(shù)以及說(shuō)明~SimpleMatrix();
銷毀動(dòng)態(tài)分配的數(shù)組.用于很難預(yù)先估計(jì)矩陣的行和列,所以在程序中才了動(dòng)態(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<<"請(qǐng)輸入矩陣中第"<<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ī)劃的解是否為無(wú)解的
{
cout<<"線性規(guī)劃問(wèn)題是無(wú)界的,沒(méi)有最優(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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 薪酬福利調(diào)整說(shuō)明書(shū)與實(shí)施方案解讀
- 綠色能源供應(yīng)協(xié)議書(shū)
- 兄妹共同出資購(gòu)房合同
- 全新綠化工程協(xié)議書(shū)
- 電力行業(yè)電力供應(yīng)穩(wěn)定性免責(zé)協(xié)議
- 員工年度工作總結(jié)與未來(lái)發(fā)展規(guī)劃報(bào)告
- 項(xiàng)目合作方案設(shè)計(jì)建議書(shū)
- 購(gòu)買公司股份協(xié)議書(shū)十
- 第二單元 社會(huì)主義制度的建立與社會(huì)主義建設(shè)的探索 大單元教學(xué)設(shè)計(jì) 2023-2024學(xué)年部編版八年級(jí)歷史下冊(cè)
- 第二單元4《古詩(shī)三首》教學(xué)設(shè)計(jì)-2024-2025學(xué)年統(tǒng)編版語(yǔ)文三年級(jí)上冊(cè)
- 銷售人員薪酬設(shè)計(jì)實(shí)例 薪酬制度設(shè)計(jì) 薪酬設(shè)計(jì)方案 設(shè)計(jì)案例全套
- 光伏電站生產(chǎn)準(zhǔn)備大綱全套
- 工業(yè)控制安全
- 媽祖重離子醫(yī)院硼中子俘獲治療系統(tǒng)環(huán)境影響報(bào)告
- 征地搬遷基本要求及工作技巧課件
- 部編版語(yǔ)文五年級(jí)下冊(cè) 課本解讀
- 海洋工程裝備制造職業(yè)發(fā)展研究報(bào)告
- 供應(yīng)商現(xiàn)場(chǎng)審核評(píng)估表
- 20XX年吉林省事業(yè)單位公開(kāi)招聘人員審核備案表
- 產(chǎn)科危重癥識(shí)別與處理及危重癥管理培訓(xùn)課件
- 韻達(dá)快遞員工勞務(wù)合同范本
評(píng)論
0/150
提交評(píng)論