Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -707,6 +707,11 @@ def nutri_call():
|
|
707 |
|
708 |
|
709 |
|
|
|
|
|
|
|
|
|
|
|
710 |
|
711 |
|
712 |
# Глобальные параметры
|
@@ -773,11 +778,14 @@ class NutrientCalculator:
|
|
773 |
# Ограничения: количество удобрений >= 0
|
774 |
bounds = [(0, None) for _ in fertilizer_names]
|
775 |
|
776 |
-
#
|
777 |
-
|
|
|
|
|
778 |
|
779 |
# Решение системы уравнений с ограничениями
|
780 |
-
|
|
|
781 |
|
782 |
if not result.success:
|
783 |
raise ValueError("Не удалось найти решение с текущими ограничениями.")
|
@@ -818,17 +826,6 @@ if __name__ == "__main__":
|
|
818 |
except Exception as e:
|
819 |
print(f"Критическая ошибка: {str(e)}")
|
820 |
|
821 |
-
if __name__ == "__main__":
|
822 |
-
try:
|
823 |
-
calculator = NutrientCalculator()
|
824 |
-
results = calculator.calculate()
|
825 |
-
if results:
|
826 |
-
print(calculator.generate_report(results))
|
827 |
-
else:
|
828 |
-
print("Решение не найдено.")
|
829 |
-
except Exception as e:
|
830 |
-
print(f"Критическая ошибка: {str(e)}")
|
831 |
-
|
832 |
|
833 |
|
834 |
|
|
|
707 |
|
708 |
|
709 |
|
710 |
+
|
711 |
+
|
712 |
+
from tabulate import tabulate
|
713 |
+
import numpy as np
|
714 |
+
from scipy.optimize import linprog
|
715 |
|
716 |
|
717 |
# Глобальные параметры
|
|
|
778 |
# Ограничения: количество удобрений >= 0
|
779 |
bounds = [(0, None) for _ in fertilizer_names]
|
780 |
|
781 |
+
# Добавляем допустимый перебор (до 10%)
|
782 |
+
tolerance = 0.10
|
783 |
+
B_max = B * (1 + tolerance) # Максимальные значения с учетом допуска
|
784 |
+
B_min = B * (1 - tolerance) # Минимальные значения с учетом допуска
|
785 |
|
786 |
# Решение системы уравнений с ограничениями
|
787 |
+
c = np.ones(len(fertilizer_names)) # Минимизируем сумму отклонений
|
788 |
+
result = linprog(c, A_ub=A, b_ub=B_max, A_eq=A, b_eq=B, bounds=bounds, method='highs')
|
789 |
|
790 |
if not result.success:
|
791 |
raise ValueError("Не удалось найти решение с текущими ограничениями.")
|
|
|
826 |
except Exception as e:
|
827 |
print(f"Критическая ошибка: {str(e)}")
|
828 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
829 |
|
830 |
|
831 |
|