最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

c++實(shí)現(xiàn)單純形法現(xiàn)行規(guī)劃問題的求解(推薦)

 更新時(shí)間:2020年04月02日 10:00:49   作者:含光Aries  
這篇文章主要介紹了c++實(shí)現(xiàn)單純形法現(xiàn)行規(guī)劃問題的求解,本文針對(duì)問題通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

在本程序中默認(rèn)該現(xiàn)行規(guī)劃問題有最優(yōu)解

針對(duì)此問題:

#include<iostream>
using namespace std;

int check(float *sigema, int m) {
  for (int i = 1; i <= m ; i++) {
    if (sigema[i] > 0) {
      return 0;
    }
  }
  return 1;
}

//此程序已經(jīng)化為標(biāo)準(zhǔn)型的線性規(guī)劃問題中,且默認(rèn)有最優(yōu)解
int main(int argc, char* argv[])
{
  //數(shù)據(jù)輸入部分
  int m, n;
  cout << "請(qǐng)輸入變量個(gè)數(shù):";
  cin >> m;
  cout << "請(qǐng)輸入不等式個(gè)數(shù):";
  cin >> n;
  float **matrix = new float*[n + 1];   //系數(shù)矩陣
  for (int i = 1; i <= n; i++) {
    matrix[i] = new float[m + 2];
  }
  float *cj = new float[m + 1];
  float *cB = new float[n + 1];  //基變量系數(shù)
  int *XB = new int[n + 1];  //用來標(biāo)注基變量x的下標(biāo)
  float *b = new float[n + 1];
  float *sigema = new float[n + 1];
  float *sita = new float[n + 1];
  //初始化
  for (int i = 0; i <= m; i++) {
    cj[i] = 0;
  }
  for (int i = 0; i <= n; i++) {
    cB[i] = 0;
    XB[i] = 0;
    b[i] = 0;
    sigema[i] = 0;
    sita[i] = 0;
  }
  cout << "請(qǐng)輸入目標(biāo)函數(shù)系數(shù)(用空格間開):" << endl;
  for (int i = 1; i <= m; i++) {
    cin >> cj[i];
  }
  cout << "請(qǐng)輸入各不等式的系數(shù)和常量(用空格間開):" << endl;
  for (int i = 1; i <= n; i++) {
    cout << "不等式" << i << ": ";
    for (int j = 1; j <= m + 1; j++) {
      cin >> matrix[i][j];
    }
  }
  cout << "請(qǐng)輸入目標(biāo)函數(shù)中基變量下標(biāo):" << endl;
  for (int i = 1; i <= n; i++) {
    cin >> XB[i];
    cB[i] = cj[XB[i]];
    //常量
    b[i] = matrix[i][m + 1];
  }

  //計(jì)算檢驗(yàn)數(shù)
  for (int i = 1; i <= m; i++) {
    sigema[i] = cj[i];
    for (int j = 1; j <= n; j++) {
      sigema[i] -= cB[j] * matrix[j][i];
    }
  }

  while (check(sigema, m) == 0) {
    //尋找入基變量
  float maxn = sigema[1];
  int sigema_xindex = 0;
  float sigema_xcoefficient = 0;
  for (int i = 1; i <= m; i++) {
    if (maxn <= sigema[i]) {
      maxn = sigema[i];
      sigema_xindex = i;
      sigema_xcoefficient = cj[i];
    }
  }
  //計(jì)算sita
  for (int i = 1; i <= n; i++) {
    if (matrix[i][sigema_xindex] > 0) {
      sita[i] = b[i] / matrix[i][sigema_xindex];
    }
    else {
      sita[i] = 9999; //表示sita值為負(fù)數(shù)
    }
  }
  //尋找出基變量
  float minn = sita[1];
  int sita_xindex = 0;
  for (int i = 1; i <= n; i++) {
    if (minn >= sita[i] && sita[i] > 0) {
      minn = sita[i];
      sita_xindex = i;
    }
  }
  //入基出基變換,先入基再出基
  //入基操作
  for (int i = 1; i <= n; i++) {
    if (i == sita_xindex) {
      XB[i] = sigema_xindex;
      cB[i] = sigema_xcoefficient;
      break;
    }
  }
  //出基計(jì)算 
  //化1
  //cout << endl << "此處為化1的結(jié)果------" << endl;
  float mul1 = matrix[sita_xindex][sigema_xindex];
  for (int i = 1; i <= m; i++) {
    matrix[sita_xindex][i] /= mul1;
  }
  b[sita_xindex] /= mul1;
  //化0
  //cout << endl << "此處為化0的結(jié)果------" << endl;
  for (int i = 1; i <= n; i++) {
    if (i == sita_xindex) {
      continue;
    }
    float mul2 = matrix[i][sigema_xindex] / matrix[sita_xindex][sigema_xindex];
    for (int j = 1; j <= m; j++) {
      matrix[i][j] -= (matrix[sita_xindex][j] * mul2);
    }
    b[i] -= (b[sita_xindex] * mul2);
  }
  for (int i = 1; i <= n; i++) {
    if (i == sita_xindex) {
      continue;
    }
  }
  for (int i = 1; i <= m; i++) {
    sigema[i] = cj[i];
    for (int j = 1; j <= n; j++) {
      sigema[i] -= cB[j] * matrix[j][i];
    }
  }
  }
  float MaxZ = 0;
  float *result = new float[m + 1];
  for (int i = 0; i <= m; i++) {
    result[i] = 0;
  }
  for (int i = 1; i <= n; i++) {
    result[XB[i]] = b[i];
  }
  cout << "最優(yōu)解為:X = (";
  for (int i = 1; i < m; i++) {
    cout << result[i] << ",";
  }
  cout << result[m] << ")" << endl;
  for (int i = 1; i <= m; i++) {
    MaxZ += result[i] * cj[i];
  }
  cout << "最優(yōu)值為:MzxZ = " << MaxZ;
  return 0;
}

