c++实现单纯形法现行规划问题的求解实现单纯形法现行规划问题的求解(推荐推荐)
主要介绍了c++实现单纯形法现行规划问题的求解,本文针对问题通过实例代码给大家介绍的非常详细,对大家
的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
在本程序中默认该现行规划问题有最优解
针对此问题:
#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;
}
//此程序已经化为标准型的线性规划问题中,且默认有最优解
int main(int argc, char* argv[])
{
//数据输入部分
int m, n;
cout << "请输入变量个数:";
cin >> m;
cout << "请输入不等式个数:";
cin >> n;
float **matrix = new float*[n + 1]; //系数矩阵
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]; //基变量系数
int *XB = new int[n + 1]; //用来标注基变量x的下标
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 << "请输入目标函数系数(用空格间开):" << endl;
for (int i = 1; i <= m; i++) {
cin >> cj[i];
}
cout << "请输入各不等式的系数和常量(用空格间开):" << endl;
for (int i = 1; i <= n; i++) {
cout << "不等式" << i << ": ";
for (int j = 1; j <= m + 1; j++) {
cin >> matrix[i][j];
}
}
cout << "请输入目标函数中基变量下标:" << endl;
for (int i = 1; i <= n; i++) {
cin >> XB[i];
cB[i] = cj[XB[i]];
//常量
b[i] = matrix[i][m + 1];