77 lines
2.4 KiB
Modula-2
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;
|