Bu proje Karadeniz Teknik Üniversitesi İstatistik Ve Bilgisayar Bilimleri 4. Sınıf Bitirme Tezi ve Seminer 1,2 dersleri kapsamında çalıştım.
- Ali Eren Ekinci (Proje Sahibi)
- Gülnur Ögür (Proje Sahibi)
- Dr. Öğr. Üyesi Tolga Berber (Danışman)
- Arş. Gör. Beyzanur Siyah (Danışman)
Belediye ve işletmelerin çalışanlarına eşit vardiya ataması önemli sorunlardan birisidir.
Bu optimizasyon problemini Hedef Programlama tekniğini kullanarak Python ile Google'nın geliştirdiği OR-TOOLS aracı ile çözümünü yaptım.
Bir atama probleminde işlerin makinelere dağıtımı, kişilerin işlere tayini, satış personelinin satış bölgelerine dağıtımı vb. yapılır.
Atama modeli aslında kaynakları işçiler, hedefleri de işler olan özel bir ulaştırma modelidir. Kaynakların sayısının hedeflerin sayısına eşit olması gerekir.
- Docker
- Python
- node.js
- yarn
İlk olarak ana klasörde docker ile veritabanı sunucusunu kurabilmek adına docker ile kurunuz.
docker-compose up -d
docker-compose.yml
gözüktüğü gibi pgadmin için oluşturulan email mail@pgadmin.com
ve şifre olarak ise 123456
oluşturuldu. http://localhost:82 giderek giriş yapınız.
Daha sora aşağıdaki fotografalara bakarak serveri ekleyebilirsiniz.
Yeni sekmede terminal açıp backend için env oluşturup gerekli kütüphaneleri yükleyelim.
cd backend
python -m venv .backend
.backend/Scripts/activate
pip install -r requirements.txt
Eğer değiştirtiyseniz backend/.env dosyasını düzenleyin.
DB_URL = postgresql://postgres:123456@localhost:5432/postgres
Flask SQLAlchemy ile oluşturulan veritabanını oluşturduğumuz sunucuyla eşitle.
flask db upgrade
Back-End sunucunu çalıştıralım.
flask --app app run
Yeni bir adet daha terminal açıp aşağıdaki komutla gerekli kütüphaneleri kurunuz.
cd frontend
yarn
Front-end sunucusunu çalıştırınız.
yarn run vite
Aşağıdaki kodlar ile bir adet env oluşturup gerekli kütüphaneleri yükleyin.
cd optimizationServer
python -m venv .optimization
.optimization/Scripts/activate
pip install -r requirements.txt
python DriverAssignmentServer.py
Vscode daki split özelliğini kullanarak başlatabilirsiniz.