Masterclass Conditioneel inkopen en Micropercelen
Prof. dr. Jan Telgen
26 juni 2007
PIANOo lunch
© 2003 Significant. Alle rechten zijn gedeponeerd.


Agenda
Percelen
Conditioneel inkopen
­ Voorbeeld
­ Oefenen op papier
­ Opgave
­ Uitwerken op computer
Micropercelen
­ Voorbeelden
­ Toepassingen
1


Percelen
Een opdracht wordt in percelen verdeeld vanwege:
­ Leveranciers kunnen hele opdracht niet aan
­ Inkopende organisatie wil niet hele opdracht bij één leverancier leggen
­ Etc.
Verdelen in percelen gebeurt door inkopende organisatie
­ Zonder expliciete overwegingen m.b.t. markt mogelijkheden
­ Realiseren optimale verdeling maar beperkt
­ Beperkt aantal percelen om aansturing simpel te houden
2


Percelen
Werken met meer percelen is niet zo anders:
Dan doe je hetzelfde als voor één inkoop/aanbesteding
­ Kies de beste per perceel
­ Doe dat voor alle percelen
Gaat prima, tenzij ....
Tenzij er onderlinge afhankelijkheden zijn tussen percelen
Hetzij positief:
­ Als je dit perceel wint, moet je ook dat doen
Hetzij negatief:
­ Niet meer dan x verschillende leveranciers
­ Als je dit perceel wint dan zeker niet dat ook
­ Per winnaar niet meer dan y percelen
3


Afhankelijke percelen vereist Conditioneel inkopen
Eén criterium
Meer criteria
(bijv. laagste prijs)
Eén perceel
Eenvoudig
Meer
Eenvoudig,
onafhankelijke
Aantal maal hetzelfde
percelen
Meer
afhankelijke
Conditioneel inkopen
percelen
4


Conditioneel inkopen - voorbeeld
Een onderwijs organisatie heeft 5 vestigingen
In ieder van die vestigingen moet cateraar gevonden worden
prijzen
vestigingen
Cateraar
1
2
3
4
5
A
10
13
12
11
9
B
9
-
13
10
9
C
7
9
9
8
8
D
10
12
-
11
9
E
9
10
10
9
7
F
10
12
13
10
10
G
9
12
11
11
12
H
12
11
11
10
9
I
9
13
-
13
10
J
12
12
11
10
10
5


Conditioneel inkopen - voorbeeld
Beste per kolom
prijzen
vestigingen
Cateraar
1
2
3
4
5
A
10
13
12
11
9
B
9
-
13
10
9
C
7
9
9
8
8
D
10
12
-
11
9
E
9
10
10
9
7
F
10
12
13
10
10
G
9
12
11
11
12
H
12
11
11
10
9
I
9
13
-
13
10
J
12
12
11
10
10
6


Conditioneel inkopen - voorbeeld
Wil druk op cateraars houden: cateraar mag niet meer dan 2 vestigingen bedienen
prijzen
vestigingen
Cateraar
1
2
3
4
5
A
10
13
12
11
9
B
9
-
13
10
9
C
7
9
9
8
8
D
10
12
-
11
9
E
9
10
10
9
7
F
10
12
13
10
10
G
9
12
11
11
12
H
12
11
11
10
9
I
9
13
-
13
10
J
12
12
11
10
10
7


Conditioneel inkopen - voorbeeld
De goedkoopste verdeling
prijzen
vestigingen
Cateraar
1
2
3
4
5
A
10
13
12
11
9
B
9
-
13
10
9
C
7
9
9
8
8
D
10
12
-
11
9
E
9
10
10
9
7
F
10
12
13
10
10
G
9
12
11
11
12
H
12
11
11
10
9
I
9
13
-
13
10
J
12
12
11
10
10
8


