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 -ddocker-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.txtEğ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 upgradeBack-End sunucunu çalıştıralım.
flask --app app runYeni bir adet daha terminal açıp aşağıdaki komutla gerekli kütüphaneleri kurunuz.
cd frontend
yarnFront-end sunucusunu çalıştırınız.
yarn run viteAş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.txtpython DriverAssignmentServer.pyVscode daki split özelliğini kullanarak başlatabilirsiniz.