// Simplex.h: interface for the Simplex class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_SIMPLEX_H__3D2C1DB7_6371_11D0_A9AD_9D71A8A5BA01__INCLUDED_)
#define AFX_SIMPLEX_H__3D2C1DB7_6371_11D0_A9AD_9D71A8A5BA01__INCLUDED_

#if _MSC_VER >= 1000
#pragma once
#endif // _MSC_VER >= 1000

const int MAX_VAR=20;
const int MAX_CONST=20;

#include "Fraction.h"

class Simplex  

{
	//data
public:
	Fraction C[MAX_VAR*2];
	Fraction C2[MAX_VAR];
	Fraction A[MAX_VAR*2][MAX_CONST];
	Fraction B[MAX_CONST];
	int const_type[MAX_CONST];
	int no_of_vars,no_of_const,no_of_svars,no_of_avars,total_vars;
	Fraction table[MAX_VAR*3+1][MAX_CONST+1];
	int basic_vars[MAX_CONST]; //______Which vars are basic
	int var_const[MAX_VAR];


	int phase_no;

	Fraction finalsol[MAX_VAR+1];
	int no_of_rvars;

public:
	void GenerateSolution();
	Simplex();
	virtual ~Simplex();

	void FillSimplexTable();
	int Iterate();
	int ReturnMin();

};

#endif // !defined(AFX_SIMPLEX_H__3D2C1DB7_6371_11D0_A9AD_9D71A8A5BA01__INCLUDED_)
