Voor het modelleren van een optimaliseringsprobleem zit ik een beestje vast.
Ik wil de kosten minimaliseren van het vervoer dat bvb. na een aardbeving noodgoederen moet brengen. De staat van de wegen speelt hier dus mee.
Punt één is dus een pad vinden voor elke stad (100 steden, inclusief centrums) naar elk hulpcentrum (10 centrums).
Hier heb ik geen probleem mee.
Elke weg heeft echter 3 "upgrading levels", met hieraan elk een transportkost geassocieerd. Level 3, het standaard level, kost niets. Level 2 kost meer, hieraan is dan ook een lagere transportkost verbonden. Level 1 is het duurst om toe te passen, maar heeft een nog lagere transportkost.
De transportkosten en upgrading kosten zijn natuurlijk verschillend voor de verschillende arcs tussen steden en/of centrum, deze gegevens heb ik in een dataset. Een voorbeeldje:
ARCS FROM TO CAPACITY COPIES COSTS
PRICES
0 0 14 1000.0 3 33.33 50 100 97.15 73.1 0
There are 100 nodes, 10 of which are centres. For each of the arcs there is a capacity given and two upgrading levels with upgrading costs and travel costs. For example, the data of arc 0 from node 0 to 14 can be interpreted as follows: the arc capacity is 1000. There are three possible levels for this arc. The cost per unit of flow over the arc is 33 when it is its best level and 100 when it is at level 3. The cost of using the arc (regardless the amount of flow) is 97.15 for the best possible level and 0 for the worst (which corresponds to the current status)
Ik dacht de doelfunctie als volgt voor te stellen:
min [somteken voor i,j][somteken voor t] van t(l,i,j)*x(i,j)
waarbij x(i,j) de flow is door boog (i,j) (van stad/centrum) i tot j
en waarbij l het upgrading level is.
Probleem hierbij lijkt me dan dat ik ALLE upgrading costs met elkaar optel, terwijl er net maar 1 level van toepassing kan zijn.
Dan dacht ik aan een dummy-variabele (upgrading level 1,2 of 3), maar dit lijkt me ook niet mogelijk aangezien de upgrading/transport kosten voor bvb verbinding (i=1,j=2) verschillen van deze voor bvb verbinding (3,15).
Iemand een idee? Alvast bedankt!