TSAP Optimization

Generic model customized to handle time-varied requirements

Model overview

c0_Service abstract Service c0_Requirements abstract Requirements c0_Service->c0_Requirements c0_Machine abstract Machine c0_Service->c0_Machine machine c0_Machine->c0_Service services c0_Resources abstract Resources c0_Machine->c0_Resources c0_Machine->c0_Resources c0_Machine->c0_Resources c0_Machine->c0_Resources c0_Machine->c0_Resources c0_Task Task c0_GoogleCA GoogleCA : Machine c0_GoogleCA->c0_Machine c0_GoogleNY GoogleNY : Machine c0_GoogleNY->c0_Machine c0_GoogleTX GoogleTX : Machine c0_GoogleTX->c0_Machine c0_MailService MailService : Service c0_MailService->c0_Service c0_SearchService SearchService : Service c0_SearchService->c0_Service c0_CalendarService CalendarService : Service 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