
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