// Copyright 2013 Alex Goussiatiner. All rights reserved. // Use of this source code is governed by a MIT // license that can be found in the LICENSE file. package main import ( "fmt" "godes" ) // the arrival and service are two random number generators for the uniform distribution var arrival *godes.UniformDistr = godes.NewUniformDistr() var service *godes.UniformDistr = godes.NewUniformDistr() // true when waiter should act var waitersSwt *godes.BooleanControl = godes.NewBooleanControl() // FIFO Queue for the arrived var visitorArrivalQueue *godes.FIFOQueue = godes.NewFIFOQueue("arrivalQueue") // the Visitor is a Passive Object type Visitor struct { id int } // the Waiter is a Runner type Waiter struct { *godes.Runner id int }
import ( "fmt" "godes" ) const NEW_CUSTOMERS = 5 // Total number of customers const INTERVAL_CUSTOMERS = 12.00 // Generate new customers roughly every x minites const SERVICE_TIME = 12.0 const MIN_PATIENCE = 1 // Min. customer patience const MAX_PATIENCE = 3 // Max. customer patience // random generator for the arrival interval - expovariate distribution var arrivalGen *godes.ExpDistr = godes.NewExpDistr() // random generator for the patience time time - uniform distribution var patienceGen *godes.UniformDistr = godes.NewUniformDistr() // random generator for the service time - expovariate distribution var serviceGen *godes.ExpDistr = godes.NewExpDistr() // true when Counter var counterAvailable *godes.BooleanControl = godes.NewBooleanControl() type Customer struct { *godes.Runner name int } func (customer *Customer) Run() { arrivalTime := godes.GetSystemTime()
// Copyright 2013 Alex Goussiatiner. All rights reserved. // Use of this source code is governed by a MIT // license that can be found in the LICENSE file. package main import ( "fmt" "godes" ) // the arrival and service are two random number generators for the uniform distribution var arrival *godes.UniformDistr = godes.NewUniformDistr() // the Visitor is a Runner // any type of the Runner should be defined as struct // with the *godes.Runner as anonimous field type Visitor struct { *godes.Runner number int } var visitorsCount int = 0 func (vst *Visitor) Run() { // Any runner should have the Run method fmt.Printf(" %-6.3f \t Visitor # %v arrives \n", godes.GetSystemTime(), vst.number) } func main() { var shutdown_time float64 = 8 * 60 godes.Run() for {