Hedef Programlama

Kisaca soylemek gerekirse hedef programlama; kisitlar uzerinden olusturulmus karar mekanizmasinin/fonksiyonun cozulmesi sonucu ulasilmak istenen hedefe en yakin noktayi verir.
Karar fonksiyonunun cozumu lineer cozum yontemleriyle bulunur. Cogunlukla el ile cozulmesi zordur, bu nedenle bu tarz cozumlerde Lingo adindaki parali ve gereksiz program kullanilir. Biz ise mantikli birsey yapacagiz ve “lpsolve” adindaki acik kaynak kodlu cozumu kullanacagiz.

Daha fazla masal anlatmadan ornege geciyorum;

Ornek: Bir fabrikada 4 saatte bir A tipi ürün ve 3 saatte bir B tipi ürün elde edilebilmektedir. A tipi üründen 4 lira kar ve B tipi üründen 2 lira kar elde edilebilmektedir. Buna göre hedefler ;

  • 50 lira kar elde edebilmek
  • 32 saatten fazla veya az mesai yapmamak
  • En az 7 tane A ürününden üretmek
  • En az 10 tane B ürününden üretmek
Hedefler tutmadiginda her sapma icin cesitli cezalar odenmektedir. Bu cezalarin listesi asagidadir;
  • 1 lira -> kar hedefi tutmadığında
  • 5 lira -> fazla mesai ve 1 lira -> az mesaide
  • 1 lira -> A ürününden yeteri kadar üretilmediğinde
  • 1 lira -> B ürününden yeteri kadar üretilmediğinde
Cozum: Soru yapisi nedeniyle agirlikli hedefler yontemiyle cozume ulasilmistir.

Min: d1e + 5*d2a + d2e + d3e + d4e;

S.t.

4*x1 + 2*x2 + d1e – d1a = 50;

4*x1 + 3*x2 + d2e – d2a = 32;

x1 + d3e – d3a = 7 ;

x2 + d4e – d4a = 10;

xi >= 0 ; di >= 0;

 lpsolve programi icin olusturulmus girdi dosyasi asagidaki gibi olmalidir;

min: d1e + 5*d2a + d2e + d3e + d4e;
4*x1 + 2*x2 + d1e – d1a = 50;
4*x1 + 3*x2 + d2e – d2a = 32;
x1 + d3e – d3a = 7 ;
x2 + d4e – d4a = 10;
x1 >= 0;
x2 >= 0;
d1e >= 0;
d1a >= 0;
d2e >= 0;
d2a >= 0;
d3e >= 0;
d3a >= 0;
d4e >= 0;
d4a >= 0;

Not: lpsolve programi linki => http://sourceforge.net/projects/lpsolve/