#include <crop_recommendation_engine.h>
|
| CropRecommendationEngine () |
|
RecommendationResult | generateRecommendation (const SensorData &data, const String &cropType, const String &growingType="soil", const String &season="spring", const String &soilType="loam") |
|
std::vector< String > | getAvailableCrops () const |
|
CropConfig | getCropConfig (const String &cropType) const |
|
bool | validateSensorData (const SensorData &data) const |
|
String | getCropScientificInfo (const String &cropType) const |
|
RecValues | computeRecommendations (const String &cropId, const SoilProfile &soilProfile, const EnvironmentType &envType) override |
| Вычисляет рекомендации для указанной культуры
|
|
void | applySeasonalCorrection (RecValues &rec, Season season, bool isGreenhouse) override |
| Применяет сезонные корректировки к рекомендациям
|
|
String | generateCropSpecificRecommendations (const String &cropName, const NPKReferences &npk, SoilType soilType, float pH) |
| Генерирует специфические рекомендации по культурам для неизмеряемых элементов
|
|
virtual | ~ICropRecommendationEngine ()=default |
|
◆ CropRecommendationEngine()
<<<<<<< HEAD namespace { float compensatePHInternal(float pHRawValue, float temperatureValue, float moistureValue) { return pHRawValue} float compensateECInternal(float ECRawValue, float temperatureValue) { return ECRawValue} float compensateNPKInternal(float NPKRawValue, float temperatureValue, float moistureValue) { return NPKRawValue} CropConfig applySeasonalAdjustments(const CropConfig &base, const String &season) { CropConfig adjusted=baseif(season=="spring") { adjusted.temperature+=0.0Fadjusted.humidity+=0.0Fadjusted.ec+=0.0Fadjusted.nitrogen *=1.15F adjusted.phosphorus *=1.10F adjusted.potassium *=1.12F } else if(season=="summer") { adjusted.temperature+=2.0Fadjusted.humidity -=5.0Fadjusted.ec+=200.0Fadjusted.nitrogen *=1.08F adjusted.phosphorus *=1.05F adjusted.potassium *=1.18F } else if(season=="autumn") { adjusted.temperature -=1.0Fadjusted.humidity+=5.0Fadjusted.ec -=100.0Fadjusted.nitrogen *=1.02F adjusted.phosphorus *=1.12F adjusted.potassium *=1.15F } else if(season=="winter") { adjusted.temperature -=3.0Fadjusted.humidity+=10.0Fadjusted.ec -=200.0Fadjusted.nitrogen *=0.85F adjusted.phosphorus *=1.08F adjusted.potassium *=1.10F } return adjusted} CropConfig applyGrowingTypeAdjustments(const CropConfig &base, const String &growingType) { CropConfig adjusted=baseif(growingType=="greenhouse") { adjusted.temperature+=3.0Fadjusted.humidity+=10.0Fadjusted.ec+=300.0F adjusted.nitrogen *=1.25F adjusted.phosphorus *=1.20F adjusted.potassium *=1.22F } else if(growingType=="hydroponics") { adjusted.ec+=500.0F adjusted.nitrogen *=1.32F adjusted.phosphorus *=1.33F adjusted.potassium *=1.20F } else if(growingType=="aeroponics") { adjusted.ec+=400.0Fadjusted.nitrogen *=1.25F adjusted.phosphorus *=1.25F adjusted.potassium *=1.17F } else if(growingType=="organic") { adjusted.ec -=200.0F adjusted.nitrogen *=0.93F adjusted.phosphorus *=0.93F adjusted.potassium *=0.92F } return adjusted} CropConfig applySoilTypeAdjustments(const CropConfig &base, const String &soilType) { CropConfig adjusted=baseif(soilType=="sand") { adjusted.humidity -=5.0Fadjusted.ec -=200.0Fadjusted.nitrogen *=1.27F adjusted.phosphorus *=1.25F adjusted.potassium *=1.17F } else if(soilType=="loam") { } else if(soilType=="clay") { adjusted.humidity+=10.0Fadjusted.ec -=400.0Fadjusted.nitrogen *=0.96F adjusted.phosphorus *=0.90F adjusted.potassium *=0.94F } else if(soilType=="peat") { adjusted.humidity+=10.0Fadjusted.ec -=100.0Fadjusted.ph -=0.5Fadjusted.nitrogen *=1.20F adjusted.phosphorus *=1.19F adjusted.potassium *=1.14F } else if(soilType=="sandpeat") { adjusted.humidity+=2.0Fadjusted.ec -=50.0Fadjusted.ph -=0.2Fadjusted.nitrogen *=1.10F adjusted.phosphorus *=1.05F adjusted.potassium *=1.02F } return adjusted} }=======> develop CropRecommendationEngine::CropRecommendationEngine |
( |
| ) |
|
◆ generateRecommendation()
RecommendationResult CropRecommendationEngine::generateRecommendation |
( |
const SensorData & |
data, |
|
|
const String & |
cropType, |
|
|
const String & |
growingType = "soil" , |
|
|
const String & |
season = "spring" , |
|
|
const String & |
soilType = "loam" |
|
) |
| |
◆ getAvailableCrops()
std::vector< String > CropRecommendationEngine::getAvailableCrops |
( |
| ) |
const |
◆ getCropConfig()
CropConfig CropRecommendationEngine::getCropConfig |
( |
const String & |
cropType | ) |
const |
◆ validateSensorData()
bool CropRecommendationEngine::validateSensorData |
( |
const SensorData & |
data | ) |
const |
◆ getCropScientificInfo()
String CropRecommendationEngine::getCropScientificInfo |
( |
const String & |
cropType | ) |
const |
◆ computeRecommendations()
Вычисляет рекомендации для указанной культуры
- Аргументы
-
cropId | Идентификатор культуры (tomato, cucumber, etc.) |
soilProfile | Профиль почвы (SAND, LOAM, CLAY, PEAT, SANDPEAT) |
envType | Тип окружающей среды (OUTDOOR, GREENHOUSE, INDOOR) |
- Возвращает
- RecValues Структура с рекомендуемыми значениями
Замещает ICropRecommendationEngine.
◆ applySeasonalCorrection()
void CropRecommendationEngine::applySeasonalCorrection |
( |
RecValues & |
rec, |
|
|
Season |
season, |
|
|
bool |
isGreenhouse |
|
) |
| |
|
overridevirtual |
Применяет сезонные корректировки к рекомендациям
- Аргументы
-
rec | Рекомендации для корректировки |
season | Текущий сезон |
isGreenhouse | Признак теплицы |
Замещает ICropRecommendationEngine.
◆ generateCropSpecificRecommendations()
String CropRecommendationEngine::generateCropSpecificRecommendations |
( |
const String & |
cropName, |
|
|
const NPKReferences & |
npk, |
|
|
SoilType |
soilType, |
|
|
float |
pH |
|
) |
| |
|
virtual |
Генерирует специфические рекомендации по культурам для неизмеряемых элементов
- Аргументы
-
cropName | Название культуры |
npk | NPK данные |
soilType | Тип почвы |
pH | Значение pH |
- Возвращает
- String Рекомендации
Замещает ICropRecommendationEngine.
Объявления и описания членов классов находятся в файлах: