mirror of
https://github.com/kuhyx/WUT_Computer_Science.git
synced 2026-07-04 14:23:07 +02:00
feat: added erpm project
This commit is contained in:
parent
352cb16fdd
commit
37ad620e6b
BIN
NotProgramming/ERPM/RUDNICKI_ERPM_HW.pdf
Normal file
BIN
NotProgramming/ERPM/RUDNICKI_ERPM_HW.pdf
Normal file
Binary file not shown.
BIN
NotProgramming/ERPM/a_irp (1).pdf
Normal file
BIN
NotProgramming/ERPM/a_irp (1).pdf
Normal file
Binary file not shown.
BIN
NotProgramming/ERPM/c_irp.pdf
Normal file
BIN
NotProgramming/ERPM/c_irp.pdf
Normal file
Binary file not shown.
BIN
NotProgramming/ERPM/e_irp_g.pdf
Normal file
BIN
NotProgramming/ERPM/e_irp_g.pdf
Normal file
Binary file not shown.
BIN
NotProgramming/ERPM/e_irp_m.pdf
Normal file
BIN
NotProgramming/ERPM/e_irp_m.pdf
Normal file
Binary file not shown.
BIN
NotProgramming/ERPM/fsm_control_subsystem.pdf
Normal file
BIN
NotProgramming/ERPM/fsm_control_subsystem.pdf
Normal file
Binary file not shown.
BIN
NotProgramming/ERPM/generalSystemStructure.pdf
Normal file
BIN
NotProgramming/ERPM/generalSystemStructure.pdf
Normal file
Binary file not shown.
BIN
NotProgramming/ERPM/r_irp_k.pdf
Normal file
BIN
NotProgramming/ERPM/r_irp_k.pdf
Normal file
Binary file not shown.
@ -1,21 +0,0 @@
|
|||||||
set BudynkiNaStart;
|
|
||||||
set Budynki;
|
|
||||||
set Elektrownie;
|
|
||||||
|
|
||||||
param p{i in BudynkiNaStart, j in Budynki};
|
|
||||||
|
|
||||||
var f{i in BudynkiNaStart, j in Budynki}, >= 0;
|
|
||||||
|
|
||||||
maximize Q: sum {i in Budynki, e in Elektrownie} f[i,e];
|
|
||||||
|
|
||||||
subject to
|
|
||||||
Ogr_1{i in BudynkiNaStart, j in Budynki}:
|
|
||||||
f[i,j] >= 0;
|
|
||||||
Ogr_2{i in BudynkiNaStart, j in Budynki}:
|
|
||||||
f[i,j] <= p[i,j];
|
|
||||||
Ogr_3{n in Budynki}:
|
|
||||||
sum {i in Budynki} f[n,i] <= sum {j in BudynkiNaStart} f[j,n];
|
|
||||||
|
|
||||||
solve;
|
|
||||||
display {i in Budynki, j in Budynki: f[i,j] > 0}: f[i,j];
|
|
||||||
display: Q;
|
|
||||||
43
NotProgramming/MOM/data_2.dat
Normal file
43
NotProgramming/MOM/data_2.dat
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
data;
|
||||||
|
|
||||||
|
set Samochody := s1, s2, s3, s4, s5, s6, s7;
|
||||||
|
|
||||||
|
set Ladowarki := l1, l2, l3, l4;
|
||||||
|
|
||||||
|
param E :=
|
||||||
|
s1 l1 6 s1 l2 6 s1 l3 6 s1 l4 6
|
||||||
|
s2 l1 6 s2 l2 6 s2 l3 6 s2 l4 6
|
||||||
|
s3 l1 6 s3 l2 6 s3 l3 6 s3 l4 6
|
||||||
|
s4 l1 6 s4 l2 6 s4 l3 6 s4 l4 6
|
||||||
|
s5 l1 6 s5 l2 6 s5 l3 6 s5 l4 6
|
||||||
|
s6 l1 6 s6 l2 6 s6 l3 6 s6 l4 6
|
||||||
|
s7 l1 6 s7 l2 6 s7 l3 6 s7 l4 6 ;
|
||||||
|
|
||||||
|
param D :=
|
||||||
|
s1 l1 4 s1 l2 2 s1 l3 2 s1 l4 1
|
||||||
|
s2 l1 6 s2 l2 3 s2 l3 3 s2 l4 1.5
|
||||||
|
s3 l1 1 s3 l2 0.5 s3 l3 0.5 s3 l4 0.25
|
||||||
|
s4 l1 8 s4 l2 4 s4 l3 4 s4 l4 2
|
||||||
|
s5 l1 10 s5 l2 5 s5 l3 5 s5 l4 2.5
|
||||||
|
s6 l1 18 s6 l2 9 s6 l3 9 s6 l4 4.5
|
||||||
|
s7 l1 12 s7 l2 6 s7 l3 6 s7 l4 3;
|
||||||
|
|
||||||
|
param O :=
|
||||||
|
s1 10
|
||||||
|
s2 10
|
||||||
|
s3 12
|
||||||
|
s4 14
|
||||||
|
s5 12
|
||||||
|
s6 12
|
||||||
|
s7 10;
|
||||||
|
|
||||||
|
param Z :=
|
||||||
|
s1 25
|
||||||
|
s2 25
|
||||||
|
s3 50
|
||||||
|
s4 100
|
||||||
|
s5 25
|
||||||
|
s6 50
|
||||||
|
s7 100;
|
||||||
|
|
||||||
|
end;
|
||||||
43
NotProgramming/MOM/glpk.dat
Normal file
43
NotProgramming/MOM/glpk.dat
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
data;
|
||||||
|
|
||||||
|
set Samochody := s1, s2, s3, s4, s5;
|
||||||
|
|
||||||
|
set Ladowarki := l1, l2, l3;
|
||||||
|
# Najwczesniejszy mozliwy czas rozpoczecia ladowania samochodu s na ladowarce l
|
||||||
|
param E{s in Samochody, l in Ladowarki};
|
||||||
|
# Czas ladowania samochodu s na ladowarce l
|
||||||
|
param D{s in Samochody, l in Ladowarki};
|
||||||
|
# Czas odjazdu samochodu s
|
||||||
|
param O{s in Samochody};
|
||||||
|
# Zysk z realizacji kursu przez samochód s
|
||||||
|
param Z{s in Samochody};
|
||||||
|
|
||||||
|
param E :=
|
||||||
|
s1 l1 0 s1 l2 0 s1 l3 0
|
||||||
|
s2 l1 0 s2 l2 0 s2 l3 0
|
||||||
|
s3 l1 0 s3 l2 0 s3 l3 0
|
||||||
|
s4 l1 0 s4 l2 0 s4 l3 0
|
||||||
|
s5 l1 2 s5 l2 2 s5 l3 2;
|
||||||
|
|
||||||
|
param D :=
|
||||||
|
s1 l1 4 s1 l2 4 s1 l3 8
|
||||||
|
s2 l1 1 s2 l2 1 s2 l3 2
|
||||||
|
s3 l1 5 s3 l2 5 s3 l3 10
|
||||||
|
s4 l1 3 s4 l2 3 s4 l3 6
|
||||||
|
s5 l1 6 s5 l2 6 s5 l3 12;
|
||||||
|
|
||||||
|
param O :=
|
||||||
|
s1 8
|
||||||
|
s2 5
|
||||||
|
s3 6
|
||||||
|
s4 4
|
||||||
|
s5 9;
|
||||||
|
|
||||||
|
param Z :=
|
||||||
|
s1 100
|
||||||
|
s2 10
|
||||||
|
s3 200
|
||||||
|
s4 20
|
||||||
|
s5 330;
|
||||||
|
|
||||||
|
end;
|
||||||
122
NotProgramming/MOM/glpkKod2.mod
Normal file
122
NotProgramming/MOM/glpkKod2.mod
Normal file
@ -0,0 +1,122 @@
|
|||||||
|
# 1. Zbiory
|
||||||
|
set Samochody;
|
||||||
|
set Ladowarki;
|
||||||
|
|
||||||
|
# 2. Parametery
|
||||||
|
# Najwczesniejszy mozliwy czas rozpoczecia ladowania samochodu s na ladowarce l
|
||||||
|
param E{s in Samochody, l in Ladowarki};
|
||||||
|
# Czas ladowania samochodu s na ladowarce l
|
||||||
|
param D{s in Samochody, l in Ladowarki};
|
||||||
|
# Czas odjazdu samochodu s
|
||||||
|
param O{s in Samochody};
|
||||||
|
# Zysk z realizacji kursu przez samochód s
|
||||||
|
param Z{s in Samochody};
|
||||||
|
|
||||||
|
# Zmienna decyzyjna
|
||||||
|
# zmienna okreslajaca godzine rozpoczecia ladowania samochodu s na ladowarce l
|
||||||
|
var u{s in Samochody, l in Ladowarki}, >= 0, <= 24;
|
||||||
|
# zmienna binarna okreslajaca czy kurs zostanie wykonany
|
||||||
|
var y{s in Samochody}, binary;
|
||||||
|
# zmienna binarna okreslajaca czy samochód i jest ladowany po samochodzie j na ladowarce l
|
||||||
|
var v{i in Samochody, j in Samochody, l in Ladowarki}, binary;
|
||||||
|
# zmienna binarna okreslajaca czy samochód s jest ladowany jako pierwszy na ladowarce l
|
||||||
|
var p{s in Samochody, l in Ladowarki}, binary;
|
||||||
|
# zmienna binarna okreslajacy czy samochód s jest ladowany na ladowarce l
|
||||||
|
var k{s in Samochody, l in Ladowarki}, binary;
|
||||||
|
var z{i in Samochody, l in Ladowarki}, >= 0, <= 24;
|
||||||
|
var x{i in Samochody, j in Samochody, l in Ladowarki}, >= 0, <= 24;
|
||||||
|
var a{i in Samochody, l in Ladowarki}, >= 0, <= 24;
|
||||||
|
# a = (u[s, l] + D[s, l]) * k[s, l]
|
||||||
|
# Funkcja celu
|
||||||
|
maximize Q: sum {s in Samochody} y[s]*Z[s];
|
||||||
|
|
||||||
|
# Ograniczenia
|
||||||
|
subject to
|
||||||
|
# Samochód nie moze rozpoczac swojego ladownia przed najwczesniejszym mozliwym czasie ladowania.
|
||||||
|
Ogr_1{s in Samochody, l in Ladowarki}:
|
||||||
|
u[s,l] >= E[s, l];
|
||||||
|
# Samochód moze byc ladowany maksymalnie na jednej ladowarce
|
||||||
|
Ogr_2{s in Samochody}:
|
||||||
|
sum {l in Ladowarki} k[s, l] = y[s];
|
||||||
|
# Ladowanie danego samochodu na danej ladowarce moze rozpoczac sie tylko po zakonczeniu poprzedniego ladowania.
|
||||||
|
Ogr_3{i in Samochody, j in Samochody, l in Ladowarki: (i != j)}:
|
||||||
|
z[i,l] >= x[i, j, l];
|
||||||
|
# k[i, l] * u[i, l] >= [u[j, l] + D[j, l]) * v[i, j, l])
|
||||||
|
Ogr_4{i in Samochody, l in Ladowarki}:
|
||||||
|
v[i, i, l] = 0;
|
||||||
|
# k[i, l] * u[i, l] >= [u[j, l] + D[j, l]) * v[i, j, l])
|
||||||
|
# Samochód realizujacy dostawe musi ukonczyc ladowanie przed godzina odjazdu
|
||||||
|
Ogr_5{s in Samochody}:
|
||||||
|
sum {l in Ladowarki} a[s, l] <= O[s];
|
||||||
|
# (u[s, l] + D[s, l]) * k[s, l] <= O[s];
|
||||||
|
Ogr_6{j in Samochody}:
|
||||||
|
sum {i in Samochody, l in Ladowarki} v[i, j, l] <= 1;
|
||||||
|
Ogr_7{i in Samochody}:
|
||||||
|
sum {j in Samochody, l in Ladowarki} v[i, j, l] <= 1;
|
||||||
|
# Samochód musi byc albo ladowany jako pierwszy albo byc któryms w kolejnosci ladowania albo nie byc w ogóle ladowanym.
|
||||||
|
Ogr_8{j in Samochody, l in Ladowarki}:
|
||||||
|
p[j, l] + sum {i in Samochody} v[i, j, l] = k[j, l];
|
||||||
|
# Samochód w danej kolejnosci, moze byc tylko raz na wszystkich ladowarkach
|
||||||
|
Ogr_9{l in Ladowarki}:
|
||||||
|
sum {s in Samochody} p[s, l] <= 1;
|
||||||
|
### Linearyzacja z
|
||||||
|
Ogr_z1{i in Samochody, l in Ladowarki}:
|
||||||
|
z[i,l] <= 24*k[i,l];
|
||||||
|
Ogr_z2{i in Samochody, l in Ladowarki}:
|
||||||
|
z[i,l] <= u[i,l];
|
||||||
|
Ogr_z3{i in Samochody, j in Samochody, l in Ladowarki}:
|
||||||
|
z[i,l] >= u[i,l]-24*(1-k[i,l]);
|
||||||
|
### Linearyzacja x
|
||||||
|
Ogr_x1{i in Samochody, j in Samochody, l in Ladowarki}:
|
||||||
|
x[i, j, l] <= 24*v[i, j, l];
|
||||||
|
Ogr_x2{i in Samochody, j in Samochody, l in Ladowarki}:
|
||||||
|
x[i, j, l] <= (u[j,l] + D[j, l]);
|
||||||
|
Ogr_x3{i in Samochody, j in Samochody, l in Ladowarki}:
|
||||||
|
x[i, j, l] >= (u[j,l] + D[j, l])-24*(1-v[i, j, l]);
|
||||||
|
### Linearyzacja a
|
||||||
|
Ogr_a1{s in Samochody, l in Ladowarki}:
|
||||||
|
a[s, l] <= 24*k[s, l];
|
||||||
|
Ogr_a2{s in Samochody, l in Ladowarki}:
|
||||||
|
a[s, l] <= (u[s, l] + D[s, l]);
|
||||||
|
Ogr_a3{s in Samochody, l in Ladowarki}:
|
||||||
|
a[s, l] >= (u[s, l] + D[s, l]) - 24*(1-k[s, l]);
|
||||||
|
|
||||||
|
solve;
|
||||||
|
display Q;
|
||||||
|
display {s in Samochody, l in Ladowarki: k[s, l] > 0}: u[s, l];
|
||||||
|
|
||||||
|
data;
|
||||||
|
|
||||||
|
set Samochody := s1, s2, s3, s4, s5;
|
||||||
|
|
||||||
|
set Ladowarki := l1, l2, l3;
|
||||||
|
|
||||||
|
param E :=
|
||||||
|
s1 l1 0 s1 l2 0 s1 l3 0
|
||||||
|
s2 l1 0 s2 l2 0 s2 l3 0
|
||||||
|
s3 l1 0 s3 l2 0 s3 l3 0
|
||||||
|
s4 l1 0 s4 l2 0 s4 l3 0
|
||||||
|
s5 l1 2 s5 l2 2 s5 l3 2;
|
||||||
|
|
||||||
|
param D :=
|
||||||
|
s1 l1 4 s1 l2 4 s1 l3 8
|
||||||
|
s2 l1 1 s2 l2 1 s2 l3 2
|
||||||
|
s3 l1 5 s3 l2 5 s3 l3 10
|
||||||
|
s4 l1 3 s4 l2 3 s4 l3 6
|
||||||
|
s5 l1 6 s5 l2 6 s5 l3 12;
|
||||||
|
|
||||||
|
param O :=
|
||||||
|
s1 8
|
||||||
|
s2 5
|
||||||
|
s3 6
|
||||||
|
s4 4
|
||||||
|
s5 9;
|
||||||
|
|
||||||
|
param Z :=
|
||||||
|
s1 100
|
||||||
|
s2 10
|
||||||
|
s3 200
|
||||||
|
s4 20
|
||||||
|
s5 330;
|
||||||
|
|
||||||
|
end;
|
||||||
122
NotProgramming/MOM/implementacja.mod
Normal file
122
NotProgramming/MOM/implementacja.mod
Normal file
@ -0,0 +1,122 @@
|
|||||||
|
# 1. Zbiory
|
||||||
|
set Samochody;
|
||||||
|
set Ladowarki;
|
||||||
|
|
||||||
|
# 2. Parametery
|
||||||
|
# Najwczesniejszy mozliwy czas rozpoczecia ladowania samochodu s na ladowarce l
|
||||||
|
param E{s in Samochody, l in Ladowarki};
|
||||||
|
# Czas ladowania samochodu s na ladowarce l
|
||||||
|
param D{s in Samochody, l in Ladowarki};
|
||||||
|
# Czas odjazdu samochodu s
|
||||||
|
param O{s in Samochody};
|
||||||
|
# Zysk z realizacji kursu przez samochód s
|
||||||
|
param Z{s in Samochody};
|
||||||
|
|
||||||
|
# Zmienna decyzyjna
|
||||||
|
# zmienna okreslajaca godzine rozpoczecia ladowania samochodu s
|
||||||
|
var u{s in Samochody}, >= 0, <= 24;
|
||||||
|
# zmienna binarna okreslajaca czy kurs zostanie wykonany
|
||||||
|
var y{s in Samochody}, binary;
|
||||||
|
# zmienna binarna okreslajaca czy samochód i jest ladowany po samochodzie j na ladowarce l
|
||||||
|
var v{i in Samochody, j in Samochody, l in Ladowarki}, binary;
|
||||||
|
# zmienna binarna okreslajaca czy samochód s jest ladowany jako pierwszy na ladowarce l
|
||||||
|
var p{s in Samochody, l in Ladowarki}, binary;
|
||||||
|
# zmienna binarna okreslajacy czy samochód s jest ladowany na ladowarce l
|
||||||
|
var k{s in Samochody, l in Ladowarki}, binary;
|
||||||
|
var z{i in Samochody, l in Ladowarki}, >= 0, <= 24;
|
||||||
|
var x{i in Samochody, j in Samochody, l in Ladowarki}, >= 0, <= 24;
|
||||||
|
var a{i in Samochody, l in Ladowarki}, >= 0, <= 24;
|
||||||
|
# a = (u[s, l] + D[s, l]) * k[s, l]
|
||||||
|
# Funkcja celu
|
||||||
|
maximize Q: sum {s in Samochody} y[s]*Z[s];
|
||||||
|
|
||||||
|
# Ograniczenia
|
||||||
|
subject to
|
||||||
|
# Samochód nie moze rozpoczac swojego ladownia przed najwczesniejszym mozliwym czasie ladowania.
|
||||||
|
Ogr_1{s in Samochody, l in Ladowarki}:
|
||||||
|
u[s,l] >= E[s, l];
|
||||||
|
# Samochód moze byc ladowany maksymalnie na jednej ladowarce
|
||||||
|
Ogr_2{s in Samochody}:
|
||||||
|
sum {l in Ladowarki} k[s, l] = y[s];
|
||||||
|
# Ladowanie danego samochodu na danej ladowarce moze rozpoczac sie tylko po zakonczeniu poprzedniego ladowania.
|
||||||
|
Ogr_3{i in Samochody, j in Samochody, l in Ladowarki: (i != j)}:
|
||||||
|
z[i,l] >= x[i, j, l];
|
||||||
|
# k[i, l] * u[i, l] >= [u[j, l] + D[j, l]) * v[i, j, l])
|
||||||
|
Ogr_4{i in Samochody, l in Ladowarki}:
|
||||||
|
v[i, i, l] = 0;
|
||||||
|
# k[i, l] * u[i, l] >= [u[j, l] + D[j, l]) * v[i, j, l])
|
||||||
|
# Samochód realizujacy dostawe musi ukonczyc ladowanie przed godzina odjazdu
|
||||||
|
Ogr_5{s in Samochody}:
|
||||||
|
sum {l in Ladowarki} a[s, l] <= O[s];
|
||||||
|
# (u[s, l] + D[s, l]) * k[s, l] <= O[s];
|
||||||
|
Ogr_6{j in Samochody}:
|
||||||
|
sum {i in Samochody, l in Ladowarki} v[i, j, l] <= 1;
|
||||||
|
Ogr_7{i in Samochody}:
|
||||||
|
sum {j in Samochody, l in Ladowarki} v[i, j, l] <= 1;
|
||||||
|
# Samochód musi byc albo ladowany jako pierwszy albo byc któryms w kolejnosci ladowania albo nie byc w ogóle ladowanym.
|
||||||
|
Ogr_8{j in Samochody, l in Ladowarki}:
|
||||||
|
p[j, l] + sum {i in Samochody} v[i, j, l] = k[j, l];
|
||||||
|
# Samochód w danej kolejnosci, moze byc tylko raz na wszystkich ladowarkach
|
||||||
|
Ogr_9{l in Ladowarki}:
|
||||||
|
sum {s in Samochody} p[s, l] <= 1;
|
||||||
|
### Linearyzacja z
|
||||||
|
Ogr_z1{i in Samochody, l in Ladowarki}:
|
||||||
|
z[i,l] <= 24*k[i,l];
|
||||||
|
Ogr_z2{i in Samochody, l in Ladowarki}:
|
||||||
|
z[i,l] <= u[i,l];
|
||||||
|
Ogr_z3{i in Samochody, j in Samochody, l in Ladowarki}:
|
||||||
|
z[i,l] >= u[i,l]-24*(1-k[i,l]);
|
||||||
|
### Linearyzacja x
|
||||||
|
Ogr_x1{i in Samochody, j in Samochody, l in Ladowarki}:
|
||||||
|
x[i, j, l] <= 24*v[i, j, l];
|
||||||
|
Ogr_x2{i in Samochody, j in Samochody, l in Ladowarki}:
|
||||||
|
x[i, j, l] <= (u[j,l] + D[j, l]);
|
||||||
|
Ogr_x3{i in Samochody, j in Samochody, l in Ladowarki}:
|
||||||
|
x[i, j, l] >= (u[j,l] + D[j, l])-24*(1-v[i, j, l]);
|
||||||
|
### Linearyzacja a
|
||||||
|
Ogr_a1{s in Samochody, l in Ladowarki}:
|
||||||
|
a[s, l] <= 24*k[s, l];
|
||||||
|
Ogr_a2{s in Samochody, l in Ladowarki}:
|
||||||
|
a[s, l] <= (u[s, l] + D[s, l]);
|
||||||
|
Ogr_a3{s in Samochody, l in Ladowarki}:
|
||||||
|
a[s, l] >= (u[s, l] + D[s, l]) - 24*(1-k[s, l]);
|
||||||
|
|
||||||
|
solve;
|
||||||
|
display Q;
|
||||||
|
display {s in Samochody, l in Ladowarki: k[s, l] > 0}: u[s, l];
|
||||||
|
|
||||||
|
data;
|
||||||
|
|
||||||
|
set Samochody := s1, s2, s3, s4, s5;
|
||||||
|
|
||||||
|
set Ladowarki := l1, l2, l3;
|
||||||
|
|
||||||
|
param E :=
|
||||||
|
s1 l1 0 s1 l2 0 s1 l3 0
|
||||||
|
s2 l1 0 s2 l2 0 s2 l3 0
|
||||||
|
s3 l1 0 s3 l2 0 s3 l3 0
|
||||||
|
s4 l1 0 s4 l2 0 s4 l3 0
|
||||||
|
s5 l1 2 s5 l2 2 s5 l3 2;
|
||||||
|
|
||||||
|
param D :=
|
||||||
|
s1 l1 4 s1 l2 4 s1 l3 8
|
||||||
|
s2 l1 1 s2 l2 1 s2 l3 2
|
||||||
|
s3 l1 5 s3 l2 5 s3 l3 10
|
||||||
|
s4 l1 3 s4 l2 3 s4 l3 6
|
||||||
|
s5 l1 6 s5 l2 6 s5 l3 12;
|
||||||
|
|
||||||
|
param O :=
|
||||||
|
s1 8
|
||||||
|
s2 5
|
||||||
|
s3 6
|
||||||
|
s4 4
|
||||||
|
s5 9;
|
||||||
|
|
||||||
|
param Z :=
|
||||||
|
s1 100
|
||||||
|
s2 10
|
||||||
|
s3 200
|
||||||
|
s4 20
|
||||||
|
s5 330;
|
||||||
|
|
||||||
|
end;
|
||||||
72
NotProgramming/MOM/implementacja2.mod
Normal file
72
NotProgramming/MOM/implementacja2.mod
Normal file
@ -0,0 +1,72 @@
|
|||||||
|
set Z;
|
||||||
|
set S; set S1; set S2;
|
||||||
|
set G1;
|
||||||
|
set H1;
|
||||||
|
set P; set P2;
|
||||||
|
set O2;
|
||||||
|
set D;
|
||||||
|
set W;
|
||||||
|
set N; set Nz; set Nw; set Nzw;
|
||||||
|
|
||||||
|
param r{w in W};
|
||||||
|
param u{i in N, j in N};
|
||||||
|
param m{p in P, d in D};
|
||||||
|
|
||||||
|
var f{i in N, j in N}, >= 0, integer; #a
|
||||||
|
var a1, >= 0, integer; #e
|
||||||
|
var a2, >= 0, integer; #f
|
||||||
|
var a3, >= 0, integer; #g
|
||||||
|
var a4, >= 0, integer; #h
|
||||||
|
var bp1, >= 0, integer;
|
||||||
|
var cp1, >= 0, <=337, integer; #m
|
||||||
|
var cp2, >= 0, integer;
|
||||||
|
var co2, >= 0, integer;
|
||||||
|
var e, >= 0, <=1, integer;
|
||||||
|
var l, >= 0, integer;
|
||||||
|
|
||||||
|
maximize Q: (sum {i in N, w in W} r[w] * f[i,w])
|
||||||
|
- 10 * (sum {z in Z, s1 in S1} f[z,s1]) - 9 * (sum {z in Z, s2 in S2} f[z,s2])
|
||||||
|
+ 3 * a1 + 2 * a2 - 2 * a3 - 4 * a4 - 1070 * cp1 - 730 * bp1
|
||||||
|
- 1500 * (cp2 + co2) - 2 * 200 * l - 43 * (sum {s2 in S2, o2 in O2} f[s2,o2]);
|
||||||
|
|
||||||
|
subject to
|
||||||
|
Ogr_a_c_d{i in N, j in N}:
|
||||||
|
f[i,j] <= u[i,j];
|
||||||
|
Ogr_b{k in Nzw}:
|
||||||
|
sum {i in Nz} f[k,i] = sum {j in Nw} f[j,k];
|
||||||
|
Ogr_i{z in Z, s1 in S1}:
|
||||||
|
a1 <= f[z,s1] - 2056;
|
||||||
|
Ogr_j{z in Z, s1 in S1}:
|
||||||
|
a2 <= f[z,s1] - 4834;
|
||||||
|
Ogr_k{z in Z, s2 in S2}:
|
||||||
|
a3 >= f[z,s2] - 1968;
|
||||||
|
Ogr_l{z in Z, s2 in S2}:
|
||||||
|
a4 >= f[z,s2] - 4417;
|
||||||
|
Ogr_n:
|
||||||
|
bp1 <= cp1;
|
||||||
|
Ogr_o{s1 in S1, g1 in G1}:
|
||||||
|
cp1 >= f[s1,g1] / 20;
|
||||||
|
Ogr_p{s1 in S1, h1 in H1}:
|
||||||
|
bp1 >= f[s1,h1] / 14;
|
||||||
|
Ogr_q{s2 in S2, p2 in P2}:
|
||||||
|
cp2 >= f[s2,p2] / 25;
|
||||||
|
Ogr_r:
|
||||||
|
sum {i in N, p in P} f[i,p] <= 13600;
|
||||||
|
Ogr_s{p in P, d in D}:
|
||||||
|
(sum {i in N} f[i,p]) * m[p,d] = f[p,d];
|
||||||
|
Ogr_t:
|
||||||
|
l >= (sum {i in N, p in P} f[i,p])/200;
|
||||||
|
Ogr_u{s2 in S2, o2 in O2}:
|
||||||
|
co2 >= f[s2,o2] / 25;
|
||||||
|
Ogr_v{s2 in S2, o2 in O2}:
|
||||||
|
f[s2,o2] <= 6000 * e;
|
||||||
|
Ogr_w{s2 in S2, o2 in O2}:
|
||||||
|
f[s2,o2] - 2000 * e >= 0;
|
||||||
|
Ogr_x{w in W}:
|
||||||
|
sum {i in N} f[i,w] >= 4250;
|
||||||
|
|
||||||
|
solve;
|
||||||
|
display {i in N, j in N: f[i,j] > 0}: f[i,j];
|
||||||
|
display: a1; display: a2; display: a3; display: a4; display: bp1;
|
||||||
|
display: cp1; display: cp2; display: co2; display:
|
||||||
|
e; display: l;
|
||||||
96
NotProgramming/MOM/implementacja3.mod
Normal file
96
NotProgramming/MOM/implementacja3.mod
Normal file
@ -0,0 +1,96 @@
|
|||||||
|
# 1. Zbiory
|
||||||
|
set Samochody;
|
||||||
|
set Ladowarki;
|
||||||
|
|
||||||
|
# 2. Parametery
|
||||||
|
# Najwczesniejszy mozliwy czas rozpoczecia ladowania samochodu s na ladowarce l
|
||||||
|
param E{s in Samochody};
|
||||||
|
# Czas ladowania samochodu s na ladowarce l
|
||||||
|
param D{s in Samochody, l in Ladowarki};
|
||||||
|
# Czas odjazdu samochodu s
|
||||||
|
param O{s in Samochody};
|
||||||
|
# Zysk z realizacji kursu przez samochód s
|
||||||
|
param Z{s in Samochody};
|
||||||
|
|
||||||
|
# Zmienna decyzyjna
|
||||||
|
# zmienna okreslajaca godzine rozpoczecia ladowania samochodu s
|
||||||
|
var u{s in Samochody}, >= 0, <= 24;
|
||||||
|
# zmienna binarna okreslajaca czy kurs zostanie wykonany
|
||||||
|
var y{s in Samochody}, binary;
|
||||||
|
# zmienna binarna okreslajaca czy samochód i jest ladowany po samochodzie j na ladowarce l
|
||||||
|
var v{i in Samochody, j in Samochody}, binary;
|
||||||
|
# zmienna binarna okreslajacy czy samochód s jest ladowany na ladowarce l
|
||||||
|
var k{s in Samochody, l in Ladowarki}, binary;
|
||||||
|
# Funkcja celu
|
||||||
|
maximize Q: sum {s in Samochody} y[s]*Z[s];
|
||||||
|
|
||||||
|
# Ograniczenia
|
||||||
|
subject to
|
||||||
|
# Samochód nie moze rozpoczac swojego ladownia przed najwczesniejszym mozliwym czasie ladowania.
|
||||||
|
Ogr_1{s in Samochody}:
|
||||||
|
u[s] >= E[s] * y[s];
|
||||||
|
# Samochód moze byc ladowany maksymalnie na jednej ladowarce
|
||||||
|
Ogr_2{s in Samochody}:
|
||||||
|
sum {l in Ladowarki} k[s, l] = y[s];
|
||||||
|
# Ladowanie danego samochodu na danej ladowarce moze rozpoczac sie tylko po zakonczeniu poprzedniego ladowania.
|
||||||
|
Ogr_3{i in Samochody, j in Samochody, l in Ladowarki: i != j}:
|
||||||
|
u[i] + 24 * (1 - v[i, j]) >= (u[j] + D[j, l] * v[i, j]);
|
||||||
|
# ???
|
||||||
|
Ogr_4{i in Samochody, j in Samochody, l in Ladowarki: i != j}:
|
||||||
|
v[i, j] + v[j, i] >= k[i, l] + k[j, l] - 1;
|
||||||
|
# Samochód realizujacy dostawe musi ukonczyc ladowanie przed godzina odjazdu
|
||||||
|
Ogr_6{s in Samochody}:
|
||||||
|
u[s] + sum {l in Ladowarki} (D[s, l] * k[s, l]) <= O[s] * y[s];
|
||||||
|
# Ladowanie samochodu nie bedzie nastepowalo po ladowaniu dowolnego samochodu wiecej niz raz na danej ladowarce
|
||||||
|
#Ogr_7_temp{j in Samochody}:
|
||||||
|
# sum {i in Samochody} v[i, j] <= 1;
|
||||||
|
# Ladowanie samochodu nie bedzie poprzedzalo ladowania dowolnego samochodu wiecej niz raz na danej ladowarce
|
||||||
|
#Ogr_8_temp{i in Samochody}:
|
||||||
|
# sum {j in Samochody} v[i, j] <= 1;
|
||||||
|
Ogr_temp:
|
||||||
|
u['s4'] = 0;
|
||||||
|
Ogr_temp_2:
|
||||||
|
k['s4', 'l2'] = 1;
|
||||||
|
|
||||||
|
solve;
|
||||||
|
display Q;
|
||||||
|
display {s in Samochody, l in Ladowarki: k[s, l] > 0}: u[s];
|
||||||
|
display {s in Samochody}: y[s];
|
||||||
|
display {i in Samochody, j in Samochody: v[i, j] > 0}: v[i, j];
|
||||||
|
display {s in Samochody, l in Ladowarki: k[s, l] > 0}: k[s, l];
|
||||||
|
|
||||||
|
data;
|
||||||
|
|
||||||
|
set Samochody := s1, s2, s3, s4, s5;
|
||||||
|
|
||||||
|
set Ladowarki := l1, l2, l3;
|
||||||
|
|
||||||
|
param E :=
|
||||||
|
s1 0
|
||||||
|
s2 0
|
||||||
|
s3 0
|
||||||
|
s4 0
|
||||||
|
s5 2;
|
||||||
|
|
||||||
|
param D :=
|
||||||
|
s1 l1 4 s1 l2 4 s1 l3 8
|
||||||
|
s2 l1 1 s2 l2 1 s2 l3 2
|
||||||
|
s3 l1 5 s3 l2 5 s3 l3 10
|
||||||
|
s4 l1 3 s4 l2 3 s4 l3 6
|
||||||
|
s5 l1 6 s5 l2 6 s5 l3 12;
|
||||||
|
|
||||||
|
param O :=
|
||||||
|
s1 8
|
||||||
|
s2 5
|
||||||
|
s3 6
|
||||||
|
s4 4
|
||||||
|
s5 8;
|
||||||
|
|
||||||
|
param Z :=
|
||||||
|
s1 100
|
||||||
|
s2 10
|
||||||
|
s3 200
|
||||||
|
s4 20
|
||||||
|
s5 330;
|
||||||
|
|
||||||
|
end;
|
||||||
125
NotProgramming/MOM/implementacja_gold.mod
Normal file
125
NotProgramming/MOM/implementacja_gold.mod
Normal file
@ -0,0 +1,125 @@
|
|||||||
|
# 1. Zbiory
|
||||||
|
set Samochody;
|
||||||
|
set Ladowarki;
|
||||||
|
|
||||||
|
# 2. Parametery
|
||||||
|
# Najwczesniejszy mozliwy czas rozpoczecia ladowania samochodu s na ladowarce l
|
||||||
|
param E{s in Samochody, l in Ladowarki};
|
||||||
|
# Czas ladowania samochodu s na ladowarce l
|
||||||
|
param D{s in Samochody, l in Ladowarki};
|
||||||
|
# Czas odjazdu samochodu s
|
||||||
|
param O{s in Samochody};
|
||||||
|
# Zysk z realizacji kursu przez samochd s
|
||||||
|
param Z{s in Samochody};
|
||||||
|
|
||||||
|
# Zmienna decyzyjna
|
||||||
|
# zmienna okreslajaca godzine rozpoczecia ladowania samochodu s na ladowarce l
|
||||||
|
var u{s in Samochody, l in Ladowarki}, >= 0, <= 24;
|
||||||
|
# zmienna binarna okreslajaca czy kurs zostanie wykonany
|
||||||
|
var y{s in Samochody}, binary;
|
||||||
|
# zmienna binarna okreslajaca czy samochd i jest ladowany po samochodzie j na ladowarce l
|
||||||
|
var v{i in Samochody, j in Samochody, l in Ladowarki}, binary;
|
||||||
|
# zmienna binarna okreslajaca czy samochd s jest ladowany jako pierwszy na ladowarce l
|
||||||
|
var p{s in Samochody, l in Ladowarki}, binary;
|
||||||
|
# zmienna binarna okreslajacy czy samochd s jest ladowany na ladowarce l
|
||||||
|
var k{s in Samochody, l in Ladowarki}, binary;
|
||||||
|
var z{i in Samochody, l in Ladowarki}, >= 0, <= 24;
|
||||||
|
var x{i in Samochody, j in Samochody, l in Ladowarki}, >= 0, <= 24;
|
||||||
|
var a{i in Samochody, l in Ladowarki}, >= 0, <= 24;
|
||||||
|
# a = (u[s, l] + D[s, l]) * k[s, l]
|
||||||
|
# Funkcja celu
|
||||||
|
maximize Q: sum {s in Samochody} y[s]*Z[s];
|
||||||
|
|
||||||
|
# Ograniczenia
|
||||||
|
subject to
|
||||||
|
# Samochd nie moze rozpoczac swojego ladownia przed najwczesniejszym mozliwym czasie ladowania.
|
||||||
|
Ogr_1{s in Samochody, l in Ladowarki}:
|
||||||
|
u[s,l] >= E[s, l];
|
||||||
|
# Samochd moze byc ladowany maksymalnie na jednej ladowarce
|
||||||
|
Ogr_2{s in Samochody}:
|
||||||
|
sum {l in Ladowarki} k[s, l] = y[s];
|
||||||
|
# Ladowanie danego samochodu na danej ladowarce moze rozpoczac sie tylko po zakonczeniu poprzedniego ladowania.
|
||||||
|
Ogr_3{i in Samochody, j in Samochody, l in Ladowarki: (i != j)}:
|
||||||
|
z[i,l] >= x[i, j, l];
|
||||||
|
# k[i, l] * u[i, l] >= [u[j, l] + D[j, l]) * v[i, j, l])
|
||||||
|
Ogr_4{i in Samochody, l in Ladowarki}:
|
||||||
|
v[i, i, l] = 0;
|
||||||
|
# k[i, l] * u[i, l] >= [u[j, l] + D[j, l]) * v[i, j, l])
|
||||||
|
# Samochd realizujacy dostawe musi ukonczyc ladowanie przed godzina odjazdu
|
||||||
|
Ogr_5{s in Samochody}:
|
||||||
|
sum {l in Ladowarki} a[s, l] <= O[s];
|
||||||
|
# (u[s, l] + D[s, l]) * k[s, l] <= O[s];
|
||||||
|
Ogr_6{j in Samochody}:
|
||||||
|
sum {i in Samochody, l in Ladowarki} v[i, j, l] <= 1;
|
||||||
|
Ogr_7{i in Samochody}:
|
||||||
|
sum {j in Samochody, l in Ladowarki} v[i, j, l] <= 1;
|
||||||
|
# Samochd musi byc albo ladowany jako pierwszy albo byc ktryms w kolejnosci ladowania albo nie byc w ogle ladowanym.
|
||||||
|
Ogr_8{j in Samochody, l in Ladowarki}:
|
||||||
|
p[j, l] + sum {i in Samochody} v[i, j, l] = k[j, l];
|
||||||
|
# Samochd w danej kolejnosci, moze byc tylko raz na wszystkich ladowarkach
|
||||||
|
Ogr_9{l in Ladowarki}:
|
||||||
|
sum {s in Samochody} p[s, l] <= 1;
|
||||||
|
### Linearyzacja z
|
||||||
|
Ogr_z1{i in Samochody, l in Ladowarki}:
|
||||||
|
z[i,l] <= 24*k[i,l];
|
||||||
|
Ogr_z2{i in Samochody, l in Ladowarki}:
|
||||||
|
z[i,l] <= u[i,l];
|
||||||
|
Ogr_z3{i in Samochody, j in Samochody, l in Ladowarki}:
|
||||||
|
z[i,l] >= u[i,l]-24*(1-k[i,l]);
|
||||||
|
### Linearyzacja x
|
||||||
|
Ogr_x1{i in Samochody, j in Samochody, l in Ladowarki}:
|
||||||
|
x[i, j, l] <= 24*v[i, j, l];
|
||||||
|
Ogr_x2{i in Samochody, j in Samochody, l in Ladowarki}:
|
||||||
|
x[i, j, l] <= (u[j,l] + D[j, l]);
|
||||||
|
Ogr_x3{i in Samochody, j in Samochody, l in Ladowarki}:
|
||||||
|
x[i, j, l] >= (u[j,l] + D[j, l])-24*(1-v[i, j, l]);
|
||||||
|
### Linearyzacja a
|
||||||
|
Ogr_a1{s in Samochody, l in Ladowarki}:
|
||||||
|
a[s, l] <= 24*k[s, l];
|
||||||
|
Ogr_a2{s in Samochody, l in Ladowarki}:
|
||||||
|
a[s, l] <= (u[s, l] + D[s, l]);
|
||||||
|
Ogr_a3{s in Samochody, l in Ladowarki}:
|
||||||
|
a[s, l] >= (u[s, l] + D[s, l]) - 24*(1-k[s, l]);
|
||||||
|
|
||||||
|
solve;
|
||||||
|
display Q;
|
||||||
|
display {s in Samochody, l in Ladowarki: k[s, l] > 0}: u[s, l];
|
||||||
|
display {s in Samochody}: y[s];
|
||||||
|
display {i in Samochody, j in Samochody, l in Ladowarki: v[i, j, l] > 0}: v[i, j, l];
|
||||||
|
display {s in Samochody, l in Ladowarki}: k[s, l];
|
||||||
|
|
||||||
|
data;
|
||||||
|
|
||||||
|
set Samochody := s1, s2, s3, s4, s5;
|
||||||
|
|
||||||
|
set Ladowarki := l1, l2, l3;
|
||||||
|
|
||||||
|
param E :=
|
||||||
|
s1 l1 0 s1 l2 0 s1 l3 0
|
||||||
|
s2 l1 0 s2 l2 0 s2 l3 0
|
||||||
|
s3 l1 0 s3 l2 0 s3 l3 0
|
||||||
|
s4 l1 0 s4 l2 0 s4 l3 0
|
||||||
|
s5 l1 2 s5 l2 2 s5 l3 2;
|
||||||
|
|
||||||
|
param D :=
|
||||||
|
s1 l1 4 s1 l2 4 s1 l3 8
|
||||||
|
s2 l1 1 s2 l2 1 s2 l3 2
|
||||||
|
s3 l1 5 s3 l2 5 s3 l3 10
|
||||||
|
s4 l1 3 s4 l2 3 s4 l3 6
|
||||||
|
s5 l1 6 s5 l2 6 s5 l3 12;
|
||||||
|
|
||||||
|
param O :=
|
||||||
|
s1 8
|
||||||
|
s2 5
|
||||||
|
s3 6
|
||||||
|
s4 4
|
||||||
|
s5 9;
|
||||||
|
|
||||||
|
param Z :=
|
||||||
|
s1 100
|
||||||
|
s2 10
|
||||||
|
s3 200
|
||||||
|
s4 20
|
||||||
|
s5 330;
|
||||||
|
|
||||||
|
end;
|
||||||
94
NotProgramming/MOM/implementacja_temp.mod
Normal file
94
NotProgramming/MOM/implementacja_temp.mod
Normal file
@ -0,0 +1,94 @@
|
|||||||
|
# 1. Zbiory
|
||||||
|
set Samochody;
|
||||||
|
set Ladowarki;
|
||||||
|
|
||||||
|
# 2. Parametery
|
||||||
|
# Najwczesniejszy mozliwy czas rozpoczecia ladowania samochodu s na ladowarce l [x]
|
||||||
|
param E{s in Samochody};
|
||||||
|
# Czas ladowania samochodu s na ladowarce l [x]
|
||||||
|
param D{s in Samochody, l in Ladowarki};
|
||||||
|
# Czas odjazdu samochodu s [x]
|
||||||
|
param O{s in Samochody};
|
||||||
|
# Zysk z realizacji kursu przez samochd s [x]
|
||||||
|
param Z{s in Samochody};
|
||||||
|
|
||||||
|
# Zmienna decyzyjna
|
||||||
|
# zmienna okreslajaca godzine rozpoczecia ladowania samochodu s na ladowarce l [x]
|
||||||
|
var u{s in Samochody}, >= 0, <= 24;
|
||||||
|
# zmienna binarna okreslajaca czy kurs zostanie wykonany [x]
|
||||||
|
var y{s in Samochody}, binary;
|
||||||
|
# zmienna binarna okreslajaca czy samochd i jest ladowany po samochodzie j na ladowarce l
|
||||||
|
var v{i in Samochody, j in Samochody}, binary;
|
||||||
|
# zmienna binarna okreslajacy czy samochd s jest ladowany na ladowarce l [x]
|
||||||
|
var k{s in Samochody, l in Ladowarki}, binary;
|
||||||
|
# a = (u[s, l] + D[s, l]) * k[s, l]
|
||||||
|
# Funkcja celu [x]
|
||||||
|
maximize Q: sum {s in Samochody} y[s]*Z[s];
|
||||||
|
|
||||||
|
# Ograniczenia
|
||||||
|
subject to
|
||||||
|
# Samochód nie moze rozpoczac swojego ladownia przed najwczesniejszym mozliwym czasie ladowania. [x]
|
||||||
|
Ogr_1{s in Samochody, l in Ladowarki}:
|
||||||
|
u[s] >= E[s] * y[s];
|
||||||
|
# Samochód moze byc ladowany maksymalnie na jednej ladowarce [x]
|
||||||
|
Ogr_2{s in Samochody}:
|
||||||
|
sum {l in Ladowarki} k[s, l] = y[s];
|
||||||
|
# Ladowanie danego samochodu na danej ladowarce moze rozpoczac sie tylko po zakonczeniu poprzedniego ladowania. [x]
|
||||||
|
Ogr_3{i in Samochody, j in Samochody, l in Ladowarki: i != j}:
|
||||||
|
u[i] + 2400 * (1 - v[i, j]) >= (u[j] + D[j, l] * v[i, j]) - 4800 * (1 - k[j, l]);
|
||||||
|
Ogr_4{i in Samochody, j in Samochody, l in Ladowarki: i != j}:
|
||||||
|
v[i, j] + v[j, i] >= k[i, l] + k[j, l] - 1;
|
||||||
|
# Samochód realizujacy dostawe musi ukonczyc ladowanie przed godzina odjazdu [x]
|
||||||
|
Ogr_5{s in Samochody}:
|
||||||
|
u[s] + sum {l in Ladowarki} (D[s, l] * k[s, l]) <= O[s] * y[s];
|
||||||
|
|
||||||
|
solve;
|
||||||
|
display Q;
|
||||||
|
display {s in Samochody, l in Ladowarki: k[s, l] > 0}: u[s];
|
||||||
|
#display {s in Samochody}: y[s];
|
||||||
|
display {i in Samochody, j in Samochody: v[i, j] > 0}: v[i, j];
|
||||||
|
display {s in Samochody, l in Ladowarki: k[s, l] > 0}: k[s, l];
|
||||||
|
|
||||||
|
data;
|
||||||
|
|
||||||
|
set Samochody := s1, s2, s3, s4, s5, s6, s7;
|
||||||
|
|
||||||
|
set Ladowarki := l1, l2, l3, l4;
|
||||||
|
|
||||||
|
param E :=
|
||||||
|
s1 6
|
||||||
|
s2 6
|
||||||
|
s3 6
|
||||||
|
s5 6
|
||||||
|
s4 6
|
||||||
|
s6 6
|
||||||
|
s7 6;
|
||||||
|
|
||||||
|
param D :=
|
||||||
|
s1 l1 4 s1 l2 2 s1 l3 2 s1 l4 1
|
||||||
|
s2 l1 6 s2 l2 3 s2 l3 3 s2 l4 1.5
|
||||||
|
s3 l1 1 s3 l2 0.5 s3 l3 0.5 s3 l4 0.25
|
||||||
|
s4 l1 8 s4 l2 4 s4 l3 4 s4 l4 2
|
||||||
|
s5 l1 10 s5 l2 5 s5 l3 5 s5 l4 2.5
|
||||||
|
s6 l1 18 s6 l2 9 s6 l3 9 s6 l4 4.5
|
||||||
|
s7 l1 12 s7 l2 6 s7 l3 6 s7 l4 3;
|
||||||
|
|
||||||
|
param O :=
|
||||||
|
s1 10
|
||||||
|
s2 10
|
||||||
|
s3 12
|
||||||
|
s4 14
|
||||||
|
s5 12
|
||||||
|
s6 12
|
||||||
|
s7 10;
|
||||||
|
|
||||||
|
param Z :=
|
||||||
|
s1 25
|
||||||
|
s2 25
|
||||||
|
s3 50
|
||||||
|
s4 100
|
||||||
|
s5 25
|
||||||
|
s6 50
|
||||||
|
s7 100;
|
||||||
|
|
||||||
|
end;
|
||||||
Binary file not shown.
BIN
NotProgramming/MOM/report_two/mom2.drawio.pdf
Normal file
BIN
NotProgramming/MOM/report_two/mom2.drawio.pdf
Normal file
Binary file not shown.
41
NotProgramming/MOM/report_two/plikdat.dat
Normal file
41
NotProgramming/MOM/report_two/plikdat.dat
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
data;
|
||||||
|
set Z := z;
|
||||||
|
set S := s1, s2;
|
||||||
|
set S1 := s1;
|
||||||
|
set S2 := s2;
|
||||||
|
set G1 := g1;
|
||||||
|
set P := p1, p2;
|
||||||
|
set P2 := p2;
|
||||||
|
set O2 := o2;
|
||||||
|
set D := d1, d2;
|
||||||
|
set W := w1, w2;
|
||||||
|
set N := z, s1, s2, g1, p1, p2, o2, d1, d2, w1, w2;
|
||||||
|
set Nz := s1, s2, g1, p1, p2, o2, d1, d2, w1, w2;
|
||||||
|
set Nw := z, s1, s2, g1, p1, p2, o2, d1, d2;
|
||||||
|
set Nzw := s1, s2, g1, p1, p2, o2, d1, d2;
|
||||||
|
param r := w1 467 w2 480;
|
||||||
|
param u :=
|
||||||
|
z z 0 z s1 12000 z s2 8000 z g1 0 z p1 0
|
||||||
|
z p2 0 z o2 0 z d1 0 z d2 0 z w1 0 z w2 0
|
||||||
|
s1 z 0 s1 s1 0 s1 s2 0 s1 g1 99999 s1 p1 0
|
||||||
|
s1 p2 0 s1 o2 0 s1 d1 0 s1 d2 0 s1 w1 0 s1 w2 0
|
||||||
|
s2 z 0 s2 s1 0 s2 s2 0 s2 g1 0 s2 p1 0
|
||||||
|
s2 p2 99999 s2 o2 99999 s2 d1 0 s2 d2 0 s2 w1 0 s2 w2 0
|
||||||
|
g1 z 0 g1 s1 0 g1 s2 0 g1 g1 0 g1 p1 99999
|
||||||
|
g1 p2 0 g1 o2 0 g1 d1 0 g1 d2 0 g1 w1 0 g1 w2 0
|
||||||
|
p1 z 0 p1 s1 0 p1 s2 0 p1 g1 0 p1 p1 0
|
||||||
|
p1 p2 0 p1 o2 0 p1 d1 99999 p1 d2 99999 p1 w1 0 p1 w2 0
|
||||||
|
p2 z 0 p2 s1 0 p2 s2 0 p2 g1 0 p2 p1 0
|
||||||
|
p2 p2 0 p2 o2 0 p2 d1 99999 p2 d2 99999 p2 w1 0 p2 w2 0
|
||||||
|
o2 z 0 o2 s1 0 o2 s2 0 o2 g1 0 o2 p1 0
|
||||||
|
o2 p2 0 o2 o2 0 o2 d1 0 o2 d2 0 o2 w1 0 o2 w2 99999
|
||||||
|
d1 z 0 d1 s1 0 d1 s2 0 d1 g1 0 d1 p1 0
|
||||||
|
d1 p2 0 d1 o2 0 d1 d1 0 d1 d2 0 d1 w1 99999 d1 w2 0
|
||||||
|
d2 z 0 d2 s1 0 d2 s2 0 d2 g1 0 d2 p1 0
|
||||||
|
d2 p2 0 d2 o2 0 d2 d1 0 d2 d2 0 d2 w1 0 d2 w2 99999
|
||||||
|
w1 z 0 w1 s1 0 w1 s2 0 w1 g1 0 w1 p1 0
|
||||||
|
w1 p2 0 w1 o2 0 w1 d1 0 w1 d2 0 w1 w1 0 w1 w2 0
|
||||||
|
w2 z 0 w2 s1 0 w2 s2 0 w2 g1 0 w2 p1 0
|
||||||
|
w2 p2 0 w2 o2 0 w2 d1 0 w2 d2 0 w2 w1 0 w2 w2 0;
|
||||||
|
param m := p1 d1 0.1 p1 d2 0.9 p2 d1 0.1 p2 d2 0.9;
|
||||||
|
end;
|
||||||
115
NotProgramming/MOM/report_two/plikmod.mod
Normal file
115
NotProgramming/MOM/report_two/plikmod.mod
Normal file
@ -0,0 +1,115 @@
|
|||||||
|
# PARAMETRY
|
||||||
|
# Stan poczatkowy
|
||||||
|
set Z;
|
||||||
|
# Zakupione surowce, s1 i s2
|
||||||
|
set S; set S1; set S2;
|
||||||
|
# Surowiec S1 zaladowany do wagonow
|
||||||
|
set G1;
|
||||||
|
# Surowce w przygotowywalni
|
||||||
|
set P; set P1; set P2;
|
||||||
|
# Surowiec S2 w zakladzie obrobki cieplnej
|
||||||
|
set O2;
|
||||||
|
# Polprodukty
|
||||||
|
set D; set D1; set D2;
|
||||||
|
# Wyroby
|
||||||
|
set W; set W1; set W2;
|
||||||
|
# Stany surowcow, zakupione, wyroby, obrobka cieplna
|
||||||
|
set N; set Nz; set Nw; set Nzw;
|
||||||
|
|
||||||
|
# Cena sprzedazy wyrobu
|
||||||
|
param r{w in W};
|
||||||
|
# Przepustowosc przeplwyu z jednego stanu do drugiego
|
||||||
|
param u{i in N, j in N};
|
||||||
|
# Mnoznik definijujacy przepwy ze stanu surowiec
|
||||||
|
# w przygotowalni do stanu polprodukt
|
||||||
|
param m{p in P, d in D};
|
||||||
|
|
||||||
|
# ZMIENNE DECYZYJNE
|
||||||
|
# przeplyw pomiedzy stanem i a stanem j
|
||||||
|
var f{i in N, j in N}, >= 0, integer; # Ograniczenie 1
|
||||||
|
|
||||||
|
# Zmienne pomocnicze
|
||||||
|
# liczba zakupionego surowca S1 powyzej 2387 ton
|
||||||
|
var a1, >= 0, integer; # Ograniczenie 5
|
||||||
|
# liczba zakupionego surowca S1 powyzej 6659 ton
|
||||||
|
var a2, >= 0, integer; # Ograniczenie 6
|
||||||
|
# liczba zakupionego surowca S2 powyzej 2090 ton
|
||||||
|
var b1, >= 0, integer; # Ograniczenie 7
|
||||||
|
# liczba zakupionego surowca S2 powyzej 4349 ton
|
||||||
|
var b2, >= 0, integer; # Ograniczenie 8
|
||||||
|
# liczba wynajetych lokomotyw
|
||||||
|
var wl, >= 0, integer;
|
||||||
|
# liczba wagonow transportujacych surowiec S1 do przygotowalni
|
||||||
|
var cp1, >= 0, integer;
|
||||||
|
# liczba ciezarowek transportujacych surowiec S2 do przygotowalni
|
||||||
|
var ep2, >= 0, integer;
|
||||||
|
# liczba ciezarowek transportujacych surowiec S2
|
||||||
|
# do zakladu obrobki cieplnej
|
||||||
|
var eo2, >= 0, integer;
|
||||||
|
var e1, >= 0, <=1, integer;
|
||||||
|
var e2, >= 0, <=1, integer;
|
||||||
|
# Liczba pracownikow
|
||||||
|
var l, >= 0, integer;
|
||||||
|
|
||||||
|
maximize Q: (sum {i in N, w in W} r[w] * f[i,w])
|
||||||
|
- (19* (sum {z in Z, s1 in S1} f[z, s1] )
|
||||||
|
- 5*a1
|
||||||
|
- 4*a2
|
||||||
|
+ 11* sum {z in Z, s2 in S2} (f[z, s2])
|
||||||
|
+ 2*b1
|
||||||
|
+ 2*b2
|
||||||
|
+ 1290*cp1
|
||||||
|
+ 1500*ep2
|
||||||
|
+ 1500*eo2
|
||||||
|
+ 160*l
|
||||||
|
+ 10000*e1
|
||||||
|
+ 40000*e2);
|
||||||
|
|
||||||
|
# OGRANICZENIA
|
||||||
|
subject to
|
||||||
|
# Ogolne i Dostepne surowce
|
||||||
|
Ogr_1_3_4{i in N, j in N}:
|
||||||
|
f[i,j] <= u[i,j];
|
||||||
|
Ogr_2{k in Nzw}:
|
||||||
|
sum {i in Nz} f[k,i] = sum {j in Nw} f[j,k];
|
||||||
|
# Koszt zakupu surowcow
|
||||||
|
Ogr_9{z in Z, s1 in S1}:
|
||||||
|
a1 <= f[z,s1] - 2387;
|
||||||
|
Ogr_10{z in Z, s1 in S1}:
|
||||||
|
a2 <= f[z,s1] - 6659;
|
||||||
|
Ogr_11{z in Z, s2 in S2}:
|
||||||
|
b1 >= f[z,s2] - 2090;
|
||||||
|
Ogr_l2{z in Z, s2 in S2}:
|
||||||
|
b2 >= f[z,s2] - 4349;
|
||||||
|
# Transport surowca S1
|
||||||
|
Ogr_13{s1 in S1, g1 in G1}:
|
||||||
|
cp1 >= f[s1,g1] / 18;
|
||||||
|
# Transport surowca S2
|
||||||
|
Ogr_14{s2 in S2, p2 in P2}:
|
||||||
|
ep2 >= f[s2,p2] / 25;
|
||||||
|
# Praca przygotowalni
|
||||||
|
Ogr_15:
|
||||||
|
sum {i in N, p in P} f[i,p] <= 16000;
|
||||||
|
Ogr_16{p in P, d in D}:
|
||||||
|
(sum {i in N} f[i,p]) * m[p,d] = f[p,d];
|
||||||
|
# Koszt pracy przygotowalni
|
||||||
|
Ogr_17:
|
||||||
|
l >= (sum {i in N, p in P} f[i,p])/150;
|
||||||
|
# Transprot S2 do obrobki cieplnej
|
||||||
|
Ogr_18{s2 in S2, o2 in O2}:
|
||||||
|
eo2 >= f[s2,o2] / 25;
|
||||||
|
# Praca zakladu obrobki cieplnej
|
||||||
|
Ogr_19{s2 in S2, o2 in O2}:
|
||||||
|
f[s2,o2] <= 6000;
|
||||||
|
# Minimalna dostarczona ilosc wyrobow
|
||||||
|
Ogr_20{w in W}:
|
||||||
|
sum {i in N} f[i,w] >= 5000;
|
||||||
|
# Na jedna lokomotywe przypada co najwyzej 12 wagonow
|
||||||
|
Ogr_21:
|
||||||
|
12 * wl >= cp1;
|
||||||
|
|
||||||
|
solve;
|
||||||
|
display {i in N, j in N: f[i,j] > 0}: f[i,j];
|
||||||
|
display: a1; display: a2; display: b1; display: b2; display: wl;
|
||||||
|
display: cp1; display: ep2; display: eo2; display:
|
||||||
|
e1; display: l;
|
||||||
363
NotProgramming/MOM/report_two/report_two.tex
Normal file
363
NotProgramming/MOM/report_two/report_two.tex
Normal file
@ -0,0 +1,363 @@
|
|||||||
|
\documentclass[12pt]{article}
|
||||||
|
\usepackage[polish]{babel}
|
||||||
|
\usepackage{float}
|
||||||
|
\usepackage{listings}
|
||||||
|
\usepackage[utf8]{inputenc}
|
||||||
|
\usepackage{amsmath}
|
||||||
|
\usepackage{pdfpages}
|
||||||
|
\usepackage[T1]{fontenc} % Add this line
|
||||||
|
\title{Sprawozdanie z projektu 2, MOM}
|
||||||
|
\author{Krzysztof Rudnicki, 307585}
|
||||||
|
\date{\today}
|
||||||
|
\begin{document}
|
||||||
|
\maketitle
|
||||||
|
\section{Parametry}
|
||||||
|
z - stan początkowy \\
|
||||||
|
S - zakupione surowce (S = \{S1, S2\}) \\
|
||||||
|
G1 - surowiec S1 załadowany do wagonów \\
|
||||||
|
P - surowce w przygotowywalni (P = \{P1, P2\}) \\
|
||||||
|
O2 - surowiec S2 w zakładzie obróbki cieplnej \\
|
||||||
|
D - półprodukty (D = \{D1, D2\}) \\
|
||||||
|
W - wyroby (W = \{W1, W2\}) \\
|
||||||
|
N - stany surowców/półproduktów/wyrobów (zakupione surowce, surowce w przechowalni, surowce w zakładzie obróbki cieplnej, półprodukty, wyroby) \\
|
||||||
|
$r_w$ - cena sprzedaży wyrobu $w[\frac{1}{t}]$ \\
|
||||||
|
$u_{ij}$ - przepustowośc przepływu ze stanu i do stanu j[t] \\
|
||||||
|
$m_{pd}$ - mnożnik definiujący przepływ ze stanu 'surowiec w przygotowalni p' do stanu 'półprodukt d'
|
||||||
|
|
||||||
|
\section{Zmienne decyzyjne}
|
||||||
|
$f_{ij}$ = przepływ pomiędzy stanem i a stanem j [t] \\
|
||||||
|
\section{Zmienne pomocnicze}
|
||||||
|
$a_1$ - liczba zakupionego surowca S1 powyżej 2387 ton [t] \\
|
||||||
|
$a_2$ - liczba zakupionego surowca S1 powyżej 6659 ton [t] \\
|
||||||
|
$b_1$ - liczba zakupionego surowca S2 powyżej 2090 ton [t] \\
|
||||||
|
$b_2$ - liczba zakupionego surowca S2 powyżej 4349 ton [t] \\
|
||||||
|
$c_{P1}$ - liczba wagonów transportujących surowiec S1 do przygotowalni \\
|
||||||
|
$e_{P2}$ - liczba ciężarówek transportujących surowiec S2 do przygotowalni \\
|
||||||
|
$e_{O2}$ - liczba ciężarówek transportującyhc surowiec S2 do zakładu obróbki cieplnej \\
|
||||||
|
$g_1$ - zmienna binarna przyjmująca wartość 1 gdy przepływ ze stanu "zakupiony surowiec S2" (S2) do stanu "surowiec S2 w zakładzie obróbki cieplnej" (O2) jest większy niż 2000 ton i mniejszy niż 4000 ton \\
|
||||||
|
$g_2$ - zmienna binarna przyjmująca wartość 1 gdy przepływ ze stanu "zakupiony surowiec S2" (S2) do stanu "surowiec S2 w zakładzie obróbki cieplnej" (O2) jest większy niż 4000 ton i mniejszy niż 6000 ton \\
|
||||||
|
l - liczba pracowników zatrudnionych w przygotowalni
|
||||||
|
\section{Funkcja celu}
|
||||||
|
\begin{align*}
|
||||||
|
Q &= max[Zysk - Koszt] \\
|
||||||
|
&= max[\sum_{i \in N, w \in W} r_w + f_{iw} \\
|
||||||
|
&- (19f_{zS1} - 5a_1 - 4a_2 + 11f_{zS2} + 2b_1 + 2b_2 \\
|
||||||
|
&+ 1290c_{P1} + 1500e_{P2} +1500e_{O2} + 160l + 10000g_1 + 40000g_2)]
|
||||||
|
\end{align*}
|
||||||
|
|
||||||
|
\section{Ograniczenia}
|
||||||
|
\subsection{Ogólne}
|
||||||
|
Przepływ musi być nieujemny oraz mniejszy przepustowości
|
||||||
|
\begin{equation}
|
||||||
|
0 \leq f_{ij} \leq u_{ij}, \qquad (i,j) \in N \\
|
||||||
|
\end{equation}
|
||||||
|
Wszystko co przypłyneło do stanu k musi stamtąd "odpłynąć"
|
||||||
|
\begin{equation}
|
||||||
|
\sum_{i \in N \backslash \{z\}} f_{ki} = \sum_{i \in N \backslash \{W\}} f_{jk}, \qquad k \in N \backslash \{z, W\}
|
||||||
|
\end{equation}
|
||||||
|
|
||||||
|
\subsection{Dostępne surowce}
|
||||||
|
Nie możemy kupić więcej surowca S1 niż jest dostępne
|
||||||
|
\begin{equation}
|
||||||
|
f_{zS1} \leq 12000
|
||||||
|
\end{equation}
|
||||||
|
Nie możemy kupić więcej surowca S2 niż jest dostępne
|
||||||
|
\begin{equation}
|
||||||
|
f_{zS2} \leq 8000
|
||||||
|
\end{equation}
|
||||||
|
|
||||||
|
\subsection{Koszt zakupu surowców}
|
||||||
|
Nie możemy kupić mniej niż 0 surowców
|
||||||
|
\begin{equation}
|
||||||
|
a_1 \geq 0
|
||||||
|
\end{equation}
|
||||||
|
\begin{equation}
|
||||||
|
a_2 \geq 0
|
||||||
|
\end{equation}
|
||||||
|
\begin{equation}
|
||||||
|
b_1 \geq 0
|
||||||
|
\end{equation}
|
||||||
|
\begin{equation}
|
||||||
|
b_2 \geq 0
|
||||||
|
\end{equation}
|
||||||
|
Ograniczamy ile ton ponad dany limit kupiliśmy
|
||||||
|
\begin{equation}
|
||||||
|
a_1 \leq f_{zS1} - 2387
|
||||||
|
\end{equation}
|
||||||
|
liczba powyżej 2056 ton
|
||||||
|
\begin{equation}
|
||||||
|
a_2 \leq f_{zS1} - 6659
|
||||||
|
\end{equation}
|
||||||
|
liczba powyżej 2056 ton
|
||||||
|
\begin{equation}
|
||||||
|
b_1 \leq f_{zS2} - 2090
|
||||||
|
\end{equation}
|
||||||
|
liczba powyżej 2056 ton
|
||||||
|
\begin{equation}
|
||||||
|
b_2 \leq f_{zS2} - 4349
|
||||||
|
\end{equation}
|
||||||
|
\subsection{Transport surowca S1 do przygotowalni}
|
||||||
|
wagon może przetransportować maks. 18 ton surowca S1
|
||||||
|
\begin{equation}
|
||||||
|
b_{P1} \geq [\frac{ f_{S1, G1} }{18}]
|
||||||
|
\end{equation}
|
||||||
|
\subsection{Transport surowca S2 do przygtowalni}
|
||||||
|
ciężarówka może przetransportować maks. 25 ton surowca S2
|
||||||
|
\begin{equation}
|
||||||
|
c_{P2} \geq [ \frac{ f_{S2, P2} }{ 25 } ]
|
||||||
|
\end{equation}
|
||||||
|
\subsection{Praca przygotowalni}
|
||||||
|
Przygotowalnia nie może mieć więcej surowców niż przepustowości
|
||||||
|
\begin{equation}
|
||||||
|
\sum_{i \in N, p \in P} f_{ip} \leq 16000
|
||||||
|
\end{equation}
|
||||||
|
ilość półproduktów w zależności od surowca
|
||||||
|
\begin{equation}
|
||||||
|
(\sum_{i \in N} f_{ip}) m_{pd} = f_{pd}, \qquad i \in N, p \in P, d \in D
|
||||||
|
\end{equation}
|
||||||
|
\subsection{Koszt pracy przygotowalni}
|
||||||
|
3 pracowników może obsługiwać maksymalnie 150 ton całkowitej ilości przerabianych surowców
|
||||||
|
\begin{equation}
|
||||||
|
l \geq [ \frac{ \sum_{i\in N, p \in P} f_{ip} }{150} ]
|
||||||
|
\end{equation}
|
||||||
|
\subsection{Transport S2 do zakładu obróbki cieplnej}
|
||||||
|
ciężarówka może przetransportować maks. 25 ton surowca S2
|
||||||
|
\begin{equation}
|
||||||
|
c_{O2} \geq [\frac{ f_{S2, O2} }{25}]
|
||||||
|
\end{equation}
|
||||||
|
\subsection{Praca zakładu obróbki cieplnej}
|
||||||
|
ilość surowca S2 w zakładzie obróbki cieplnej nie może być większa od 6000
|
||||||
|
\begin{equation}
|
||||||
|
f_{S2, O2} \leq 6000
|
||||||
|
\end{equation}
|
||||||
|
\subsection{Minimalna dostarczona ilość wyrobów}
|
||||||
|
Zgodnie z umową musimy dostarczyć przynajmniej 5000 ton wyrobów
|
||||||
|
\begin{equation}
|
||||||
|
\sum_{i \in N f_{iw}} \geq 5000, \qquad w \in W
|
||||||
|
\end{equation}
|
||||||
|
\subsection{Maksymalna liczba wagonow}
|
||||||
|
Na jedna lokomotywę, nie może przypadać więcej niż 12 wagonów
|
||||||
|
\begin{equation}
|
||||||
|
12wl \geq c_{P1}
|
||||||
|
\end{equation}
|
||||||
|
|
||||||
|
\section{Model sieciowy}
|
||||||
|
\includepdf{mom2.drawio.pdf}
|
||||||
|
|
||||||
|
\section{Implementacja modelu}
|
||||||
|
\begin{lstlisting}[caption= plik mod]
|
||||||
|
# PARAMETRY
|
||||||
|
# Stan poczatkowy
|
||||||
|
set Z;
|
||||||
|
# Zakupione surowce, s1 i s2
|
||||||
|
set S; set S1; set S2;
|
||||||
|
# Surowiec S1 zaladowany do wagonow
|
||||||
|
set G1;
|
||||||
|
# Surowce w przygotowywalni
|
||||||
|
set P; set P1; set P2;
|
||||||
|
# Surowiec S2 w zakladzie obrobki cieplnej
|
||||||
|
set O2;
|
||||||
|
# Polprodukty
|
||||||
|
set D; set D1; set D2;
|
||||||
|
# Wyroby
|
||||||
|
set W; set W1; set W2;
|
||||||
|
# Stany surowcow, zakupione, wyroby, obrobka cieplna
|
||||||
|
set N; set Nz; set Nw; set Nzw;
|
||||||
|
|
||||||
|
# Cena sprzedazy wyrobu
|
||||||
|
param r{w in W};
|
||||||
|
# Przepustowosc przeplwyu z jednego stanu do drugiego
|
||||||
|
param u{i in N, j in N};
|
||||||
|
# Mnoznik definijujacy przepwy ze stanu surowiec
|
||||||
|
# w przygotowalni do stanu polprodukt
|
||||||
|
param m{p in P, d in D};
|
||||||
|
|
||||||
|
# ZMIENNE DECYZYJNE
|
||||||
|
# przeplyw pomiedzy stanem i a stanem j
|
||||||
|
var f{i in N, j in N}, >= 0, integer; # Ograniczenie 1
|
||||||
|
|
||||||
|
# Zmienne pomocnicze
|
||||||
|
# liczba zakupionego surowca S1 powyzej 2387 ton
|
||||||
|
var a1, >= 0, integer; # Ograniczenie 5
|
||||||
|
# liczba zakupionego surowca S1 powyzej 6659 ton
|
||||||
|
var a2, >= 0, integer; # Ograniczenie 6
|
||||||
|
# liczba zakupionego surowca S2 powyzej 2090 ton
|
||||||
|
var b1, >= 0, integer; # Ograniczenie 7
|
||||||
|
# liczba zakupionego surowca S2 powyzej 4349 ton
|
||||||
|
var b2, >= 0, integer; # Ograniczenie 8
|
||||||
|
# liczba wynajetych lokomotyw
|
||||||
|
var wl, >= 0, integer;
|
||||||
|
# liczba wagonow transportujacych surowiec S1 do przygotowalni
|
||||||
|
var cp1, >= 0, integer;
|
||||||
|
# liczba ciezarowek transportujacych surowiec S2 do przygotowalni
|
||||||
|
var ep2, >= 0, integer;
|
||||||
|
# liczba ciezarowek transportujacych surowiec S2
|
||||||
|
# do zakladu obrobki cieplnej
|
||||||
|
var eo2, >= 0, integer;
|
||||||
|
var e1, >= 0, <=1, integer;
|
||||||
|
var e2, >= 0, <=1, integer;
|
||||||
|
# Liczba pracownikow
|
||||||
|
var l, >= 0, integer;
|
||||||
|
|
||||||
|
maximize Q: (sum {i in N, w in W} r[w] * f[i,w])
|
||||||
|
- (19* (sum {z in Z, s1 in S1} f[z, s1] )
|
||||||
|
- 5*a1
|
||||||
|
- 4*a2
|
||||||
|
+ 11* sum {z in Z, s2 in S2} (f[z, s2])
|
||||||
|
+ 2*b1
|
||||||
|
+ 2*b2
|
||||||
|
+ 1290*cp1
|
||||||
|
+ 1500*ep2
|
||||||
|
+ 1500*eo2
|
||||||
|
+ 160*l
|
||||||
|
+ 10000*e1
|
||||||
|
+ 40000*e2);
|
||||||
|
|
||||||
|
# OGRANICZENIA
|
||||||
|
subject to
|
||||||
|
# Ogolne i Dostepne surowce
|
||||||
|
Ogr_1_3_4{i in N, j in N}:
|
||||||
|
f[i,j] <= u[i,j];
|
||||||
|
Ogr_2{k in Nzw}:
|
||||||
|
sum {i in Nz} f[k,i] = sum {j in Nw} f[j,k];
|
||||||
|
# Koszt zakupu surowcow
|
||||||
|
Ogr_9{z in Z, s1 in S1}:
|
||||||
|
a1 <= f[z,s1] - 2387;
|
||||||
|
Ogr_10{z in Z, s1 in S1}:
|
||||||
|
a2 <= f[z,s1] - 6659;
|
||||||
|
Ogr_11{z in Z, s2 in S2}:
|
||||||
|
b1 >= f[z,s2] - 2090;
|
||||||
|
Ogr_l2{z in Z, s2 in S2}:
|
||||||
|
b2 >= f[z,s2] - 4349;
|
||||||
|
# Transport surowca S1
|
||||||
|
Ogr_13{s1 in S1, g1 in G1}:
|
||||||
|
cp1 >= f[s1,g1] / 18;
|
||||||
|
# Transport surowca S2
|
||||||
|
Ogr_14{s2 in S2, p2 in P2}:
|
||||||
|
ep2 >= f[s2,p2] / 25;
|
||||||
|
# Praca przygotowalni
|
||||||
|
Ogr_15:
|
||||||
|
sum {i in N, p in P} f[i,p] <= 16000;
|
||||||
|
Ogr_16{p in P, d in D}:
|
||||||
|
(sum {i in N} f[i,p]) * m[p,d] = f[p,d];
|
||||||
|
# Koszt pracy przygotowalni
|
||||||
|
Ogr_17:
|
||||||
|
l >= (sum {i in N, p in P} f[i,p])/150;
|
||||||
|
# Transprot S2 do obrobki cieplnej
|
||||||
|
Ogr_18{s2 in S2, o2 in O2}:
|
||||||
|
eo2 >= f[s2,o2] / 25;
|
||||||
|
# Praca zakladu obrobki cieplnej
|
||||||
|
Ogr_19{s2 in S2, o2 in O2}:
|
||||||
|
f[s2,o2] <= 6000;
|
||||||
|
# Minimalna dostarczona ilosc wyrobow
|
||||||
|
Ogr_20{w in W}:
|
||||||
|
sum {i in N} f[i,w] >= 5000;
|
||||||
|
# Na jedna lokomotywe przypada co najwyzej 12 wagonow
|
||||||
|
Ogr_21:
|
||||||
|
12 * wl >= cp1;
|
||||||
|
|
||||||
|
solve;
|
||||||
|
display {i in N, j in N: f[i,j] > 0}: f[i,j];
|
||||||
|
display: a1; display: a2; display: b1; display: b2; display: wl;
|
||||||
|
display: cp1; display: ep2; display: eo2; display:
|
||||||
|
e1; display: l;
|
||||||
|
\end{lstlisting}
|
||||||
|
|
||||||
|
\begin{lstlisting}[caption= plik dat]
|
||||||
|
data;
|
||||||
|
set Z := z;
|
||||||
|
set S := s1, s2;
|
||||||
|
set S1 := s1;
|
||||||
|
set S2 := s2;
|
||||||
|
set G1 := g1;
|
||||||
|
set P := p1, p2;
|
||||||
|
set P2 := p2;
|
||||||
|
set O2 := o2;
|
||||||
|
set D := d1, d2;
|
||||||
|
set W := w1, w2;
|
||||||
|
set N := z, s1, s2, g1, p1, p2, o2, d1, d2, w1, w2;
|
||||||
|
set Nz := s1, s2, g1, p1, p2, o2, d1, d2, w1, w2;
|
||||||
|
set Nw := z, s1, s2, g1, p1, p2, o2, d1, d2;
|
||||||
|
set Nzw := s1, s2, g1, p1, p2, o2, d1, d2;
|
||||||
|
param r := w1 467 w2 480;
|
||||||
|
param u :=
|
||||||
|
z z 0 z s1 12000 z s2 8000 z g1 0 z p1 0
|
||||||
|
z p2 0 z o2 0 z d1 0 z d2 0 z w1 0 z w2 0
|
||||||
|
s1 z 0 s1 s1 0 s1 s2 0 s1 g1 99999 s1 p1 0
|
||||||
|
s1 p2 0 s1 o2 0 s1 d1 0 s1 d2 0 s1 w1 0 s1 w2 0
|
||||||
|
s2 z 0 s2 s1 0 s2 s2 0 s2 g1 0 s2 p1 0
|
||||||
|
s2 p2 99999 s2 o2 99999 s2 d1 0 s2 d2 0 s2 w1 0 s2 w2 0
|
||||||
|
g1 z 0 g1 s1 0 g1 s2 0 g1 g1 0 g1 p1 99999
|
||||||
|
g1 p2 0 g1 o2 0 g1 d1 0 g1 d2 0 g1 w1 0 g1 w2 0
|
||||||
|
p1 z 0 p1 s1 0 p1 s2 0 p1 g1 0 p1 p1 0
|
||||||
|
p1 p2 0 p1 o2 0 p1 d1 99999 p1 d2 99999 p1 w1 0 p1 w2 0
|
||||||
|
p2 z 0 p2 s1 0 p2 s2 0 p2 g1 0 p2 p1 0
|
||||||
|
p2 p2 0 p2 o2 0 p2 d1 99999 p2 d2 99999 p2 w1 0 p2 w2 0
|
||||||
|
o2 z 0 o2 s1 0 o2 s2 0 o2 g1 0 o2 p1 0
|
||||||
|
o2 p2 0 o2 o2 0 o2 d1 0 o2 d2 0 o2 w1 0 o2 w2 99999
|
||||||
|
d1 z 0 d1 s1 0 d1 s2 0 d1 g1 0 d1 p1 0
|
||||||
|
d1 p2 0 d1 o2 0 d1 d1 0 d1 d2 0 d1 w1 99999 d1 w2 0
|
||||||
|
d2 z 0 d2 s1 0 d2 s2 0 d2 g1 0 d2 p1 0
|
||||||
|
d2 p2 0 d2 o2 0 d2 d1 0 d2 d2 0 d2 w1 0 d2 w2 99999
|
||||||
|
w1 z 0 w1 s1 0 w1 s2 0 w1 g1 0 w1 p1 0
|
||||||
|
w1 p2 0 w1 o2 0 w1 d1 0 w1 d2 0 w1 w1 0 w1 w2 0
|
||||||
|
w2 z 0 w2 s1 0 w2 s2 0 w2 g1 0 w2 p1 0
|
||||||
|
w2 p2 0 w2 o2 0 w2 d1 0 w2 d2 0 w2 w1 0 w2 w2 0;
|
||||||
|
param m := p1 d1 0.1 p1 d2 0.9 p2 d1 0.1 p2 d2 0.9;
|
||||||
|
end;
|
||||||
|
\end{lstlisting}
|
||||||
|
|
||||||
|
\section{Wyniki}
|
||||||
|
Model z takimi ograniczeniami \textbf{nie znajduje} rozwiązania \\
|
||||||
|
Problemem jest tu ogranicznie mówiące o tym że należy dostaczyć co najmniej \textbf{5000} ton \textbf{każdego} produktu \\
|
||||||
|
To ograniczenie jest niewykonywalne gdyż nawet zakładając dostarczenie maksymalnej liczby ton surowców (12000 + 8000 = 20000) ton, i ignorując ograniczenie przepustowośći przygotowalni 16000 ton, nie jesteśmy w stanie wytworzyć wystarczająco półproduktu D1 aby wytworzyć wystarczająco wyrobu W1 \\
|
||||||
|
gdybyśmy całość dostępnych surowców (znowu, ignorując przepustowość przygotowalni), zużyli na wytwarzanie tylko i wyłącznie półproduktu D1 z którego potem uzyskujemy wyrób W1, otrzymalibyśmy:
|
||||||
|
\[ (12000 + 8000) * 0.1 = 20000 * 0.1 = 2000 \]
|
||||||
|
maksymalna liczba ton wyrobu W1 którą możemy uzyskać, ignorując przepustowość przygotowywalni oraz wymagania dotyczące W2 wynosi 2000 ton, czyli mniej niż 5000 wymaganych ton \\
|
||||||
|
W związku z tym wyniki przedstawione niżej dotyczącą przypadku w którym \textbf{ignorujemy} ograniczenie związane z minimalną liczbą ton każdego produktu który musimy dostarczyć (ograniczenie 20) \\
|
||||||
|
\begin{figure}[H]
|
||||||
|
\caption{}
|
||||||
|
\begin{tabular}{|c|c|c|c|c|c|c|c|c|c|c|c|}
|
||||||
|
\hline
|
||||||
|
& z & S1 & S2 & G1 & P1 & P2 & O2 & D1 & D2 & W1 & W2 \\
|
||||||
|
\hline
|
||||||
|
z & 0 & 12000 & 8000 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
|
||||||
|
\hline
|
||||||
|
S1 & 0 & 0 & 0 & 12000 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
|
||||||
|
\hline
|
||||||
|
S2 & 0 & 0 & 0 & 0 & 0 & 2000 & 6000 & 0 & 0 & 0 & 0 \\
|
||||||
|
\hline
|
||||||
|
G1 & 0 & 0 & 0 & 0 & 12000 & 0 & 0 & 0 & 0 & 0 & 0 \\
|
||||||
|
\hline
|
||||||
|
P1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 1200 & 10800 & 0 & 0 \\
|
||||||
|
\hline
|
||||||
|
P2 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 200 & 1800 & 0 & 0 \\
|
||||||
|
\hline
|
||||||
|
O2 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 6000 \\
|
||||||
|
\hline
|
||||||
|
D1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 1400 & 0 \\
|
||||||
|
\hline
|
||||||
|
D2 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 12600 \\
|
||||||
|
\hline
|
||||||
|
W1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
|
||||||
|
\hline
|
||||||
|
W2 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
|
||||||
|
\hline
|
||||||
|
|
||||||
|
\end{tabular}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
\[ a_1 = 9613 \]
|
||||||
|
\[ a_2 = 5341 \]
|
||||||
|
\[ b_1 = 5910 \]
|
||||||
|
\[ b_2 = 3651 \]
|
||||||
|
\[ w_1 = 56 \]
|
||||||
|
\[ c_{P1} = 667 \]
|
||||||
|
\[ e_{P2} = 80 \]
|
||||||
|
\[ e_{O2} = 240 \]
|
||||||
|
\[ e_1 = 0 \]
|
||||||
|
\[ e_2 = 0 \]
|
||||||
|
\[ l = 94 \]
|
||||||
|
Ponownie, wyniki powyżej są prawdziwe wyłącznie dla przypadku w którym \textbf{ignorujemy ograniczenie numer 20}
|
||||||
|
|
||||||
|
\end{document}
|
||||||
Loading…
Reference in New Issue
Block a user