Depolarda Tetris Oynamak
Depo çalışanlarınız ürünleri ararken “Bir blok buraya, bir blok şuraya…” diye düşünüyor ve sipariş hazırlarken zaman kaybediyor. Bu, yanlış yerleştirilen stoklarla birleşince ortaya şöyle bir manzara çıkıyor:
“Depo görevlisi her siparişte ‘Tetris’ oynuyormuş gibi hissediyor!”
Yanlış stok tahmini, stok fazlası veya eksikliği gibi sorunlar da cabası. Sonuç? Müşteriler memnuniyetsiz, gelirler düşüşte ve çalışanlar stres içinde.
Stokta Yok, Ama Neden Yok?
Sitenizde en popüler ürünlerden biri tam da Black Friday zamanı “Stokta yok” yazısıyla karşılansa ne olur? Müşteri:
“Siz de mi Brütüs?”
Yanlış stok tahmini nedeniyle fırsat ürünleri tükendiğinde kaybedilen satışları ve müşterilerin hayal kırıklığını düşünün. Depo düzeninde ise en çok satan ürünlerin yanlış yerlere konması, sipariş süresini uzatır ve çalışanların motivasyonunu düşürür.
AI’ı Depo Yönetimine Davet Ediyoruz
Yapay zeka ile bu kaotik tabloyu düzenlemek mümkün. İşte, depo yönetimini bir sanat eserine dönüştürecek birkaç temel çözüm:
1. Talep Tahmini ve Veritabanı Entegrasyonu
Depo yönetiminde yapay zekadan faydalanmak için önce bir veri tabanı altyapısı oluşturalım. Bu altyapı sayesinde geçmiş satış verileri tutulabilir ve tahmin edilen değerler işlenebilir.
Veri Tabanı Şeması
Aşağıdaki tabloyu oluşturduğumuzu varsayalım:
CREATE TABLE sales_data (
id INT AUTO_INCREMENT PRIMARY KEY,
product_id INT NOT NULL,
year INT NOT NULL,
month INT NOT NULL,
actual_sales INT,
predicted_sales INT
);
Bu tablo, ürünlerin gerçekleşen aylık satışlarını (actual_sales
) ve tahmin edilen satışlarını (predicted_sales
) tutacak. Ayrıca, geçmiş yıllara ait verilerin de saklanabilmesi için year
kolonunu ekledik.
PHP ile Veritabanı İşlemleri
Bir PHP sınıfı ile bu tablo üzerinde işlem yapabiliriz:
class SalesData {
private $pdo;
public function __construct($host, $db, $user, $pass) {
$this->pdo = new PDO("mysql:host=$host;dbname=$db", $user, $pass);
}
public function getActualSales($productId) {
$stmt = $this->pdo->prepare("SELECT year, month, actual_sales FROM sales_data WHERE product_id = ? ORDER BY year ASC, month ASC");
$stmt->execute([$productId]);
return $stmt->fetchAll(PDO::FETCH_ASSOC);
}
public function updatePredictedSales($productId, $year, $month, $predictedSales) {
$stmt = $this->pdo->prepare("INSERT INTO sales_data (product_id, year, month, predicted_sales) VALUES (?, ?, ?, ?) ON DUPLICATE KEY UPDATE predicted_sales = VALUES(predicted_sales)");
$stmt->execute([$productId, $year, $month, $predictedSales]);
}
}
Python ile Tahmin Modeli ve Servisi
Python’da bir tahmin modeli oluşturup bir API ile PHP’ye bağlayabiliriz.
Tahmin Modeli:
from flask import Flask, request, jsonify
import pickle
import numpy as np
app = Flask(__name__)
# Örnek model yükleme (eğitim modeli daha önce oluşturulmuş olmalı)
with open('demand_model.pkl', 'rb') as f:
model = pickle.load(f)
@app.route('/predict', methods=['GET'])
def predict():
product_id = int(request.args.get('product_id'))
year = int(request.args.get('year'))
month = int(request.args.get('month'))
# Basit bir tahmin mantığı (örnek için dummy input)
prediction = model.predict(np.array([[product_id, year, month]]))[0]
return jsonify({"product_id": product_id, "predicted_sales": int(prediction)})
if __name__ == '__main__':
app.run(debug=True)
Bu servis, ürün ID’sine, yıl ve aya dayalı tahminleri dönecek şekilde ayarlandı.
Model Eğitimi:
Modeli eğitmek için aşağıdaki gibi bir eğitim scripti kullanılabilir:
import pandas as pd
from sklearn.ensemble import RandomForestRegressor
import pickle
# Veri yükleme
sales_data = pd.read_csv('sales_data.csv')
# Özellikler ve hedef değişken
data_features = sales_data[['product_id', 'year', 'month']]
data_target = sales_data['actual_sales']
# Model eğitimi
model = RandomForestRegressor()
model.fit(data_features, data_target)
# Modeli kaydetme
with open('demand_model.pkl', 'wb') as f:
pickle.dump(model, f)
Bu kod sayesinde modelinizi eğitebilir ve daha iyi sonuçlar almak için düzenli olarak güncelleyebilirsiniz. Model güncellemeleri için yeni verileri topladıktan sonra aynı eğitim scriptini tekrar çalıştırmanız yeterlidir.
PHP ile Python Servisine Bağlantı
PHP sınıfına tahmin servisi ile iletişim kurmak için bir metod ekleyelim:
class SalesData {
// ...
public function predictSales($productId, $year, $month) {
$url = "http://127.0.0.1:5000/predict?product_id=$productId&year=$year&month=$month";
$response = file_get_contents($url);
$data = json_decode($response, true);
$this->updatePredictedSales($productId, $year, $month, $data['predicted_sales']);
return $data;
}
}
Kullanım Örneği:
$salesData = new SalesData('localhost', 'your_database', 'your_user', 'your_password');
// Geçmiş gerçekleşen satışları al
$actualSales = $salesData->getActualSales(101);
print_r($actualSales);
// Bir ürün için tahmin yap ve veritabanına kaydet
$prediction = $salesData->predictSales(101, 2024, 12);
echo "Tahmini satış: " . $prediction['predicted_sales'];
Bu entegrasyon ile depo yönetimini bir adım öteye taşıyabilir, hem geçmiş verilerinizi analiz edebilir hem de yapay zeka ile geleceğe dair stratejiler geliştirebilirsiniz. Depolarınızı akıllandırmanın tam zamanı!