⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mysimplex.h

📁 单纯形法:为求解线性规划问题的通用方法。一般在数学建模课上老师要求实现
💻 H
字号:
#ifndef mySimplex_h__
#define mySimplex_h__
#include<iostream>
#include<fstream>
#include<math.h>
#include<iomanip>
#define BOUND 100
using namespace std;
class MySimplex
{
public:
	MySimplex();
	void compute();
	void initial();
	~MySimplex();
private:
	void printMatrix(void);
	void jckxj();//基础可行解
	int rj();//规划模型的系数是否没有负数
	int Min();
	int JustArtificial();//检查人工变量是否有正,确定原问题有无最优解
	int Check(int in);//选取出基变量之前的检验
	int SearchOut(int *temp,int in);//出基变量
	void Mto(int in,int temp);
	void JustUpper();
	void ChangeForm();
	void Be(int temp,int in);//初等变换。出基变量的行数temp,入基变量的列数in
	void Achange(int in,int out);//出基入基转换in--入基列数,out--出基列数
	void JudgeNegative();
	void Result();
	void PrintResult();
	void Merge(double nget[][BOUND],double nlet[][BOUND],double net[][BOUND],double b[]);
	void ProcessA();//初始a[]
	void InputFile();
	void Input(double b[],int code[]);
	void Xartificial();//消去人工变量
	void Process(double c[][BOUND],int row,int vol);
	void Start(double b[],int code[]);
	int Simplix();//单纯形法
	long gcd (long m,long n);
	double gcd (double m,double n);
	double lcm (double m,double n);
	long lcm (long m,long n);
	int AllInt(double *x);
	void DeleteArtificial(void);
	int SelectUnint(void);
	void AdjustIt(int unInt,double *just);
	//matrix--矩阵方程,其中最后一行是规划模型;x--解向量
	double matrix[BOUND][BOUND],x[BOUND];
	int code[BOUND];//输入不等式符号标记(0:<=,1:=,2:>=)
	double b[BOUND];//表示限制条进的常数项
	int a[BOUND];//a--前面m个是非基础的解变量表示为0,后面是基础的解变量表示为1
	int m,n,s,type;//m--添加变量之前的原始变量个数,n--矩阵行界,s--矩阵列界也就是添加变量之后的变量个数解变量的个数,type--1为最大0为最小
	//indexe--剩余变量的个数,x[j]从m到m+indexe是剩余变量;indexl--松弛变量的个数,x[i]从m+indexe到m+indexe+indexl是松弛变量;indexg--人工变量的个数x[i]从m+indexe+indexl到s是人工变量;
	int indexe;//剩余变量个数
	int indexl;//人工变量个数
	int indexg;//人工变量个数
	int indexe2;//割平面法迭代时的新增剩余变量个数
	int selectinput;//刚开始输入提示选项
	/////////////////////////////////
};
#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -