📄 simplex.h
字号:
// Simplex.h: interface for the CSimplex class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_SIMPLEX_H__2E3488AE_A631_4BFF_B837_A85DB16E0809__INCLUDED_)
#define AFX_SIMPLEX_H__2E3488AE_A631_4BFF_B837_A85DB16E0809__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "ArrayMatrix.h"
class CSimplex : public CObject
{
public:
void SetMatrix_Big();
void ReviseMatrix_X();
void SetMatrix_Xb();
void ReviseRight();
void GaussMethod();
BOOL ReSetBase();//变量出,入基
void PrintResult();
BOOL ReviseSetScript();
void ReviseData();
void ExecuteSLP();//规划执行函数
void JudgeScript(int k);//判断k属于哪个集合
void SetScript();
void SetMatrixSize();
void InitData(int m,int l,int n,int p,int q,int u);
float Compute_f0();
float Compute_lmd();
void SetVariableCount(int m,int l,int n,int p,int q,int u);
float ComputeQ(LorU J);//即计算“6”;
void Compute_Cb_Cn1_Cn2();//根据下标数组元素来计算。
void Compute_B_N1_N2();//根据下标数组元素来计算。
CSimplex();
virtual ~CSimplex();
private:
BOOL m_IsLimitary;//表征规划是否有有界解
LorU m_Kind;
float m_lmd;//即兰木大
float m_Q;//即“6”
int m_k;//出基变量标号
int m_r;//入基变量标号
float m_f;//目标函数值;
CArrayMatrix m_A,m_b;
CArrayMatrix m_C,m_X;
CArrayMatrix m_B,m_N1,m_N2;
CArrayMatrix m_Cb,m_Cn1,m_Cn2;
CArrayMatrix m_Xb,m_Xn1,m_Xn2;
CArrayMatrix m_L,m_U;//用于存放变量的上下限
CArrayMatrix m_Big;//迭代中用的增广矩阵
int m_VarCunt;//变量总数
int m_VarB;//基变量总数
int m_VarL;//L集合变量数
int m_VarU;//N集合变量数
int m_QuatCunt;// 等式约束方程数,即m行
int m_UnQuatCunt;//不等式约束数
int m_TarCunt;//目标函数 cx中c的方程个数,
CArray<float, float&> m_NumB,m_NumN1,m_NumN2;//用于存放变量下标
};
#endif // !defined(AFX_SIMPLEX_H__2E3488AE_A631_4BFF_B837_A85DB16E0809__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -