DmitrMakeev commited on
Commit
8edd6e0
·
verified ·
1 Parent(s): a86b75b

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +5 -19
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
- from scipy.optimize import linprog
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
- # Ограничения: количество удобрений >= 0
782
- bounds = [(0, None) for _ in fertilizer_names]
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 result.x[i] > 0:
800
- results[fert_name] = result.x[i]
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