ки рішення не оптимально
while (! solved) {
// знаходимо провідний стовпець
float minR = matrix [0] [0];
int minRInd = 0;
for (int i = 0; i <= ReadFile.colCount; i + +) {
if (matrix [i] [0]
minR = matrix [i] [0];
minRInd = i;
}
}
// перевіряємо, обмежена чи цільова функція на множині дод. рішень
lim = false;
for (int i = 0; i <= ReadFile.rowCount; i + +) {
if (matrix [minRInd] [i]> 0)
lim = true;
}
// якщо функція не обмежена, виводимо повідомлення про помилку, перериваємо
// вирішення
if (! lim) {
solved = true;
JOptionPane.showMessageDialog (null, "функція не обмежена на множині допустимих рішень");
break M1;
}
// знаходимо провідний рядок
float minC = matrix [ReadFile.colCount] [1]/matrix [minRInd] [1];
int minCInd = 1;
for (int i = 1; i
if (matrix [ReadFile.colCount] [i]/matrix [minRInd] [i]
minC = matrix [ReadFile.colCount] [i]/matrix [minRInd] [i];
minCInd = i;
}
}
for (int i = tempCInd + 1; i <= ReadFile.rowCount; i + +) {
if (matrix [ReadFile.colCount] [i]/matrix [minRInd] [i]
minC = matrix [ReadFile.colCount] [i]/matrix [minRInd] [i];
minCInd = i;
}
}
// виводимо з базису базисну змінну [0] [minCInd], вводимо в базис
// змінну [minRInd] [0]
ReadFile.varCol [minCInd-1] = ReadFile.varRow [minRInd];
// будуємо нову симплексну таблицю
// ділимо провідну рядок на провідний елемент [minRInd] [minCInd]
float temp = matrix [minRInd] [minCInd];
System.out.print (">>" + temp + " n");
System.out.print (" nведущая рядок:");
for (int i = 0; i <= ReadFile.colCount; i + +) {
matrix [i] [minCInd]/= temp;
}
// отримуємо нулі в провідному стовпці
for (int j = 0; j
float minTemp = matrix [minRInd] [j];
for (int i = 0; i <= ReadFile.colCount; i + +) {
matrix [i] [j] + = matrix [i] [minCInd] *-minTemp;
}
}
for (int j = minCInd +1; j <= ReadFile.rowCount; j + +) {
float minTemp = matrix [minRInd] [j];
for (int i = 0; i <= ReadFile.colCount; i + +) {
matrix [i] [j] + = matrix [i] [minCInd] *-minTemp;
}
}
// оновлюємо вектор рішення
for (int i = 0; i
for (int j = 0; j
int k = j + 1;
String tempS = "x" + k;
if (tempS.equals (ReadFile.varCol [i]))
solution [j] = matrix [ReadFile.colCount] [i +1];
}
}
tempCInd = minCInd;
// рекурсивно викликаємо процедуру, поки рішення не буде оптимальним
Solve (matrix);
}
}
return matrix;
}
// створюємо вектор рішення
static void initSolution (int varCount) {
solution = new float [varCount];
for (int i = 0; i
solution [i] = 0;
}
}
// вибір ведучого шпальти в режимі навчання
static boolean userChooseCol (float [] [] matrix, JTable tableName) {
boolean err = false;
M1: {
// знаходимо провідний стовпець