刚学习了线性规划的部分,作业就是自行实现单纯形法,看起来麻烦,其实也不麻烦,详细单纯形内容参见《运筹学》,算法部分参照《算法导论》。
注:以下代码缺少判定是否无界的情况,只要在代码中加入验证即可。
1>确定基向量,即
//取得基向量,遍历A,取得一列仅有一个1的列
private List<int> al = new List<int>();//存储基变量的脚标
for (int i = 0; i < A.GetLength(1); i++)
{
flag = 0;
for (int j = 0; j < A.GetLength(0); j++)
{
if(A[j, i]==1) flag += 1;
if(A[j, i]==0) flag += 0;
if((A[j, i]!=1)&&(A[j, i]!=0)) flag+=2;
}
if (flag == 1) this.al.Add(i);
}
2>确定cj-zj
private vo