π–ͺπ—ˆπ–½π–Ύ π–¨π—Œπ—‚ π–₯𝗂𝗅𝖾 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);




Mari saya jelaskan maksud dari "membuat instance dan menggunakan metode" dengan analogi yang mudah dipahami:

Analogi: Mesin Kopi

```javascript
// FarmerSmartAI adalah seperti "blueprint mesin kopi"
class MesinKopi {
  constructor() {
    this.jenisKopi = ["arabica", "robusta", "liberica"];
  }
  
  buatKopi(jenis, gula) {
    return `Kopi ${jenis} dengan ${gula}% gula`;
  }
}

// Membuat INSTANCE = Membuat mesin kopi nyata dari blueprint
const mesinKopiRumah = new MesinKopi();
const mesinKopiKantor = new MesinKopi();

// Menggunakan METODE = Memakai fungsi yang ada di mesin
const kopiSaya = mesinKopiRumah.buatKopi("arabica", 50);
console.log(kopiSaya); // "Kopi arabica dengan 50% gula"
```

Kembali ke FarmerSmartAI:

```javascript
// 1. MEMBUAT INSTANCE = "Menghidupkan AI-nya"
const ai = new FarmerSmartAI();
// Sekarang 'ai' adalah objek nyata yang siap digunakan

// 2. MENYIAPKAN DATA INPUT = "Memberi informasi ke AI"
const soilData = {
  moisture: 85,      // Kelembaban tanah 85%
  ph: 6.2,           // pH tanah 6.2 (sedikit asam)
  nitrogen: 0.18,    // Kadar nitrogen 18%
  phosphorus: 0.12   // Kadar fosfor 12%
};

const weatherData = {
  temperature: 25,   // Suhu 25°C
  rainfall: 180      // Curah hujan 180mm
};

// 3. MENGGUNAKAN METODE = "Meminta AI menganalisis"
const recommendations = ai.recommendCrop(soilData, weatherData);
// AI akan menganalisis data dan memberikan rekomendasi

// 4. MENDAPATKAN HASIL
console.log(recommendations);
```

Output yang Dihasilkan:

```javascript
[
  {
    name: "paddy",
    confidence: 85,
    soilScore: 90,
    weatherScore: 80
  },
  {
    name: "tomato", 
    confidence: 75,
    soilScore: 70,
    weatherScore: 80
  }
]
```

Cara Menggunakan di Aplikasi Nyata:

```javascript
// Di file app.js atau script utama
const ai = new FarmerSmartAI();

// Contoh dari input pengguna (form)
function analisisLahan() {
  const soilData = {
    moisture: document.getElementById('moisture').value,
    ph: document.getElementById('ph').value,
    nitrogen: document.getElementById('nitrogen').value,
    phosphorus: document.getElementById('phosphorus').value
  };
  
  const weatherData = {
    temperature: document.getElementById('temperature').value,
    rainfall: document.getElementById('rainfall').value
  };
  
  // Panggil AI untuk analisis
  const hasil = ai.recommendCrop(soilData, weatherData);
  
  // Tampilkan hasil ke pengguna
  tampilkanRekomendasi(hasil);
}

function tampilkanRekomendasi(rekomendasi) {
  rekomendasi.forEach(crop => {
    console.log(`✅ ${crop.name}: ${crop.confidence}% cocok`);
    console.log(`   Skor tanah: ${crop.soilScore}, Skor cuaca: ${crop.weatherScore}`);
  });
}
```

Metode Lain yang Bisa Digunakan:

```javascript
const ai = new FarmerSmartAI();

// 1. Prediksi hasil panen
const prediksi = ai.predictYield("paddy", {
  pestPressure: 0.3,
  soilQuality: 0.9,
  rainfall: 200
});

// 2. Deteksi penyakit
const penyakit = ai.detectDisease("tomato", ["dark-spots", "yellowing-leaves"]);

// 3. Rekomendasi pupuk
const pupuk = ai.recommendFertilization(soilData, "paddy");
```

Intinya:

· Instance = Membuat "robot AI" yang siap kerja
· Metode = Perintah yang bisa kita berikan ke "robot AI" tersebut
· Data Input = Informasi yang kita berikan ke AI untuk dianalisis
· Output = Hasil analisis dan rekomendasi dari AI

Jadi prosesnya sederhana: Buat AI → Beri data → Dapat rekomendasi!



Bersambung ke: Gambar Logo FarmerSmartAI








Comments

Popular posts from this blog

Aplikasi FarmerSmartAI:

icon-generator.html