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

📄 simplex.h

📁 vc下实现的最优化程序代码
💻 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 + -