TSAP Optimization

Generic model customized to handle time-varied requirements

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,-178.25 625.94,-178.25 625.94,4 -4,4 c0_Service abstract Service 11.00 c0_Requirements abstract Requirements 11.00 c0_Service->c0_Requirements 386.09,-121.65 383.35,-115.67 386.07,-119.26 386.05,-115.65 386.05,-115.65 386.05,-115.65 386.07,-119.26 388.75,-115.64 386.09,-121.65 c0_Machine abstract Machine 11.00 c0_Service->c0_Machine machine transparent c0_Machine->c0_Service services transparent c0_Resources abstract Resources 11.00 c0_Machine->c0_Resources 153.41,-158.86 149.09,-153.9 152.72,-156.57 151.67,-153.11 151.67,-153.11 151.67,-153.11 152.72,-156.57 154.26,-152.33 153.41,-158.86 c0_Machine->c0_Resources 156.67,-158.84 153.12,-153.3 156.32,-156.47 155.79,-152.9 155.79,-152.9 155.79,-152.9 156.32,-156.47 158.46,-152.51 156.67,-158.84 c0_Machine->c0_Resources 159.94,-158.83 157.24,-152.83 159.94,-156.44 159.94,-152.83 159.94,-152.83 159.94,-152.83 159.94,-156.44 162.64,-152.83 159.94,-158.83 c0_Machine->c0_Resources 163.21,-158.84 161.42,-152.51 163.56,-156.47 164.09,-152.9 164.09,-152.9 164.09,-152.9 163.56,-156.47 166.76,-153.3 163.21,-158.84 c0_Machine->c0_Resources 166.47,-158.86 165.62,-152.33 167.16,-156.57 168.21,-153.11 168.21,-153.11 168.21,-153.11 167.16,-156.57 170.79,-153.9 166.47,-158.86 c0_Task Task 11.00 c0_GoogleCA GoogleCA : Machine 11.00 c0_GoogleCA->c0_Machine 132.03,-83.35 142.6,-83.99 134.73,-76.9 132.03,-83.35 c0_GoogleNY GoogleNY : Machine 11.00 c0_GoogleNY->c0_Machine 156.44,-73.15 159.94,-83.15 163.44,-73.15 156.44,-73.15 c0_GoogleTX GoogleTX : Machine 11.00 c0_GoogleTX->c0_Machine 185.15,-76.9 177.28,-83.99 187.85,-83.35 185.15,-76.9 c0_MailService MailService : Service 11.00 c0_MailService->c0_Service 332.81,-37.02 343.39,-36.54 334.82,-30.31 332.81,-37.02 c0_SearchService SearchService : Service 11.00 c0_SearchService->c0_Service 363.44,-25.63 366.94,-35.63 370.44,-25.63 363.44,-25.63 c0_CalendarService CalendarService : Service 11.00 c0_CalendarService->c0_Service
Module Statistics: | All clafers: 26 | Abstract: 4 | Concrete: 22 | Reference: 8 | Constraints: 27 | 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
morning_cpu -> integer
midday_cpu -> integer
evening_cpu -> integer
night_cpu -> integer
abstract Resources
cpu -> integer

Machine prototype

abstract Machine
services -> Service *
[ this.machine = Machine ]
isFree ?
[ isFree <=> no services ]
limits : Resources
morning_utilization : Resources
/* constraints for limiting total requirements */
[ cpu < limits.cpu ]
midday_utilization : Resources
[ cpu < limits.cpu ]
evening_utilization : Resources
[ cpu < limits.cpu ]
night_utilization : Resources
[ cpu < limits.cpu ]

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

Optimization goals and constraints

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

Particular data (machines and services)

Machines

GoogleCA : Machine// total number of machines free
[ limits.cpu = 10 ]
GoogleNY : Machine
[ limits.cpu = 16 ]
GoogleTX : Machine
[ limits.cpu = 14 ]

Services