Inkopen onder voorwaarden (conditioneel inkopen)
Afhankelijkheden tussen percelen zijn in wezen voorwaarden (condities)
Deze condities leiden al snel naar een LP of IP optimalisatie
­ Wiskundige techniek
­ Inhoudelijk net zo lastig als uitrekenen wortel met Taylor reeks ontwikkeling
­ Voor gebruiker is kennen techniek niet noodzakelijk
LP/IP wordt in veel toepassingen dagelijks gebruikt
­ Zonder wiskundige techniek te kennen (raffinage, routeplanning, etc.)
­ Zo standaard dat het ook als Add-in voor Excel beschikbaar is (What's best)
­ Toepassing is redelijk simpel
(gratis) optimalisatieprogramma als LINDO/LINGO beschikbaar (á la
worteltrekken)
9


Conditioneel inkopen - voorbeeld
Een onderwijs organisatie heeft 3 vestigingen
In ieder van die vestigingen moet cateraar gevonden worden
Maximaal 1 vestiging per cateraar
Kosten:
Vestigingen (= percelen)
cateraars
1
2
3
A
77
63
57
B
81
73
62
C
83
72
65
D
89
75
63
Gunnen op laagste totaalprijs
10


Conditioneel inkopen - voorbeeld
kosten
Vestigingen (= percelen)
Kosten uit tabel tellen alleen als het
cateraars
1
2
3
perceel toegewezen wordt aan die
leverancier. Dus net zo veel
A
77
63
57
variabelen als mogelijke
toewijzingen
B
81
73
62
C
83
72
65
D
89
75
63
Toewijzing is 0 (meeste) of 1 (als
toewijzing
Vestigingen (= percelen)
die leverancier dat perceel krijgt)
cateraars
1
2
3
A
Xa1
Xa2
Xa3
B
Xb1
Xb2
Xb3
C
Xc1
Xc2
Xc3
Computer berekent beste X-en
D
Xd1
Xd2
Xd3
11


Conditioneel inkopen - voorbeeld
Xa1 = 1 als leverancier A perceel 1 wint, anders 0
Idem voor Xb1, Xa2 etc
Totale kosten: 77Xa1 + 63Xa2 + 57Xa3 + 81Xb1 + 73Xb2 + 62Xb3 + etc
Minimaliseren
Voorwaarden:
Ieder perceel wordt gegund:
­ Xa1 + Xb1 + Xc1 + Xd1 = 1
­ Xa2 + Xb2 + Xc2 + Xd2 = 1
­ Xa3 + Xb3 + Xc3 + Xd3 = 1
Geen enkele leverancier wint meer dan 1 perceel:
­ Xa1 + Xa2 + Xa3 <= 1
­ Xb1 + Xb2 + Xb3 <= 1
­ Xc1 + Xc2 + Xc3 <= 1
­ Xd1 + Xd2 + Xd3 <= 1
12


Voorbeeld in LINDO
13


Conditioneel inkopen - voorbeeld
Global optimal solution found
Objective value: 207.0000
Extended solver steps: 0
Total solver iterations: 6
Variable
Value
Reduced Cost
XA1 0.000000 -12.00000
XA2 1.000000 -12.00000
XA3 0.000000 -6.000000
XB1 1.000000 -8.000000
XB2 0.000000 -2.000000
XB3 0.000000 -1.000000
XC1 0.000000 -6.000000
XC2 0.000000 -3.000000
XC3 0.000000 2.000000
XD1 0.000000 0.000000
XD2 0.000000 0.000000
XD3 1.000000 0.000000
14


En nu jullie aan de slag
Formuleren van optimalisaties:
Eerst alle beslissingsvariabelen bepalen
­ welke het zijn, niet de waarde; die laatste rekent het programma uit
­ Zinvolle namen en indexering zijn handig
­ Discrete variabelen: leverancier A levert niet/wel aan perceel 3
Notatie meestal:
­ Xkl = 1 als leverancier k perceel l krijgt gegund
­ Xkl = 0 als leverancier k perceel l niet krijgt gegund
Doelstelling formuleren
­ In termen van de beslissingsvariabelen
­ Maximaliseren of minimaliseren
Randvoorwaarden formuleren
­ In termen van de beslissingsvariabelen
­ Zorg dat je ze allemaal hebt
15


Conditioneel inkopen - formuleringen
Perceel 1
Perceel 2
Perceel 3
Aanbieder A
XA1
XA2
XA3
Aanbieder B
XB1
XB2
XB3
Aanbieder C
XC1
XC2
XC3
16


Inkopen onder voorwaarden (conditioneel inkopen)
Oefenen: er zijn drie percelen (1, 2 en 3) en drie leveranciers (A, B en C).
De aanbestedende dienst wil dat leverancier A precies één perceel wint.
Hoe moet dit genoteerd worden?
De aanbestedende dienst wil dat leverancier B niet meer dan twee
percelen wint. Hoe moet dit genoteerd worden?
De aanbestedende dienst wil dat perceel 1 en perceel 3 niet door dezelfde
leverancier wordt gewonnen. Hoe moet dit genoteerd worden?
17


Inkopen onder voorwaarden (conditioneel inkopen)
Antwoord:
De aanbestedende dienst wil dat leverancier A precies één perceel wint.
x + x + x = 1
A1
A2
A3
De aanbestedende dienst wil dat leverancier B niet meer dan twee percelen wint.
xB1 + xB2 + xB3 <= 2
De aanbestedende dienst wil dat perceel 1 en perceel 3 niet door dezelfde
leverancier wordt gewonnen.
xA1 + xA3 <= 1
xB1 + xB3 <= 1
xC1 + xC3 <= 1
18


Inkopen onder voorwaarden (conditioneel inkopen)
Het oplossen van vraagstukken in LINDO
Type "MIN"

evt. MAX
Type "ST"
= subject to
Type "(randvoorwaarde in x-en)"
net zo veel als je er hebt
Type "END"
Type "INTE X.."
net zo veel als je er hebt
Bij andere software mogelijk iets anders
19


Inkopen onder voorwaarden (conditioneel inkopen)
De Provincie Gelderland wil wegeninspectie aanbesteden. De opdracht is verdeeld
in drie percelen:
­ Perceel 1: Veluwe
­ Perceel 2: Betuwe
­ Perceel 3: Achterhoek
Op de aanbesteding zijn drie offertes binnengekomen. In onderstaande tabel staan
de prijzen van de verschillende aanbieders:
Perceel 1
Perceel 2
Perceel 3
Aanbieder A
10.000
8.000
13.000
Aanbieder B
13.000
9.000
15.500
Aanbieder C
13.000
11.000
15.000
20


Inkopen onder voorwaarden (conditioneel inkopen)
De provincie selecteert op laagste totaalprijs
De provincie wil dat aanbieder C ten minste één perceel gegund krijgt
De provincie wil niet dat een aanbieder zowel perceel 1 als perceel 2 gegund krijgt
Opdracht
Formuleer het probleem
­ Bepaal eerst een geschikte notatie van de variabelen
­ Stel vervolgens de te optimaliseren functie op
­ Leg vervolgens de (zeven) randvoorwaarden op
Bepaal, rekening houdend met de randvoorwaarden, met behulp van LINDO de
meest voordelige wijze van toekenning
Onderzoek het effect van de verschillende randvoorwaarden op de consequenties
voor de aanbieders en de prijs
21


Inkopen onder voorwaarden (conditioneel inkopen)
Eerst de notatie
­ Xkl = 1 als leverancier k perceel l krijgt gegund
­ Xkl = 0 als leverancier k perceel l niet krijgt gegund
­ k is A, B en C en l zijn 1,2 of 3
Vervolgens de uitdrukking voor de kosten
­ K = 1000 * (10xA1 + 8xA2 + 13xA3 + 13xB1 + 9xB2 + 15,5xB3 + 13xC1 + 11xC2 +
15xC3)
­ De kosten moeten zo laag mogelijk, we moeten dus minimaliseren
Tot slot de randvoorwaarden. Alle percelen moeten eenmaal gegund
worden:
­ xA1 + xB1 + xC1 = 1
­ xA2 + xB2 + xC2 = 1
­ xA3 + xB3 + xC3 = 1
22


Inkopen onder voorwaarden (conditioneel inkopen)
De instelling wil dat aanbieder C ten minste één perceel gegund krijgt
­ xC1 + xC2 + xC3 >= 1
Niet perceel 1 en perceel 2 aan dezelfde aanbieder toekennen:
­ xA1 + xA2 <= 1
­ xB1 + xB2 <= 1
­ xC1 + xC2 <= 1
Denk er aan dat alle x als waarde 0 of 1 moeten hebben, dus maak
kl
gebruik van de integerfunctie
23


Inkopen onder voorwaarden (conditioneel inkopen)
In LINDO ziet dat er als volgt uit:
MIN 10xA1 + 8xA2 + 13xA3 + 13xB1 + 9xB2 + 15,5xB3 + 13xC1 + 11xC2 + 15xC3
ST
xA1 + xB1 + xC1 = 1
xA2 + xB2 + xC2 = 1
xA3 + xB3 + xC3 = 1
xC1 + xC2 + xC3 >= 1
xA1 + xA2 <= 1
xB1 + xB2 <= 1
xC1 + xC2 <= 1
END
INTE xkl
24


Inkopen onder voorwaarden (conditioneel inkopen)
Global optimal solution found.
Objective value: 34.00000
Extended solver steps: 0
Total solver iterations: 0
Variable Value Reduced Cost
XA1 1.000000 10.00000
XA2 0.000000 8.000000
XA3 0.000000 13.00000
XB1 0.000000 13.00000
XB2 1.000000 9.000000
XB3 0.000000 15.50000
XC1 0.000000 13.00000
XC2 0.000000 11.00000
XC3 1.000000 15.00000
25


Inkopen onder voorwaarden (conditioneel inkopen)
En nu gevoeligheidsanalyse door een restrictie te laten vervallen
MIN 10xA1 + 8xA2 + 13xA3 + 13xB1 + 9xB2 + 15,5xB3 + 13xC1 + 11xC2 + 15xC3
ST
xA1 + xB1 + xC1 = 1
xA2 + xB2 + xC2 = 1
xA3 + xB3 + xC3 = 1
(xC1 + xC2 + xC3 >= 1 vervalt)
xA1 + xA2 <= 1
xB1 + xB2 <= 1
xC1 + xC2 <= 1
END
INTE xkl
26


Inkopen onder voorwaarden (conditioneel inkopen)
Andere oplossing:
Global optimal solution found.
Objective value: 32.00000
Extended solver steps: 0
Total solver iterations: 0
Variable
Value
Reduced Cost
XA1 1.000000 10.00000 (was 1)
XA2 0.000000 8.000000
XA3 1.000000 13.00000
XB1 0.000000 13.00000
XB2 1.000000 9.000000 (was 1)
XB3 0.000000 15.50000
XC1 0.000000 13.00000
XC2 0.000000 11.00000
XC3 0.000000 15.00000 (was 1)
27


Inkopen onder voorwaarden (conditioneel inkopen)
En nu nog gevoeligheidsanalyse door een restrictie te laten vervallen
MIN 10xA1 + 8xA2 + 13xA3 + 13xB1 + 9xB2 + 15,5xB3 + 13xC1 + 11xC2 + 15xC3
ST
xA1 + xB1 + xC1 = 1
xA2 + xB2 + xC2 = 1
xA3 + xB3 + xC3 = 1
xC1 + xC2 + xC3 >= 1
(xA1 + xA2 <= 1
xB1 + xB2 <= 1
xC1 + xC2 <= 1 vervalt)
END
INTE xkl
28


Inkopen onder voorwaarden (conditioneel inkopen)
Andere oplossing:
Global optimal solution found.
Objective value: 33.00000
Extended solver steps: 0
Total solver iterations: 0
Variable
Value
Reduced Cost
XA1 1.000000 10.00000 (was 1)
XA2 1.000000 8.000000
XA3 0.000000 13.00000
XB1 0.000000 13.00000
XB2 0.000000 9.000000 (was 1)
XB3 0.000000 15.50000
XC1 0.000000 13.00000
XC2 0.000000 11.00000
XC3 1.000000 15.00000 (was 1)
29


Inkopen onder voorwaarden (conditioneel inkopen)
Gebruikte randvoorwaarden
Wie krijgt wat?
Kosten
Aanbieder A krijgt perceel 1
Aanbieder C een perceel
Aanbieder B krijgt perceel 2
34.000
Niet perceel 1 + 2 samen
Aanbieder C krijgt perceel 3
Aanbieder C een perceel
Aanbieder A krijgt percelen 1 en 2
33.000
Aanbieder C krijgt perceel 3
Niet perceel 1 + 2 samen
Aanbieder A krijgt percelen 1 en 3
32.000
Aanbieder B krijgt perceel 2
Geen randvoorwaarden
Aanbieder A krijgt percelen 1, 2 en 3
31.000
30


Inkopen onder voorwaarden (conditioneel inkopen)
Niet alleen de aanbestedende dienst kan randvoorwaarden (condities)
hebben, ook de leverancier kan conditionele aanbiedingen doen
­ Een bod op een perceel alleen maar gestand doen als een ander perceel ook
wordt gewonnen
­ Betere condities bieden naarmate hij meer percelen wint
­ Niet te veel percelen tegelijkertijd aan kunnen
­ Etc.
Voor dit soort situaties is ook speciale software op de markt (bijv Combine
net, Trade extensions)
­ Moet condities van leveranciers "vertalen" naar de situatie van de inkopende
partij
­ Zowel vertalingsoftware als (ingewikkelde) optimalisatie software
31


Micropercelen
Heel veel kleine (micro)percelen
Leveranciers geven prijs per microperceel
Heel veel prijzen
Kiezen van goedkoopste per microperceel niet zo moeilijk
Maar al bij één enkele voorwaarde (niet meer dan 10 winnende leveranciers) al
onmogelijk uit te rekenen
Kan wel simpel met IP/LP techniek
32


Micropercelen - voorbeelden
Gladheidsbestrijdingsdiensten
Maaien bermen
Uitleg aan de hand van tekeningen
Maar ook aanschaf verbruikartikelen (karton Unilever)
Of diensten als transport (Philips containers)
etc
33


Micropercelen
Voordelen:
Meer en juist ook kleinere leveranciers kunnen meedoen
Resulterende perceelindeling gecreëerd door markt
Per definitie betere condities ­ lagere prijs (ook oude oplossing
mogelijk)

Simpele gevoeligheidsanalyse op voorwaarden
34


Moraal
Inkopen wordt niet makkelijker, wel leuker
35