ISAP Optimization

Generic model

Model overview

var gwr=document.getElementById('graphWithRefs0'); gwr.style.display='block'; gwr.scrollLeft=this.scrollLeft; this.style.display='none'; var gwr=document.getElementById('graphWithRefs0'); gwr.style.display='block'; gwr.scrollLeft=this.scrollLeft; this.style.display='none'; -4,4 -4,-287.3 534.94,-287.3 534.94,4 -4,4 c0_Service abstract Service 11.00 c0_Requirements abstract Requirements 11.00 c0_Service->c0_Requirements 355.55,-274.74 349.45,-277.2 353.16,-274.64 349.55,-274.5 349.55,-274.5 349.55,-274.5 353.16,-274.64 349.66,-271.8 355.55,-274.74 c0_Machine abstract Machine 11.00 c0_Service->c0_Machine machine transparent c0_Machine->c0_Service services transparent c0_Resources abstract Resources : Requirements 11.00 c0_Machine->c0_Resources 410.18,-230.6 407.03,-224.83 410,-228.22 409.72,-224.62 409.72,-224.62 409.72,-224.62 410,-228.22 412.41,-224.41 410.18,-230.6 c0_Machine->c0_Resources 413.7,-230.6 411.47,-224.41 413.88,-228.22 414.16,-224.62 414.16,-224.62 414.16,-224.62 413.88,-228.22 416.85,-224.83 413.7,-230.6 c0_Resources->c0_Requirements 408.44,-257.13 411.94,-267.13 415.44,-257.13 408.44,-257.13 c0_Task Task 11.00 c0_InterferenceData abstract InterferenceData 11.00 c0_MachineISAP abstract MachineISAP : Machine 11.00 c0_MachineISAP->c0_Machine 412.32,-157.7 413.88,-168.18 419.19,-159.01 412.32,-157.7 c0_ServiceISAP abstract ServiceISAP : Service 11.00 c0_MachineISAP->c0_ServiceISAP interferenceSensitiveServices transparent c0_ServiceISAP->c0_Service 181.59,-122.71 192.13,-121.66 183.24,-115.91 181.59,-122.71 c0_ServiceISAP->c0_InterferenceData 74.94,-169.43 72.24,-163.43 74.94,-167.04 74.94,-163.43 74.94,-163.43 74.94,-163.43 74.94,-167.04 77.64,-163.43 74.94,-169.43 c0_ServiceISAP->c0_MachineISAP machineISAP transparent c0_GoogleCA GoogleCA : MachineISAP 11.00 c0_GoogleCA->c0_MachineISAP 236.82,-37.41 247.39,-36.58 238.61,-30.65 236.82,-37.41 c0_GoogleNY GoogleNY : MachineISAP 11.00 c0_GoogleNY->c0_MachineISAP 270.44,-25.63 273.94,-35.63 277.44,-25.63 270.44,-25.63 c0_GoogleTX GoogleTX : MachineISAP 11.00 c0_GoogleTX->c0_MachineISAP 309.07,-30.63 300.31,-36.58 310.87,-37.39 309.07,-30.63 c0_MailService MailService : ServiceISAP 11.00 c0_MailService->c0_ServiceISAP 161.47,-81.08 151.71,-85.22 161.92,-88.07 161.47,-81.08 c0_SearchService SearchService : ServiceISAP 11.00 c0_SearchService->c0_ServiceISAP 71.44,-73.15 74.94,-83.15 78.44,-73.15 71.44,-73.15 c0_CalendarService CalendarService : Service 11.00 c0_CalendarService->c0_Service 217.44,-110.68 220.94,-120.68 224.44,-110.68 217.44,-110.68 c0_DriveService DriveService : Service 11.00 c0_DriveService->c0_Service
Module Statistics: | All clafers: 30 | Abstract: 7 | Concrete: 23 | Reference: 10 | Constraints: 22 | Goals: 1 | Global scope: 1..* | Can skip name resolver: no |

Module Downloads: | [.cfr] | [.html] |


Service prototype

abstract Service
requirements : Requirements// resources required by a service
machine -> Machine// machine the service is allocated to
[ this in machine.services ]// inverse relationship constraint

Requirements and Resources prototypes

abstract Requirements
cpu -> integer
abstract Resources : Requirements

Machine prototype

abstract Machine
services -> Service *
[ this.machine = Machine ]
isFree ?
[ isFree <=> no services ]
limits : Resources
utilization : Resources
[ cpu < limits.cpu ]

A machine is free when no services are allocated. Utilization of the machine must satisfy limits.

Optimization goals and constraints

We want to maximize the number of free machines.

Task
total_free -> integer = # Machine.isFree
<<max Task.total_free>>

ISAP problem specifics

abstract InterferenceData
memoryPressure ->> integer
memorySensitivity ->> integer
abstract MachineISAP : Machine
interferenceSensitiveServices -> ServiceISAP *
abstract ServiceISAP : Service
interferenceData : InterferenceData
machineISAP -> MachineISAP
[ this = machine ]
memoryPressureToThisService -> integer = totalPressure - interferenceData.memoryPressure
// typecasting the machine to MachineISAP

Particular data (machines and services)

Machines

GoogleCA : MachineISAP
[ limits.cpu = 10 ]
GoogleNY : MachineISAP
[ limits.cpu = 16 ]// constraint:
GoogleTX : MachineISAP
[ limits.cpu = 14 ]

Services

CalendarService : Service
[ requirements.cpu = 1 ]
DriveService : Service
[ requirements.cpu = 2 ]