some fixes
This commit is contained in:
parent
37e951cf33
commit
46db2e59cd
@ -1,8 +1,9 @@
|
||||
# Лабораторная работа 1
|
||||
Дисциплина "Вычислительная математика"
|
||||
## Авторы:
|
||||
ПИбд-33 Борщевская
|
||||
ПИбд-33 Борщевская, Прыткина
|
||||
### Вариант 7
|
||||
Имеется два вида корма P1 и P2, содержащие питательные вещества (витамины) S1, S2, S3. Необходимо составить дневной рацион, имеющий минимальную стоимость, в котором содержание каждого вида питательных веществ было бы не менее установленного предела.
|
||||
Целевая функция: F = 4x+6y->min
|
||||
Ограничения:
|
||||
1) 3x+y>=9
|
||||
|
@ -0,0 +1,7 @@
|
||||
package ru.uni.symplex_method;
|
||||
|
||||
public class SimplexException extends Exception {
|
||||
public SimplexException(String error) {
|
||||
super(error);
|
||||
}
|
||||
}
|
@ -38,9 +38,9 @@ public class SimplexMatrix {
|
||||
return currentRowCount;
|
||||
}
|
||||
|
||||
public void addRow(double[] coefficients) throws SymplexException {
|
||||
public void addRow(double[] coefficients) throws SimplexException {
|
||||
if (isFill()) {
|
||||
throw new SymplexException("Матрица уже заполнена!!!");
|
||||
throw new SimplexException("Матрица уже заполнена!!!");
|
||||
}
|
||||
matrix[currentRowCount] = coefficients;
|
||||
currentRowCount++;
|
||||
@ -63,13 +63,13 @@ public class SimplexMatrix {
|
||||
|
||||
System.out.print("Базис\t");
|
||||
System.out.print("b\t\t");
|
||||
for (int i = 1; i <= numCols-1; i++) {
|
||||
System.out.print("x" + i +"\t\t\t");
|
||||
for (int i = 1; i <= numCols - 1; i++) {
|
||||
System.out.print("x" + i + "\t\t\t");
|
||||
}
|
||||
System.out.println();
|
||||
|
||||
for (int i = 0; i < matrix.length; i++) {
|
||||
if(i != matrix.length-1) {
|
||||
if (i != matrix.length - 1) {
|
||||
System.out.printf("%4s\t", basis.get(i));
|
||||
} else {
|
||||
System.out.printf("%4s\t", "D");
|
||||
|
@ -70,7 +70,7 @@ public class SimplexService {
|
||||
printMatrix();
|
||||
try {
|
||||
doIter();
|
||||
} catch (SymplexException exception) {
|
||||
} catch (SimplexException exception) {
|
||||
System.out.println("Произошла ошибка при выполнении: " + exception.getMessage());
|
||||
break;
|
||||
}
|
||||
@ -91,17 +91,17 @@ public class SimplexService {
|
||||
return Arrays.stream(matrix).allMatch(x -> x[0] >= 0);
|
||||
}
|
||||
|
||||
private void doIter() throws SymplexException {
|
||||
private void doIter() throws SimplexException {
|
||||
var matrix = simplexMatrix.getMatrix();
|
||||
// поиск разрешающей строки и столбца
|
||||
int indexRow = findRowIndex(matrix);
|
||||
if (indexRow == -1) {
|
||||
throw new SymplexException("Разрешающая строка не найдена");
|
||||
throw new SimplexException("Разрешающая строка не найдена");
|
||||
}
|
||||
var row = matrix[indexRow];
|
||||
int indexColumn = findColIndex(row);
|
||||
if (indexColumn == -1) {
|
||||
throw new SymplexException("Разрешающий столбец не найден");
|
||||
throw new SimplexException("Разрешающий столбец не найден");
|
||||
}
|
||||
double element = row[indexColumn];
|
||||
|
||||
@ -125,7 +125,7 @@ public class SimplexService {
|
||||
private int findRowIndex(double[][] matrix) {
|
||||
int index = -1;
|
||||
double maxAbs = -1;
|
||||
for (int i = 0; i < matrix.length-1; i++) {
|
||||
for (int i = 0; i < matrix.length - 1; i++) {
|
||||
if (matrix[i][0] < 0) {
|
||||
var value = Math.abs(matrix[i][0]);
|
||||
if (value > maxAbs) {
|
||||
|
@ -1,7 +0,0 @@
|
||||
package ru.uni.symplex_method;
|
||||
|
||||
public class SymplexException extends Exception {
|
||||
public SymplexException(String error) {
|
||||
super(error);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user