Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -709,13 +709,11 @@ def nutri_call():
|
|
709 |
|
710 |
|
711 |
|
712 |
-
|
713 |
|
714 |
|
715 |
from tabulate import tabulate
|
716 |
import numpy as np
|
717 |
-
|
718 |
-
|
719 |
|
720 |
# Глобальные параметры
|
721 |
TOTAL_NITROGEN = 120.0 # Общее количество азота
|
@@ -778,26 +776,14 @@ class NutrientCalculator:
|
|
778 |
# Формирование вектора B (целевые значения в ppm)
|
779 |
B = self.target_vector * self.volume / 1000 # Перевод ppm в граммы
|
780 |
|
781 |
-
#
|
782 |
-
|
783 |
-
|
784 |
-
# Добавляем допустимый перебор (до 10%)
|
785 |
-
tolerance = 0.10
|
786 |
-
B_max = B * (1 + tolerance) # Максимальные значения с учетом допуска
|
787 |
-
B_min = B * (1 - tolerance) # Минимальные значения с учетом допуска
|
788 |
-
|
789 |
-
# Решение системы уравнений с ограничениями
|
790 |
-
c = np.ones(len(fertilizer_names)) # Минимизируем сумму отклонений
|
791 |
-
result = linprog(c, A_ub=A, b_ub=B_max, A_eq=A, b_eq=B, bounds=bounds, method='highs')
|
792 |
-
|
793 |
-
if not result.success:
|
794 |
-
raise ValueError("Не удалось найти решение с текущими ограничениями.")
|
795 |
|
796 |
# Формирование результата
|
797 |
results = {}
|
798 |
for i, fert_name in enumerate(fertilizer_names):
|
799 |
-
if
|
800 |
-
results[fert_name] =
|
801 |
|
802 |
return results
|
803 |
|
|
|
709 |
|
710 |
|
711 |
|
|
|
712 |
|
713 |
|
714 |
from tabulate import tabulate
|
715 |
import numpy as np
|
716 |
+
import numpy as np
|
|
|
717 |
|
718 |
# Глобальные параметры
|
719 |
TOTAL_NITROGEN = 120.0 # Общее количество азота
|
|
|
776 |
# Формирование вектора B (целевые значения в ppm)
|
777 |
B = self.target_vector * self.volume / 1000 # Перевод ppm в граммы
|
778 |
|
779 |
+
# Решение системы уравнений A @ X = B
|
780 |
+
X, residuals, rank, s = np.linalg.lstsq(A, B, rcond=None)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
781 |
|
782 |
# Формирование результата
|
783 |
results = {}
|
784 |
for i, fert_name in enumerate(fertilizer_names):
|
785 |
+
if X[i] > 0:
|
786 |
+
results[fert_name] = X[i]
|
787 |
|
788 |
return results
|
789 |
|