Class NetworkModel

java.lang.Object
edu.cnu.mdi.sim.demo.network.NetworkModel

public final class NetworkModel extends Object
World-coordinate network model for the decluttering demo.

All coordinates are normalized to the unit square:

  • x in [0,1]
  • y in [0,1]

Servers are stored first, followed by clients. Every client connects to exactly one server via an NetworkModel.Edge.

  • Field Details

    • servers

      public final List<Node> servers
      Nodes (servers, clients, printers).
    • clients

      public final List<Node> clients
    • printers

      public final List<Node> printers
    • nodes

      public final List<Node> nodes
    • edges

      public final List<NetworkModel.Edge> edges
      Each client has exactly one edge to a server.
    • serverCount

      public final int serverCount
      Number of servers.
    • clientCount

      public final int clientCount
      Number of clients.
    • printerCount

      public final int printerCount
      Number of printers.
  • Method Details

    • random

      public static NetworkModel random(int serverCount, int clientCount, int printerCount, Random rng)
      Create a random world-based network model in the unit square.

      Servers are placed first, then clients, then printers. Every client is assigned to exactly one randomly chosen server via an NetworkModel.Edge. Each printer is assigned to between 1 and 4 clients (capped at clientCount to prevent an infinite loop when the client pool is very small). All assignments are unique per printer.

      Parameters:
      serverCount - number of servers; must be ≥ 4
      clientCount - number of clients; must be ≥ 6
      printerCount - number of printers; must be ≥ 0
      rng - random number generator; must not be null
      Returns:
      a freshly constructed, randomized NetworkModel
      Throws:
      IllegalArgumentException - if any count constraint is violated or rng is null