Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -771,13 +771,38 @@ calc.print_report()
|
|
771 |
|
772 |
|
773 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
774 |
|
775 |
|
776 |
|
777 |
|
778 |
|
779 |
-
|
780 |
-
|
|
|
|
|
|
|
|
|
781 |
|
782 |
|
783 |
|
|
|
771 |
|
772 |
|
773 |
|
774 |
+
def optimize_manual(calculator, target_ppm, max_iter=100):
|
775 |
+
"""Грубый подбор масс удобрений под целевой состав."""
|
776 |
+
current_ppm = calculator.calculate_ppm()
|
777 |
+
fertilizers = calculator.fertilizers.copy()
|
778 |
+
|
779 |
+
for _ in range(max_iter):
|
780 |
+
adjusted = False
|
781 |
+
for i, (name, grams) in enumerate(fertilizers):
|
782 |
+
for element, target in target_ppm.items():
|
783 |
+
current = current_ppm.get(element, 0)
|
784 |
+
if current < target:
|
785 |
+
# Увеличиваем массу удобрения, содержащего этот элемент
|
786 |
+
if element in fertilizers_db[name]:
|
787 |
+
fertilizers[i] = (name, grams * 1.05) # +5%
|
788 |
+
adjusted = True
|
789 |
+
if not adjusted:
|
790 |
+
break
|
791 |
+
calculator.fertilizers = fertilizers
|
792 |
+
current_ppm = calculator.calculate_ppm()
|
793 |
+
|
794 |
+
return calculator
|
795 |
|
796 |
|
797 |
|
798 |
|
799 |
|
800 |
+
target = {"N (NO3-)": 150, "Ca": 200, "Mg": 50}
|
801 |
+
calc = HydroCalculator(10)
|
802 |
+
calc.add_fertilizer("Кальциевая селитра", 1) # Начальное приближение: 1 г
|
803 |
+
calc.add_fertilizer("Сульфат магния", 1)
|
804 |
+
optimize_manual(calc, target)
|
805 |
+
calc.print_report()
|
806 |
|
807 |
|
808 |
|