$Title Order-Picking-Problem (Kommissionierung) $Ontext Vorlesung: Distributionslogistik Abschnitt: 4.3 Kommissionierung Problemstellung: Gruppierung von Kommissionierauftraegen und Routing der Auftragspositionen - Model - Author: Rui Guo Date: 28/10/2019 $Offtext $eolcom// $include opp_data.gms variables zeit Gesamte Fahrzeit (Zielfunktion) x(i,j,mu) gleich 1 falls in Gruppe mu Position i direkt vor Position j kommissioniert wird y(k,mu) gleich 1 falls Auftrag k Auftragsgruppe mu zugewiesen wird pi(i) Stufenindex von Position i auf ihrer Kommissioniertour bei Indizierung mit pi(i0) gleich 0 ; positive variables pi ; binary variables x, y ; equations def_zeit Definition der Fahrzeit auftrag_gruppe(k) Zuweisung von Auftrag k zu einer Gruppe kapazitaet(mu) Kapazitaetsrestriktion fuer Kommissionierfahrzeug von Gruppe mu kopplung(i,j,mu) Fahrt von Position i zu Position j nur wenn beide Positionen zur gleichen Gruppe mu gehoeren flusserhaltung(i,mu) Flusserhaltungsbedingung fuer Position i und Gruppe mu bedienung(i,mu) Position i auf Fahrt fuer Gruppe mu bedienen wenn Auftrag k(i) Gruppe mu zugewiesen wurde kurzzyklen(i,j,mu) Miller-Tucker-Zemlin-Bedingung zur Vermeidung von Kurzzyklen fuer Positionen i und j sowie Gruppe mu ; def_zeit.. zeit =e= sum((i,j,mu), d(i,j)*x(i,j,mu)) ; auftrag_gruppe(k).. sum(mu, y(k,mu)) =e= 1; kapazitaet(mu).. sum(k, b(k)*y(k,mu)) =l= u; kopplung(i,j,mu)$((ord(i)>1) and (ord(j)>1)).. x(i,j,mu) =l= 1/2*(sum(k$a(k,i), y(k,mu))+sum(k$a(k,j), y(k,mu))); flusserhaltung(i,mu).. sum(j$(not sameas(i,j)), x(i,j,mu)) =e= sum(j$(not sameas(i,j)), x(j,i,mu)); bedienung(i,mu)$(ord(i)>1).. sum(j$(not sameas(i,j)), x(i,j,mu)) =e= sum(k$a(k,i), y(k,mu)); kurzzyklen(i,j,mu)$((ord(i)>1) and (not sameas(i,j))).. pi(j)-pi(i) =g= card(i)*(x(i,j,mu)-1)+1; model opp / all / ; options mip = cplex optcr = 0 reslim = 60 ; solve opp minimzing zeit using mip ; display zeit.l, x.l, y.l ;