This function is used to allocate the available amount of a scarce resource to requesters based on the priority of those requests. It requires that the left hand side variable and request have the same final subscript and that pp have that subscript second last, and a ppriority subscript last. This function is a generalization of ALLOCATE BY PRIORITY and is described more completely in the Allocation section.
request must be a subscripted variable, and its final Subscript must match that of the left hand side. It represents the (satiation) quantity requested by different agents.
pp is the priority profile. It is used to define the shape of the curve that defines how much of the available amount a request receives under conditions of shortage. It must have as its final subscript a pprofile subscript as discussed in the Allocation section. All elements should be positvive. Priorities and widths should also be of the same order of magnitude.
avail is the total quantity available to fulfill all requests. If this exceeds total requests, all requests are filled, but none are overfilled.
IMPORTANT NOTEALLOCATE BY PRIORITY is sensitive to the order of subscripts! If you have more than one subscript range in the variables you are using, the request elements must be last on the left hand side and request, and second last on pp.
Note that the priorities and widths specified should all be of the same order of magnitude. For example, it does not make sense to have one priority be 20 and another 2e6 if width is 100.
ALLOCATE AVAILABLE can be used to return integer allocations by adding 10 to the shape specified in pp.
Units: | ALLOCATE AVAILABLE(units, dimensionless, units) --> units |
Example
branch : Boston,Dayton,Fresno
pprofile : ptype, ppriority, pwidth, pextra
demand[Branch] = 500,300,750
Units: Widget/Month
priority[Boston,pprofile] = 1,5,2,0
priority[Dayton,pprofile] = 1,7,4,0
priority[Fresno,pprofile] = 1,3,4,0
Units: Dmnl
Shipments[branch] = ALLOCATE AVAILABLE(demand[branch], |
priority[branch,ptype],supply available) |
Units: Widget/Month
Restrictions: ALLOCATE AVAILABLE must directly follow the equal sign.
Availability: DSS and Professional only.
See also: FIND MARKET PRICE, DEMAND AT PRICE, SUPPLY AT PRICE, Allocation
Sample model: ALLOCATE_AVAILABLE.mdl in FunctionExamples