程序運(yùn)行結(jié)果:

總結(jié)

到此這篇關(guān)于c++實(shí)現(xiàn)單純形法現(xiàn)行規(guī)劃問題的求解的文章就介紹到這了,更多相關(guān)c++單純形法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • VC雙畫布消除屏幕閃爍實(shí)例詳解

    VC雙畫布消除屏幕閃爍實(shí)例詳解

    這篇文章主要介紹了VC雙畫布消除屏幕閃爍實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • OpenCV實(shí)現(xiàn)拼圖板小游戲

    OpenCV實(shí)現(xiàn)拼圖板小游戲

    這篇文章主要為大家詳細(xì)介紹了OpenCV實(shí)現(xiàn)拼圖板小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • C++ LeetCode1796字符串中第二大數(shù)字

    C++ LeetCode1796字符串中第二大數(shù)字

    這篇文章主要為大家介紹了C++ LeetCode1796字符串中第二大數(shù)字示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • C語(yǔ)言 從根本上理解指針

    C語(yǔ)言 從根本上理解指針

    C語(yǔ)言這門課程在計(jì)算機(jī)的基礎(chǔ)教學(xué)中一直占有比較重要的地位,然而要想突破C語(yǔ)言的學(xué)習(xí),對(duì)指針的掌握是非常重要的,本文將具體針對(duì)指針的基礎(chǔ)做詳盡的介紹
    2022-04-04
  • C語(yǔ)言初識(shí)動(dòng)態(tài)內(nèi)存管理malloc calloc realloc free函數(shù)

    C語(yǔ)言初識(shí)動(dòng)態(tài)內(nèi)存管理malloc calloc realloc free函數(shù)

    動(dòng)態(tài)內(nèi)存是相對(duì)靜態(tài)內(nèi)存而言的。所謂動(dòng)態(tài)和靜態(tài)就是指內(nèi)存的分配方式。動(dòng)態(tài)內(nèi)存是指在堆上分配的內(nèi)存,而靜態(tài)內(nèi)存是指在棧上分配的內(nèi)存
    2022-03-03
  • Qt使用Json的項(xiàng)目實(shí)踐

    Qt使用Json的項(xiàng)目實(shí)踐

    JSON是一種對(duì)源自Javascript的對(duì)象數(shù)據(jù)進(jìn)行編碼的格式,但現(xiàn)在被廣泛用作互聯(lián)網(wǎng)上的數(shù)據(jù)交換格式,本文主要介紹了Qt使用Json的項(xiàng)目實(shí)踐,詳細(xì)的介紹了主要使用的類以及Json實(shí)戰(zhàn),感興趣的可以了解一下
    2023-09-09
  • C語(yǔ)言詳細(xì)講解if語(yǔ)句與switch語(yǔ)句的用法

    C語(yǔ)言詳細(xì)講解if語(yǔ)句與switch語(yǔ)句的用法

    用 if 語(yǔ)句可以構(gòu)成分支結(jié)構(gòu),它根據(jù)給的條件進(jìn)行判定,以決定執(zhí)行哪個(gè)分支程序段,C 語(yǔ)言中還有另外一種分支語(yǔ)句,就是 switch 語(yǔ)句
    2022-05-05
  • C++ 風(fēng)靡一時(shí)的連連看游戲的實(shí)現(xiàn)流程詳解

    C++ 風(fēng)靡一時(shí)的連連看游戲的實(shí)現(xiàn)流程詳解

    游戲“連連看”是源自臺(tái)灣的桌面小游戲,自從流入大陸以來風(fēng)靡一時(shí),也吸引眾多程序員開發(fā)出多種版本的“連連看”。這其中,顧芳編寫的“阿達(dá)連連看”以其精良的制作廣受好評(píng),這也成為顧方“阿達(dá)系列軟件”的核心產(chǎn)品。并于2004年,取得國(guó)家版權(quán)局的計(jì)算機(jī)軟件登記證書
    2021-11-11
  • C語(yǔ)言詳細(xì)分析講解關(guān)鍵字goto與void的作用

    C語(yǔ)言詳細(xì)分析講解關(guān)鍵字goto與void的作用

    我們?cè)贑語(yǔ)言中經(jīng)常會(huì)見到void,也會(huì)偶爾見到goto,那么C語(yǔ)言中既然有g(shù)oto,為什么我們?cè)诖a中見的很少呢?在以前很多的項(xiàng)目經(jīng)驗(yàn)中,我們得到這樣一條潛規(guī)則:一般項(xiàng)目都是禁用goto的,程序質(zhì)量與goto的出現(xiàn)次數(shù)成反比。自后也就造成了我們一般不會(huì)使用goto
    2022-04-04
  • 復(fù)數(shù)乘法中的結(jié)構(gòu)體賦值實(shí)現(xiàn)代碼

    復(fù)數(shù)乘法中的結(jié)構(gòu)體賦值實(shí)現(xiàn)代碼

    復(fù)數(shù)乘法中的結(jié)構(gòu)體賦值實(shí)現(xiàn)代碼。需要的朋友可以過來參考下,希望對(duì)大家有所幫助
    2013-10-10

最新評(píng)論

揭东县| 平乡县| 兰溪市| 砚山县| 大冶市| 蓬安县| 尉氏县| 体育| 介休市| 怀仁县| 南溪县| 利津县| 鹤岗市| 昌吉市| 互助| 克拉玛依市| 西昌市| 七台河市| 正镶白旗| 犍为县| 台中市| 聂拉木县| 尤溪县| 修水县| 西盟| 遂溪县| 延庆县| 芦溪县| 丹江口市| 山丹县| 永顺县| 进贤县| 青河县| 新田县| 宜兰市| 香港| 文化| 浦城县| 蕉岭县| 尚志市| 监利县|