func main() { for runs := 0; runs < 5; runs++ { for i := 0; i < 2; i++ { godes.AddRunner(&Waiter{&godes.Runner{}, i}) } godes.Run() for { visitorArrivalQueue.Place(Visitor{visitorsCount}) waitersSwt.Set(true) godes.Advance(arrival.Get(0, 30)) visitorsCount++ if godes.GetSystemTime() > shutdown_time { break } } waitersSwt.Set(true) godes.WaitUntilDone() // waits for all the runners to finish the Run() fmt.Printf(" Run # %v %v \n", runs, visitorArrivalQueue) //clear after each run arrival.Clear() service.Clear() waitersSwt.Clear() visitorArrivalQueue.Clear() godes.Clear() } }
func main() { var m *Machine x := make(map[int]*Machine) for i := 0; i < NUM_MACHINES; i++ { m = &Machine{&godes.Runner{}, 0, i} godes.AddRunner(m) godes.AddRunner(&MachineRepair{&godes.Runner{}, m}) x[i] = m } repairManAvailableSwt.Set(true) godes.Run() godes.WaitUntilDone() //print results for i := 0; i < NUM_MACHINES; i++ { m = x[i] fmt.Printf(" Machine # %v %v \n", m.number, m.partsCount) } }
func main() { counterAvailable.Set(true) godes.Run() for i := 0; i < NEW_CUSTOMERS; i++ { godes.AddRunner(&Customer{&godes.Runner{}, i}) godes.Advance(arrivalGen.Get(1 / INTERVAL_CUSTOMERS)) } godes.WaitUntilDone() }
func main() { var shutdown_time float64 = 8 * 60 godes.Run() for { //godes.GetSystemTime() is the current simulation time if godes.GetSystemTime() < shutdown_time { //the function acivates the Runner godes.AddRunner(Visitor{&godes.Runner{}, visitorsCount}) godes.Advance(arrival.Get(0, 70)) visitorsCount++ } else { break } } godes.WaitUntilDone() // waits for all the runners to finish the Run() }
func main() { for i := 0; i < 2; i++ { godes.AddRunner(&Waiter{&godes.Runner{}, i}) } godes.Run() for { visitorArrivalQueue.Place(Visitor{visitorsCount}) fmt.Printf("%-6.3f \t Visitor %v arrives \n", godes.GetSystemTime(), visitorsCount) waitersSwt.Set(true) godes.Advance(arrival.Get(0, 30)) visitorsCount++ if godes.GetSystemTime() > shutdown_time { break } } waitersSwt.Set(true) godes.WaitUntilDone() // waits for all the runners to finish the Run() fmt.Printf("Average Waiting Time %6.3f \n", visitorArrivalQueue.GetAverageTime()) }