Files
Gusek_MoGya/gyakorlatok/malom.mod
2024-10-29 19:15:26 +01:00

77 lines
2.4 KiB
Modula-2

# Halmazok és paraméterek
set Mezo; # Mező
set Malom; # Malom
set Pekseg; # Pékségek
param Buza {Mezo} >= 0; # Mezőn termelt búza
param MalomKapacitas {Malom} >= 0; # Malmok kapacitása
param TavolsagMezoMalom {Mezo, Malom} >= 0; # Mező és malom közötti távolság
param TavolsagMalomPekseg {Malom, Pekseg} >= 0; # Malom és pékség közötti távolság
param TeherautoKapacitas; # Teherautó kapacitása (kg)
param OrlesArany; # Őrlési arány (liszt/búza)
param UresFogyasztas; # Üres teherautó fogyasztás (l/100 km)
param ValtozoFogyasztas; # Változó fogyasztás (l/kg/100 km)
param Benzinar; # Benzin ára (Ft/100 km)
# Változók
var SzallitasMezoMalom {Mezo, Malom} >= 0; # Szállított búza mennyisége mezőről malomba
var SzallitasMalomPekseg {Malom, Pekseg} >= 0; # Szállított liszt mennyisége malomból pékségbe
# Korlátozások
# Minden mezőről csak a termelt mennyiség szállítható
s.t. KeszletKorlatozas {m in Mezo}:
sum {l in Malom} SzallitasMezoMalom[m, l] <= Buza[m];
# Malom kapacitásának figyelembevétele
s.t. MalomKapacitasKorlatozas {l in Malom}:
sum {m in Mezo} SzallitasMezoMalom[m, l] <= MalomKapacitas[l];
# Őrlési arány figyelembevétele (malomból csak a megfelelő lisztmennyiséget lehet szállítani)
s.t. OrlesiAranyKorlatozas {l in Malom}:
sum {p in Pekseg} SzallitasMalomPekseg[l, p] <= sum {m in Mezo} SzallitasMezoMalom[m, l] * OrlesArany;
# Költségfüggvény
minimize TeljesUzemanyagKoltseg:
# Mezőről malmokba szállítás
sum {m in Mezo, l in Malom}
(UresFogyasztas + ValtozoFogyasztas * SzallitasMezoMalom[m, l]) * TavolsagMezoMalom[m, l] * Benzinar
+
# Malmokból pékségekbe szállítás
sum {l in Malom, p in Pekseg}
(UresFogyasztas + ValtozoFogyasztas * SzallitasMalomPekseg[l, p]) * TavolsagMalomPekseg[l, p] * Benzinar;
# Adatok
data;
set Mezo := mezo1 mezo2 mezo3 mezo4;
set Malom := malom1 malom2;
set Pekseg := pek1 pek2 pek3;
param Buza :=
mezo1 36526
mezo2 12368
mezo3 25634
mezo4 9999;
param MalomKapacitas :=
malom1 50000
malom2 60000;
param TavolsagMezoMalom : malom1 malom2 :=
mezo1 201 79
mezo2 174 143
mezo3 107 102
mezo4 130 21;
param TavolsagMalomPekseg : pek1 pek2 pek3 :=
malom1 184 98 60
malom2 79 58 159;
param TeherautoKapacitas := 500;
param OrlesArany := 0.9;
param UresFogyasztas := 10;
param ValtozoFogyasztas := 0.006;
param Benzinar := 600;
end;