我是C#的初学者,我想编写模糊max-min组合的代码。我已经使用2D数组作为矩阵。我遇到的问题是数组的最后一行和一列是零。而其余的数组元素根据模糊逻辑正确答案。最后一行和列必须与数组的其他元素具有相同的元素。
这是我的代码
public string[,] Max(string[,] matrix1, string[,] matrix2, int order)
{
string[,] fuzzy = new string[order, order];
double max;
double min;
for (int i = 0; i < order; i++)
{
for (int j = 0; j < order; j++)
{
fuzzy[i, j] = "0.0000";
for (int k = 0; k < order; k++)
{
max = Convert.ToDouble(fuzzy[i, j]);
min = Math.Min(Convert.ToDouble(matrix1[i, k]), Convert.ToDouble(matrix2[k, j]));
//min = Math.Min(Convert.ToDouble(matrix1[i, j]), Convert.ToDouble(matrix2[i, j]));
max = Math.Max(min, min);
fuzzy[i, j] = Convert.ToString((String.Format("{0:0.0000}", max)));
}
}
}
return fuzzy;
}
这是结果
任何人都可以帮助我为什么最后一行和一列为零。 .thanx。
数据是使用随机类生成的随机数据。
答案 0 :(得分:0)
问题实际上是行max = Math.Max(min,min); ,我已经替换它并在两个矩阵上获得了模糊MAX_MIN操作的正确输出。
代码
//Fuzzy MAX-MIN Composition Code
public string[,] Max(string[,] matrix1, string[,] matrix2, int order)
{
string[,] fuzzy = new string[order, order];
double max = 0.0000;
double min;
for (int i = 0; i < order; i++)
{
for (int j = 0; j < order; j++)
{
fuzzy[i, j] = "0.0000";
for (int k = 0; k < order; k++)
{
max = Convert.ToDouble(fuzzy[i, j]);
min = Convert.ToDouble(fuzzy[i, j]);
min =Math.Min(Convert.ToDouble(matrix1[i, k]), Convert.ToDouble(matrix2[k, j]));
if(min > max)
{
fuzzy[i, j] = Convert.ToString((String.Format("{0:0.0000}", min)));
}
else
{
fuzzy[i, j] = Convert.ToString((String.Format("{0:0.0000}", max)));
}
//max = Math.Max(0.0000, min);
//fuzzy[i, j] = Convert.ToString((String.Format("{0:0.0000}", min)));
}
}
}
return fuzzy;
}