Optimizasyon Problemlerinin Excel Solver İle Çözümü
Mühendisliğin temel amaçlarından biri, bir sistemin kaynaklarını doğru yönetmeye paralel olarak, sistemin işleyişinde çıkan sorunlar için çözümler bulmaktır. Başka bir deyişle; bulunan kaynakları (hammadde, işgücü, nakit, ekipman, zaman, kapasite vb.) doğru olarak yönetmek ve optimizasyonu en yüksek seviyede tutarak daha fazla kar etmektir. Çünkü bir şirketin en temel amacı en yüksek kar seviyesine ulaşmaktır. Optimizasyon kavramının asıl yaygınca kullanılması ise, 2. Dünya Savaşına dayanır.
1.1 Optimizasyonun Tarihçesi, Amacı ve Önemi
Temel olarak, insanların, “daha iyi nasıl olabilir ya da nasıl elde edilebilir?” sorusuna cevap aramaları sonucu kullanılmaya başlanmıştır.[1] Problemlerin sayısının ve çeşitlerinin artması, karar vericilerin işini zorlaştırmıştır. Çünkü bilinen çözüm teknikleri, problemlerin yeni durumları için yeterli olamamaktadır.[1] Bu sebeplerden dolayı, optimizasyon bir sistem için oldukça önemlidir. Bunlara ek olarak, optimizasyonun kullanılacağı sistemin, sadece üretim yapılan veya sadece servis hizmeti yapan bir yer olması zorunlu değildir; bir sistemden kastımız, bir insanın kendi kaynaklarını (mülk, araç, nakit, zaman) doğru yönetmesi de olabilir. Python programlama ilgileniyorsunuz yazımızı okuyabilirsiniz.
İçindekiler
- 1. Giriş
- 1.1 Optimizasyonun Tarihçesi, Amacı ve Önemi
- 1.2 Optimizasyon Nedir, Nasıl Faydalanılır ve Değişkenleri Nelerdir?
- 2. Giapetto Örneği
- 3. Excel Solver
- 3.1 Neden Solver Eklentisi Kullanılmalıdır?
- 3.2 Solver Eklentisi Nedir ve Ne İçin Kullanılır?
- 3.3 Solver Kurulumu ve Kullanımı
- 3.3.1 Solver Kurulumu
- 3.3.2 Solver Kullanımı
- 4. Sonuç
- 5. Kaynakça
1.2 Optimizasyon Nedir, Nasıl Faydalanılır ve Değişkenleri Nelerdir?
Optimizasyonun tanımı ise, bir sorunun çözümünü veya tasarımını bulma işlemlerini en az sermaye, işgücü ve çaba ile yapmak olarak yapılabilir.
Optimizasyonun en yüksek seviyesine ulaşmada kullanılan metotlar, matematiksel programlama olarak adlandırılır. Matematiksel programlandırmanın alt dallarından biri ise yöneylem araştırmasıdır.
Örnek olarak bir metal mahfazalı modüler hücreyi ele alalim. Eğer iyi bir metal mahfazalı modüler hücre üretmek istiyorsak, bunun için bazı temel şartların sağlanması gerekir:
- Hammaddeleri sağlam olmalı
- Uzun ömürlü olmalı
- Sürekliliği sağlanmış topraklama sistemine sahip olmalı
- Tip testlere uygun olarak imal edilebilmeli
- Satıldıktan sonra 5 yıl gibi uzun bir süre garanti kapsamında olacak kadar sağlam olmalı
- Maddi olarak çok da pahalı olmamalı
Bu değişkenlerin hepsi, matematik dilinde denklemlere dönüştürülebilecek ifadelerdir. Öncelikli olarak, modelleme dediğimiz bu matematik dilinde denklemlere dönüştürmeliyiz.
Yukarıda bahsedilen ifadeler, birbiriyle zıt düşen ifadelerdir. Mesela, hammaddeleri çok sağlam olan bir hücrenin, uygun fiyatlı olması ya da Türk yapımı olan bir hücrenin kaliteli olması, insanlar tarafından çok beklendik bir şey değildir. Bu zıtlıkların orta yolu bulunmasının ve iki durumun da aynı anda olabilir. Bunun yanında, bu maddeler, matematiksel olarak denkleme dönüştürülebilir. Daha sonrasında ise, o denklemlerin doğruları, bir xy düzlemine yerleştirilir. Bu doğrular arasında kalan bölge, kritik bölgemiz olur. Sonuç olarak, üreteceğimiz hücrenin, bu özelliklerinin orta yolu, bu kritik bölgenin arasında kalan bölgeye göre belirleriz.
Yani, hücremizi üretebileceğimiz az maliyetli haliyle yapılabilecek en sağlam halini; Türkiyede üretilen hücremizi, en kaliteyi inanılmaz seviyelerde arttırarak yapabiliriz.
Bunlara ek olarak; işçi sayısı, zaman, sermaye gibi faktörler de kritik bölge icin çizmemiz gereken diğer temel ifadelerdir.
2. Giapetto Örneği
Yöneylem arastırmasının çok temel ve giriş konusu olan matematiksel programlama başlığının altında, çok klasikleşmiş bir örnek verecek olursak, Giapetto örneğini verebiliriz.
Örnek şu şekildedir:
Giapetto, tahtadan asker ve tren üretmektedir. Her asker için; satış fiyatı 27$, hammadeleri 10$ değerindedir. Üretimi, 2 saat montaj ve 1 saat marangozluk gerektirir ve haftalık değişken maliyeti 14$ dır. Her tren için ise; satiş fiyatı 21$, hammaddeleri 9$ değerindedir. Üretimi 1 saat montaj ve 1 saat marangozluk gerektirir ve haftalık değişken maliyeti 10$ dır. Hammaddenin sınırsız olduğunu düşünürsek, bunların dışında; Giapetto, haftalık en fazla 100 saat montaj yapabilirken, en fazla 80 saat marangozluk yapabilir. Ayrıca, trenlerin satışının üst limiti olmazken, askerler en fazla 40 tane satılabilmektedir.
Giapetto, haftalik kar seviyesini (gelirler-giderler) en üst seviyeye çıkarmak istiyor. Bunu daha rahat yapabilmek için, matematiksel modelleme olusturarak kritik bölgemizi bulacağız.
Çözüm kısmı ise su şekildedir;
- İlk olarak değişkenleri tanımlarız;
- x1: her hafta üretilen asker sayısı
- x2: her hafta üretilen tren sayısı
- Sonra, belirlediğimiz değişken cinsinden karımızı, yani amaç fonksiyonumuzu hesaplayalım;
- Haftalık gelirimiz: 27x1 + 21x2
- Haftalık hammadde maliyetimiz: 10x1 + 9x2
- Haftalık değişken maliyetimiz: 14x1 + 10x2
Haftalık Kar = Haftalık Gelir – Haftalık Hammadde Maliyetleri – Haftalık Değişken Maliyetler
Formülünü kullanarak amaç foksiyonunu hesaplarsak:
(27x1 +21x2) – (10x1 +9x2) – (14x1 +10x2) = 3x1 +2x2 buluruz.
Maksimizasyon problemimizin amaç fonksiyonumuzun notasyon olarak gösterimi de şu sekildedir: Max z = 3x1 +2x2
Daha sonra, kıstaslarımızı matematiksel olarak yazalım;
- Kıstas 1: Her hafta, 100 saatten fazla bitirme süresi kullanılamaz.
- Kıstas 2: Her hafta 80 saatten fazla marangozluk süresi kullanılamaz.
- Kıstas 3: Sınırlı talep nedeniyle en fazla 40 asker üretilmeli.
- Kıstas 4: Üretim 0 dan az olmamalı.
Matematiksel olarak yazmak gerekirse;
- Kıstas 1: 2 x1 + x2 ≤ 100
- Kıstas 2: x1 + x2 ≤ 80
- Kıstas 3: x1 ≤ 40
- Kıstas 4: x1, x2 ≥ 0
Son olarak modellemelerimizi toplu olarak notasyona uygun bir şekilde yazalım: max z = 3x1 +2x2 (amaç fonksiyonu) s.t
- 2 x1 + x2 ≤ 100 (montaj kısıtı)
- x1 + x2 ≤ 80 (marangozluk kısıtı)
- x1 ≤ 40 (asker talebi kısıtlaması)
- x1, x2 ≥ 0 (işaret kısıtlaması)
Sonuç olarak bizim kritik bölgemiz (feasible region), yukarıda kalan bütün doğrulari çizdikten sonra, ortada kalan sarı bölge olmaktadır.
Fig. 1 : Giapetto problem kritik alan
Bulduğumuz sonuçlara göre, optimal sonuçumuz şu şekildedir;
z = 3x1 + 2x2 = 3(20) + 2(60) = $180
Yani, 20 adet asker (x1), 60 adet tren (x2) üreterek 180$ kar etmemiz, bizim için optimal sonuçtur.
3. Solver
3.1 Neden Solver Eklentisi Kullanılmalıdır?
Yukarıda görüldüğü gibi, en temel ifadeler ile optimal sonucu bulmanın mantığı bu şekildedir ve her biri bir denklem olarak düşünülünce sayıları oldukça fazladır. Yani bütün bu denklemleri yazmak ve daha sonrasında da bir grafik çizerek en sonunda kritik bölgeden optimal sonucu bulmak, oldukça uzun bir süreçtir. Bütün bunların dışında, üreteceğimiz ürünün başka özellikleri (renk vb.) olduğunu da düşünecek olursak, bir sürü denklemin içinde kaybolmamak için Microsoft Excelde, Solver adında bir eklenti programı mevcuttur. Bu eklenti, mantığı anlaşılmış optimal sonuç bulmak için, bir bilgisayar programında yazılımında kullanmaya başlamak için en yalın ve en kolay anlaşılabilir seçenektir. [3]
3.2 Solver Eklentisi Nedir ve Ne İçin Kullanılır?
Solver, benzetim çözümlemesi için kullanabileceğiniz bir Microsoft Excel eklenti programıdır. Bir hücredeki (amaç hücre) bir formül için optimum (en büyük veya en küçük) değeri bulmak için kullanılır. Basitçe, diğer hücreleri değiştirerek bir hücrenin en yüksek veya en küçük değerini belirlemek için kullanılır.
3.3 Solver Kurulumu ve Kullanımı
3.3.1 Solver Kurulumu
Solver özelliği, excel´in içinde olan bir özellik olmasına rağmen, kullanabilmek için etkinleştirilmelidir. Etkinleştirme işlemi ise şu şekilde yapılır; ilk olarak, araçlar menüsünden excel eklentileri kısmı açılır. Daha sonrasında ise excel solver seçeneği seçilir.
3.3.2 Solver Kullanımı
İlk olarak, amaç fonksiyonumuzu ve kısıtlarımızı unutmamak için excel hücrelerine aktarırız.
Fig. 2: Modellememizdeki denklemleri Excel hücrelerine yazma
Excel Solverda bir problemi çözmek için, ilk adımımız şu olmalı; problemimizdeki modelleme formatını, excel solver hücrelerine aktarmak. Excel hücrelerine aktarma işlemi, daha önce yazdığımız formattan çok farklı değildir. Bu adım, sadece amaç fonksiyonumuzun ve kıstaslarımızın (constraints) katsayılarını ve eşit/büyük eşit/küçük eşit olarak ayrı ayrı hücrelere yazmamızdan oluşur.
Fig. 3: Solver tablosunun oluşmaya baslaması
Bir sonraki adım olarak, “Topla.Çarpım” formülü ile, zmax hücresinin altındaki hücreler doldurulmaya başlanır. Bu formülün kullanımını 1. constraint için göstermek gerekirse; Figür 4´de görülen sarı renkli hücreler ile yine ayni figürden görebileceğiniz 1c yazan satırdaki hücreler ile arasında noktalı virgül olacak şekilde yazarız. Formülün yazımı figür 5´de gösterilmiştir. Figür 4de gösterilen sarı renkli hücreler, excel solver çalıştıktan sonra, bizim sonuç değerlerimiz olacaktır. Yani oyuncak tren ve askerlerimizden kaç tane üreteceğimizi, en optimal hali ile gösterecektir.
Fig. 4: Formülde kullanılan hücrelerin gösterimi
Fig. 5: Topla.Çarpım formülünün yazımı
Figür 4 ve 5´de kullanımını gördüğümüz bu formülü, diğer kıstaslar ve amaç fonksiyonu için de yaparız. Bu aşamada, henüz sistemi çalıştırmadığımız için, değerlerimiz 0 olarak gözükmektedir.
Fig. 6: Formülün diğer hücreler için de uygulanması
En son asama olarak, Excel Solverdan Giapetto örneğini Excel Solver aracılığıyla çözmek gerekirse, veri sekmesinden çözücü kısmına tıklarız. Son asama olan solver kullanma kısmında, ilk olarak açılan pencereden figür 7´de de görüldüğü gibi amaç fonksiyon hücresini seçeriz. (Bu problem için “Set Objective” kısmı için, J4 hücresi seçilir.) Daha sonrasında ise, yine figür 7´de görebileceğiniz gibi, değişken hücre secimi yapılır. (Bu problem için “By Changing Variable Cells” kısmı için, F3 ve G3 hücreleri seçilir.)
Fig. 7: Amaç Fonksiyonu ve Değişkenler hücrelerini seçme
Daha sonra ise, kısıtlarımızı girmek için ayni penceredeki add seçeneğine basıyoruz. Bu aşamada karşımıza çıkan pencere, figür 8´de görüldüğü gibidir. Bu aşamada; referans hücreleri, eşitlik/büyük eşitlik/küçük eşitlik durumlarını ve kısıt sayısını girmemiz gerekir.
Fig. 8: Kisit ekleme penceresi gösterimi
Figür 9´da görebileceğiniz gibi, bütün kısıtlarımız eklenmiştir.
Fig. 9: Kısıtların eklenmesi
En son adım olarak, pencerenin sağ alt kısmındaki solve seçeneğine tıkladığımız zaman, figür 10´daki sarı renkli olan hücrelerde görebileceğiniz gibi sonuçlarımız gösterilmektedir.
Fig. 10: Sonuçlar ekranı
Bundan çıkartabileceğimiz sonuç su şekildedir; x1 değişkenini tanımladığımız her hafta üretilmesi gereken asker sayısı 20 adet, x2 değişkenini tanımladığımız her hafta üretilmesi gereken tren sayısı 60 adettir, ve bizim kazanacağımız para 180 dolardır. Aynı problemi grafik ile çözdüğümüz zamanki aynı değerler çıkmıştır. (Bkz: 2. Bölüm) Bütün bunlara ek olarak, solve uzantısının bize sunduğu bazı avantajlar su şekildedir; 2´den fazla değişkenli problemleri ve/veya daha büyük katsayısı olan problemleri rahatlıkla solver ile çözebiliriz.
4. Sonuç
Endüstriyelleşen dünyada, optimizasyon tekniklerini iyi anlamak ve uygulayabilmek, bir şirketi ayakta tutmayı sağlayan en önemli faktörlerden birisidir. Bir şirkette çalşırken, excel solver eklentisini kullanmasak bile, genel olarak; optimizasyonun ne olduğunu anlamak, bir problem çözmede yeni teknikler geliştirmek yani aslında formatı tam olarak anlayabilmek için excel solver gibi sistemleri kullanarak bu yöndeki becerileri geliştirmek oldukça önemlidir. Excel solver´ın sahip olduğu sadelik ve aciklik, problem çözme konusunda kendini geliştirmek isteyenler için excel solver´ı oldukça kullanışlı kılmaktadır.
eren 2Yorum
Sena Bakir
says:Gercekten aciklayici ve etkili bi anlatim olmus cok tesekkur ederim.
Emrah ARSLANKEÇECİOĞLU
says:Optimizasyon konusu yıllar yılı hep ilgimi çeken güzel bir konudur. Bu anlatımda çok açıklayıcı olmuş. Elinize sağlık, teşekkür ederim.