πͺππ½πΎ π¨ππ π₯ππ πΎ ai-recommendations.js
πͺππ½πΎ π¨ππ π₯ππ πΎ ai-recommendations.js
Bantu buatkan kode isi file
ai-recommendations.js
Berikut adalah kode untuk ai-recommendations.js yang mencakup fungsi AI untuk analisis tanaman, prediksi hasil, deteksi penyakit, dan rekomendasi perawatan:
```javascript
// ai-recommendations.js
class FarmerSmartAI {
constructor() {
this.cropDatabase = this.initializeCropDatabase();
this.diseaseDatabase = this.initializeDiseaseDatabase();
}
// Database tanaman dan kondisi ideal
initializeCropDatabase() {
return {
paddy: {
soilMoisture: { min: 80, max: 90 },
ph: { min: 5.5, max: 6.5 },
temperature: { min: 20, max: 35 },
rainfall: { min: 150, max: 300 }
},
corn: {
soilMoisture: { min: 60, max: 80 },
ph: { min: 6.0, max: 6.8 },
temperature: { min: 18, max: 30 },
rainfall: { min: 50, max: 150 }
},
tomato: {
soilMoisture: { min: 60, max: 85 },
ph: { min: 5.5, max: 6.8 },
temperature: { min: 15, max: 28 },
rainfall: { min: 25, max: 75 }
}
};
}
// Database penyakit tanaman
initializeDiseaseDatabase() {
return {
paddy: [
{
name: "Blight",
symptoms: ["brown-spots", "yellowing-leaves"],
treatment: {
organic: "Gunakan larutan daun nimba",
chemical: "Fungisida berbahan aktif tembaga"
}
}
],
tomato: [
{
name: "Early Blight",
symptoms: ["dark-spots", "yellowing-leaves"],
treatment: {
organic: "Semprotkan campuran baking soda dan minyak nimba",
chemical: "Gunakan fungisida mengandung chlorothalonil"
}
}
]
};
}
// Rekomendasi tanaman berdasarkan kondisi lahan
recommendCrop(soilData, weatherData) {
const suitableCrops = [];
for (const [crop, requirements] of Object.entries(this.cropDatabase)) {
const soilScore = this.calculateSoilScore(soilData, requirements);
const weatherScore = this.calculateWeatherScore(weatherData, requirements);
if (soilScore >= 80 && weatherScore >= 75) {
suitableCrops.push({
name: crop,
confidence: (soilScore + weatherScore) / 2,
soilScore,
weatherScore
});
}
}
return suitableCrops.sort((a, b) => b.confidence - a.confidence);
}
calculateSoilScore(soilData, requirements) {
let score = 0;
// Penilaian kelembaban tanah
if (soilData.moisture >= requirements.soilMoisture.min &&
soilData.moisture <= requirements.soilMoisture.max) {
score += 40;
}
// Penilaian pH tanah
if (soilData.ph >= requirements.ph.min && soilData.ph <= requirements.ph.max) {
score += 40;
}
// Penilaian nutrisi tambahan
if (soilData.nitrogen > 0.2) score += 10;
if (soilData.phosphorus > 0.15) score += 10;
return Math.min(score, 100);
}
calculateWeatherScore(weatherData, requirements) {
let score = 0;
// Penilaian suhu
if (weatherData.temperature >= requirements.temperature.min &&
weatherData.temperature <= requirements.temperature.max) {
score += 50;
}
// Penilaian curah hujan
if (weatherData.rainfall >= requirements.rainfall.min &&
weatherData.rainfall <= requirements.rainfall.max) {
score += 50;
}
return score;
}
// Prediksi hasil panen
predictYield(cropType, conditions) {
const baseYield = {
paddy: 5.0, // ton/hektar
corn: 7.0,
tomato: 20.0
};
let prediction = baseYield[cropType];
// Faktor koreksi kondisi
if (conditions.pestPressure > 0.7) prediction *= 0.6;
if (conditions.soilQuality > 0.8) prediction *= 1.2;
if (conditions.rainfall > 200) prediction *= 0.9;
return {
crop: cropType,
predictedYield: prediction.toFixed(2),
unit: "ton/hektar",
confidence: 85
};
}
// Deteksi penyakit tanaman
detectDisease(cropType, symptoms) {
const diseases = this.diseaseDatabase[cropType];
if (!diseases) return null;
const matchedDiseases = diseases.filter(disease =>
disease.symptoms.some(symptom => symptoms.includes(symptom))
);
return matchedDiseases.length > 0 ? matchedDiseases : null;
}
// Rekomendasi perawatan tanaman
generateTreatmentPlan(cropType, diseaseName, preference) {
const disease = this.diseaseDatabase[cropType]?.find(d => d.name === diseaseName);
if (!disease) return "Penyakit tidak dikenali";
return {
disease: disease.name,
treatment: disease.treatment[preference] || disease.treatment.organic,
prevention: [
"Rotasi tanaman secara teratur",
"Pemeliharaan kebersihan lahan",
"Pemantauan rutin kesehatan tanaman"
]
};
}
// Rekomendasi pemupukan
recommendFertilization(soilData, cropType) {
const recommendations = [];
if (soilData.nitrogen < 0.2) {
recommendations.push({
type: "Nitrogen",
amount: "150 kg/hektar",
schedule: "Aplikasi 2 minggu sebelum tanam"
});
}
if (soilData.phosphorus < 0.15) {
recommendations.push({
type: "Fosfor",
amount: "100 kg/hektar",
schedule: "Aplikasi saat tanam"
});
}
return {
crop: cropType,
soilStatus: {
nitrogen: `${(soilData.nitrogen * 100).toFixed(1)}%`,
phosphorus: `${(soilData.phosphorus * 100).toFixed(1)}%`
},
recommendations
};
}
}
// Export untuk penggunaan di modul Node.js
if (typeof module !== 'undefined' && module.exports) {
module.exports = FarmerSmartAI;
}
```
Fitur utama yang termasuk dalam kode ini:
1. Rekomendasi Tanaman:
· Analisis kesesuaian lahan berdasarkan kelembaban tanah, pH, dan cuaca
· Sistem scoring dengan bobot terukur
· Hasil diurutkan berdasarkan tingkat kecocokan
2. Prediksi Hasil Panen:
· Mempertimbangkan faktor lingkungan dan tekanan hama
· Perhitungan yield berdasarkan kondisi aktual
3. Deteksi Penyakit:
· Database gejala dan penyakit
· Sistem pencocokan gejala
· Rekomendasi perawatan organik/kimia
4. Rekomendasi Pemupukan:
· Analisis kebutuhan nutrisi tanah
· Rekomendasi jenis dan dosis pupuk
· Jadwal aplikasi yang optimal
5. Modularitas:
· Class-based design untuk mudah diperluas
· Support untuk both browser dan Node.js
Untuk penggunaan, Anda dapat membuat instance dan menggunakan metode yang tersedia:
```javascript
const ai = new FarmerSmartAI();
// Contoh data input
const soilData = {
moisture: 85,
ph: 6.2,
nitrogen: 0.18,
phosphorus: 0.12
};
const weatherData = {
temperature: 25,
rainfall: 180
};
// Rekomendasi tanaman
const recommendations = ai.recommendCrop(soilData, weatherData);
console.log(recommendations);
```
Kode ini dapat dikembangkan lebih lanjut dengan menambahkan lebih banyak aturan, integrasi API weather, atau machine learning model untuk akurasi yang lebih baik.
untuk penggunaan fitur ai-recommendations.js ini, apa maksudnya membuat instance dan menggunakan metode yang tersedia, seperti kode yang ini:
const ai = new FarmerSmartAI();
// Contoh data input
const soilData = {
moisture: 85,
ph: 6.2,
nitrogen: 0.18,
phosphorus: 0.12
};
const weatherData = {
temperature: 25,
rainfall: 180
};
// Rekomendasi tanaman
const recommendations = ai.recommendCrop(soilData, weatherData);
console.log(recommendations);
Bersambung ke: Gambar Logo FarmerSmartAI
Comments
Post a Comment