Burger King’de en besleyici ürün kombinasyonunu Python ve Repl.it kullanarak interaktif olarak bulmak

Tolga Kurtuluş
4 min readMay 6, 2020

--

Lezzetli bir optimizasyon problemini, Burger King ürünleri ile çözüme ulaştırmak ister misiniz? Buyurun öyleyse okumaya!

Fotoğraf sahibi: Dan Gold [4]

Herkese merhabalar. İlk Medium yazım ile karşınızdayım. :)

Corona virüsü nedeniyle uzun süreler evde kaldığımız şu günlerde şahsi olarak ve bir çoğunuzun da yemeyi özlediğini düşündüğüm Burger King ürünlerine ait besin değerlerini analiz etmeye ve en besleyici ürün kombinasyonunu bulmaya çalışacağım. Günlük besin ihtiyacımızı karşılayacak ve aynı zamanda en az kalori almamızı sağlayacak menüyü seçmeye çalışacağım.

Ürün: “Triple Whopper® Menü”

Hadi leziz bi başlangıç yapalım!

İlk adım olarak tüm Burger King ürünlerine ait besin değelerini liste halinde https://www.burgerking.com.tr/besin-degerleri websitesi üzerinden excel dosyasına kaydederek başlıyoruz. Bu site üzerinden ürünler hakkında elde ettiğimiz veri seti aşağıdaki gibi bilgiler içermektedir.[1]

1 ) Ürün Adı-Boyut-Adet
2 ) Enerji (kcal)
3 ) Protein (g)
4 ) K.hidrat(g)
5 ) Yağ (g)
6 ) Sodyum (mg)

Yapmak istediğimiz günlük temel besin değeri ihtiyacımızı karşılayan ve bunun yanı sıra en az kalorili menüyü bulma çalışmamız bir “discrete optimizasyon problemi” olarak literatürde yer almakta. Bunun için Python kütüphanelerinden lineer optimizasyon için “pulp” ve verimizi düzenlemek için “pandas” kütüphanelerine ihtiyaç duyacağız. Bu kütüphanelerin halihazırda yüklü olduğu ve sizin run etmenizi bekleyen kodu aşağıda Repl.it aracılığıyla paylaşıyor olacağım. Öncesinde kullandığım metodlar ve teknikleri açıklamak isterim.

Temel metodlar ve besleyici ürünlerle dolu menüler!

Ürün: “King Delight® Akdeniz Salata”

İlk olarak problemin ana fikri olan optimal düşük kalori bizim diğer değişkenlere bağlı olarak belirlediğimiz kıstastı. Bunu minimize edeceğimiz bir şekilde modele response olarak tanıtarak başlıyorum.

Ardından veri setimizde bulunan Protein, Karbonhidrat, Yağ ve Sodyum değerlerini “Günlük Alınması Gereken Besin Değerleri Tablosu” [2] üzerinden belirlediğim;

>= 50.0, “ProteinMinimum”

>= 65.0, “YagMinimum”

>= 310.0, “KarbonhidratMinimum”

>= 2400.0, “SodyumMinimum”

değerleri ile sınırlandırıyorum. Buradaki asıl önemli nokta günlük besin değerlerinin tamamının karşılanması. Protein, Karbonhidrat, Yağ ve Sodyum değerleri bu veri setinde bulunan tüm sütunlar olduğu için tümünü minimize ederek bir sonuca ulaşmayı hedefliyorum. Aynı çalışmayı aşağıdaki Repl.it interaktif kodları içinde değerleri değiştirip alt ve üst sınır belirleyerek yeniden çalıştırabilirsiniz.

HATIRLATMA : En doğru, sağlıklı ve size uygun beslenme ve diyet yöntemleri için mutlaka doktorunuza başvurunuz.

Bu problemi çözerken ilk aldığım sonuçlarda modelin çıktısı menü içerisindeki ürünler 2.3685 adet gibi tam olmayan ürün adedi içermekteydi. Bunun için sonradan “integer” olarak belirlediğim çıktılarda daha kesin ve tam sayıda ürün adedi elde etmeye başladım. Bunun yanı sıra bir üründen en az 1 en çok 5 adet tüketilebileceği gibi alt ve üst limit de belirledim ki daha optimal ve gerçekçi bir sonuç elde edilebilsin. Elbette ki metabolizma olarak herkesin aynı olmayacağı düşünüldüğünde optimal olarak belirlenen bu değerler tam olarak anlam ifade etmeyebilir. Böylece bu problemi eldeki verilerle olabilecek en optimal çözümüyle aşağıda Repl.it üzerinde hazırladığım kodu “run” etmeniz dahilinde siz de erişebilirsiniz. Kodları “run” etmeden önce not olarak aşağıda bulunan açıklamalara göz gezdirmenizi de öneririm.

Not : Modelin çıktıları aşağıdaki gibi sıralı kategorize edilmiştir.

1) “Günlük Besin Değerlerini Karşılayan Menü ve Ürün Adedi”
2) Toplam Kalori Miktarı
3) Bu Menüden Alacağınız Besin Değerleri (ürün adedi ile besin değerleri çarpılarak hesaplanmıştır)

Not 2: Kendi belirleyeceğiniz değerler ile problemi yeniden çözmeniz dahilinde ilk çıktı olan “Problem Durumu” nun tüm olası sonuçlarının açıklaması aşağıdaki gibidir.

Olası Durumlar:

Problem Çözüldü “Optimal” 1
Problem Çözülmedi “Not Solved” 0
Çözüm Mümkün Değil “Infeasible” -1
Çözüm Ölçülemez “Unbounded” -2
Çözüm Tanımsız “Undefined” -3

Ve beklenen an!

Artık Repl.it Online IDE üzerinden “run” etmek için aşağıda ortada bulunan yeşil ⏵butonunu kullanabilirsiniz. Optimal menümüz çıktı olarak karşımıza gelecektir.

Başka bir paylaşımda görüşmek üzere!

Sağlıklı günler dilerim. :)

İnteraktif Kodlar (repl.it aracılığıyla [3]).

Ürün Hakları ve Kaynaklar:

TAB GIDA: http://www.tabgida.com.tr/

TM & © 2020 Burger King Corporation. All rights reserved. Burger King Corporation is the exclusive owner of the Burger King mark and logo. TM & © 2020 Burger King Corporation. Tüm Hakları saklıdır. Burger King Corporation, Burger King markası ve ambleminin tek sahibidir. TAB GIDA “Burger King” markasının Türkiye’de münhasır lisans hakkı sahibi ve restoranlarının Türkiye’deki işletmecisi ve geliştirme ortağıdır. TAB Gıda, Ne Yediğini Bil markası ve ambleminin tek hak sahibidir. Yasal bilgiler için tıklayınız.

Bu paylaşımda ifade edilen tüm görüşler şahsıma aittir ve hiçbir şekilde hiçbir kuruluşla ilişkili değildir. Bu paylaşımda kullanılan yöntemler/görseller sadece bilgi ve eğitim amaçlıdır. Ticari bir amaç içermemektedir.

Referanslar:
[1] Burger King — Besin Değerleri Tablosu
https://www.burgerking.com.tr/besin-degerleri
[2] Günlük Besin İhtiyacı Tablosu
https://www.diyetasistan.com/gunluk-besin-ihtiyaci-tablosu.html
[3] Repl.it
https://repl.it/@tolgakurtuluss/burgerkingmenuoptim
[4] Dan Gold Pictures— Unsplash.com
https://unsplash.com/@danielcgold

--

--