- Optimasi kombinasi menu sarapan, makan siang, dan malam menggunakan Algoritma Genetika
- Evaluasi nutrisi berdasarkan standar AKG Kemenkes RI 2019
- Fungsi fitness berbasis penalti untuk kalori, protein, lemak, karbohidrat, dan anggaran
- Seleksi tournament dengan elitisme satu individu terbaik
- Single-point crossover dan random reset mutation
- Terminasi dini jika fitness target tercapai
- Pengukuran waktu komputasi GA
- Konfigurasi parameter GA secara manual untuk keperluan eksperimen (ukuran populasi, probabilitas crossover, probabilitas mutasi, jumlah generasi, fitness target)
- Grafik konvergensi fitness terbaik, rata-rata, dan terburuk per generasi
- Unduh dataset makanan dalam format CSV
- Antarmuka web responsif berbasis React
- Python 3.8+
- FastAPI
- Bun
- React 19
- Vite
- TypeScript
- Tailwind CSS 4
- Recharts
sisehat/
|-- api/ # Backend FastAPI + Algoritma Genetika
| |-- index.py # Entry point Vercel + FastAPI app
| |-- data.py # Dataset 30 makanan dan konstanta rentang ID
| |-- fitness.py # Fungsi fitness dengan pendekatan penalti
| |-- ga.py # Logika utama GA: inisialisasi, seleksi, crossover, mutasi
| |-- utils.py # Fungsi bantu: hitung nutrisi, evaluasi constraints, grafik
| |-- cli.py # Entry point CLI untuk menjalankan GA di terminal
| `-- requirements.txt
|-- apps/
| `-- web/ # Frontend React
| |-- src/
| | |-- components/ # MenuCard, ConstraintBadge, DatasetTable, KonvergensiChart, ParameterForm
| | |-- services/ # Fungsi fetch ke API
| | |-- types/ # TypeScript interface
| | `-- App.tsx
| |-- index.html
| `-- package.json
|-- vercel.json # Konfigurasi deployment Vercel
|-- package.json # Bun workspaces root
`-- .gitignore
-
Pastikan komputer sudah memiliki Python 3.8+, Bun, dan Git.
-
Clone repositori.
git clone git@github.com:franzxml/sisehat.git cd sisehatJika menggunakan HTTPS:
git clone https://github.com/franzxml/sisehat.git cd sisehat -
Setup virtual environment backend.
python3 -m venv api/.venv source api/.venv/bin/activate pip install -r api/requirements.txt -
Install dependensi frontend.
bun install
-
Jalankan seluruh aplikasi dalam satu perintah.
bun dev
-
Buka browser.
http://localhost:5173API berjalan di:
http://localhost:8000
bun dev— jalankan API dan web secara paralel dalam satu terminalbun dev:api— jalankan hanya backend FastAPIbun dev:web— jalankan hanya frontend Vitebun build:web— build frontend untuk produksi
| Method | Endpoint | Deskripsi |
|---|---|---|
| POST | /api/optimize |
Jalankan GA, kembalikan hasil optimasi lengkap |
| GET | /api/dataset |
Ambil daftar 30 makanan dalam format JSON |
| GET | /api/dataset/csv |
Unduh dataset dalam format CSV |
| GET | /api/health |
Cek status API |
| Parameter | Nilai |
|---|---|
| Ukuran Populasi | 50 |
| Jumlah Generasi Maksimum | 100 |
| Probabilitas Crossover | 0.8 |
| Probabilitas Mutasi | 0.05 |
| Metode Seleksi | Tournament (size=3) |
| Metode Crossover | Single-Point |
| Metode Mutasi | Random Reset |
| Fitness Target | 95 |
| Elitisme | 1 individu terbaik |
- Production: https://sisehat-nine.vercel.app
| Parameter | Batas Bawah | Batas Atas |
|---|---|---|
| Kalori | 1.800 kkal | 2.400 kkal |
| Protein | 55 g | — |
| Lemak | — | 70 g |
| Karbohidrat | 250 g | 350 g |
| Anggaran | — | Rp60.000 |
Dikembangkan oleh:
- @Adtriver
- @ghinaaa09
- @kaniaa-kr
- @tesafrnta
- @franzxml