Skip to content
Snippets Groups Projects
Commit 6dada937 authored by tbavl's avatar tbavl
Browse files

Bavlsik Viskit Assignment (Working)

parent c369da2a
No related branches found
No related tags found
No related merge requests found
Showing
with 542 additions and 0 deletions
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<SimkitAssembly name="ArrivalProcessOpenDis7Assembly" version="1.0" package="dis7" xsi:noNamespaceSchemaLocation="http://diana.nps.edu/Simkit/assembly.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<SimEntity name="aPOpenDis7" type="dis7.ArrivalProcessOpenDis7" description="">
<TerminalParameter name="address" value="" type="java.lang.String"/>
<TerminalParameter name="port" value="-1" type="int"/>
<FactoryParameter factory="simkit.random.RandomVariateFactory" type="simkit.random.RandomVariate">
<TerminalParameter name="" value="Exponential" type="String"/>
<TerminalParameter name="" value="1.7" type="Object..."/>
</FactoryParameter>
<Coordinate x="220.0" y="210.0"/>
</SimEntity>
<PropertyChangeListener name="numArrivalsStat" type="simkit.stat.SimpleStatsTimeVarying" mode="replicationStat" meanStatistics="false" countStatistics="true" description="">
<TerminalParameter name="p[0] : " value="N" type="java.lang.String"/>
<Coordinate x="220.0" y="330.0"/>
</PropertyChangeListener>
<PropertyChangeListener name="numEntityCreationsStat" type="simkit.stat.SimpleStatsTimeVarying" mode="replicationStat" meanStatistics="false" countStatistics="true" description="">
<TerminalParameter name="p[0] : " value="C" type="java.lang.String"/>
<Coordinate x="220.0" y="80.0"/>
</PropertyChangeListener>
<PropertyChangeListener name="numEntityRemovalsStat" type="simkit.stat.SimpleStatsTimeVarying" mode="replicationStat" meanStatistics="false" countStatistics="true" description="">
<TerminalParameter name="p[0] : " value="R" type="java.lang.String"/>
<Coordinate x="380.0" y="210.0"/>
</PropertyChangeListener>
<PropertyChangeListenerConnection property="N" listener="numArrivalsStat" source="aPOpenDis7" description=""/>
<PropertyChangeListenerConnection property="C" listener="numEntityCreationsStat" source="aPOpenDis7" description=""/>
<PropertyChangeListenerConnection property="R" listener="numEntityRemovalsStat" source="aPOpenDis7" description=""/>
<Output entity="aPOpenDis7"/>
<Schedule stopTime="100.0" verbose="false" saveReplicationData="false"/>
</SimkitAssembly>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<SimkitAssembly name="SimpleServerDis7Assembly" version="1.0" package="dis7" xsi:noNamespaceSchemaLocation="http://diana.nps.edu/Simkit/assembly.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<SimEntity name="arrivalProcessOpenDis7" type="SimkitOpenDis7Examples.ArrivalProcessOpenDis7" description="">
<FactoryParameter factory="simkit.random.RandomVariateFactory" type="simkit.random.RandomVariate">
<TerminalParameter name="" value="Uniform" type="String"/>
<TerminalParameter name="" value="0.9, 2.2" type="Object..."/>
</FactoryParameter>
<Coordinate x="90.0" y="200.0"/>
</SimEntity>
<SimEntity name="simpleServer" type="SimkitOpenDis7Examples.SimpleServer" description="">
<TerminalParameter name="p[0] : " value="1" type="int"/>
<FactoryParameter factory="simkit.random.RandomVariateFactory" type="simkit.random.RandomVariate">
<TerminalParameter name="" value="Gamma" type="String"/>
<TerminalParameter name="" value="1.7, 1.8" type="Object..."/>
</FactoryParameter>
<Coordinate x="310.0" y="200.0"/>
</SimEntity>
<PropertyChangeListener name="numInQueueStat" type="simkit.stat.SimpleStatsTimeVarying" mode="replicationStat" meanStatistics="true" countStatistics="false" description="">
<TerminalParameter name="p[0] : " value="numberInQueue" type="java.lang.String"/>
<Coordinate x="310.0" y="80.0"/>
</PropertyChangeListener>
<PropertyChangeListener name="numAvailServersStat" type="simkit.stat.SimpleStatsTimeVarying" mode="replicationStat" meanStatistics="true" countStatistics="false" description="">
<TerminalParameter name="p[0] : " value="numberAvailableServers" type="java.lang.String"/>
<Coordinate x="510.0" y="200.0"/>
</PropertyChangeListener>
<PropertyChangeListener name="numArrivalsStat" type="simkit.stat.SimpleStatsTimeVarying" mode="replicationStat" meanStatistics="false" countStatistics="true" description="">
<TerminalParameter name="p[0] : " value="numberArrivals" type="java.lang.String"/>
<Coordinate x="90.0" y="80.0"/>
</PropertyChangeListener>
<PropertyChangeListener name="numServedStat" type="simkit.stat.SimpleStatsTimeVarying" mode="replicationStat" meanStatistics="false" countStatistics="true" description="">
<TerminalParameter name="p[0] : " value="numberServed" type="java.lang.String"/>
<Coordinate x="310.0" y="350.0"/>
</PropertyChangeListener>
<SimEventListenerConnection listener="simpleServer" source="arrivalProcessOpenDis7"/>
<PropertyChangeListenerConnection property="numberInQueue" listener="numInQueueStat" source="simpleServer" description=""/>
<PropertyChangeListenerConnection property="numberAvailableServers" listener="numAvailServersStat" source="simpleServer" description=""/>
<PropertyChangeListenerConnection property="numberArrivals" listener="numArrivalsStat" source="arrivalProcessOpenDis7" description=""/>
<PropertyChangeListenerConnection property="numberServed" listener="numServedStat" source="simpleServer" description=""/>
<Output entity="arrivalProcessOpenDis7"/>
<Output entity="simpleServer"/>
<Schedule stopTime="100000.0" verbose="false" saveReplicationData="false"/>
</SimkitAssembly>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<SimEntity name="ArrivalProcessOpenDis7" package="dis7" version="1.0" author="terry" extend="SimkitOpenDis7Examples.run.OpenDisHelper" xsi:noNamespaceSchemaLocation="http://diana.nps.edu/Simkit/simkit.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Parameter name="address" type="java.lang.String">
<Comment>An other than default network address</Comment>
</Parameter>
<Parameter name="port" type="int">
<Comment>An other than default network port</Comment>
</Parameter>
<Parameter name="tA" type="simkit.random.RandomVariate">
<Comment>Inter arrival time</Comment>
</Parameter>
<StateVariable name="N" type="int">
<Comment>Number of arrivals</Comment>
</StateVariable>
<StateVariable name="C" type="int">
<Comment>Number of entity creations</Comment>
</StateVariable>
<StateVariable name="R" type="int">
<Comment>Number of entity removals</Comment>
</StateVariable>
<Event name="Run" description="This event is fired first to facilitate initialization of all simulation state variables">
<Comment>Initialize all state variables</Comment>
<StateTransition state="N">
<Assignment value="0"/>
</StateTransition>
<StateTransition state="C">
<Assignment value="1"/>
</StateTransition>
<StateTransition state="R">
<Assignment value="0"/>
</StateTransition>
<Schedule delay="tA.generate()" event="Arrival" priority="DEFAULT"/>
<Code></Code>
<Coordinate x="60.0" y="60.0"/>
</Event>
<Event name="Arrival">
<Comment>Tallys the number of arrivals and schedules future arrival events with time tA</Comment>
<StateTransition state="N">
<Assignment value="N + 1"/>
</StateTransition>
<Schedule delay="tA.generate()" event="Arrival" priority="DEFAULT"/>
<Code>int everyTen = 10;
int oldC = C;
int oldR = R;
if ((N % everyTen) == 0) {
disChannel.removeEntity(entityStatePdu_1.getEntityID());
firePropertyChange("R", oldR, R+1);
} else {
disChannel.addEntity(entityStatePdu_1.getEntityID());
firePropertyChange("C", oldC, C+1);
}</Code>
<Coordinate x="270.0" y="50.0"/>
</Event>
<Code></Code>
</SimEntity>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<SimEntity name="SimpleServer" package="dis7" version="0.1" extend="SimEntityBase" xsi:noNamespaceSchemaLocation="http://diana.nps.edu/Simkit/simkit.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Parameter name="serviceTime" type="simkit.random.RandomVariate"/>
<Parameter name="totalNumberServers" type="int"/>
<StateVariable name="numberInQueue" type="int"/>
<StateVariable name="numberAvailableServers" type="int"/>
<Event name="Run">
<StateTransition state="numberInQueue">
<Assignment value="0"/>
</StateTransition>
<StateTransition state="numberAvailableServers">
<Assignment value="totalNumberServers"/>
</StateTransition>
<Coordinate x="20.0" y="30.0"/>
</Event>
<Event name="Arrival">
<StateTransition state="numberInQueue">
<Assignment value="numberInQueue + 1"/>
</StateTransition>
<Schedule delay="0.0" event="StartService" condition="numberAvailableServers &gt; 0" priority="DEFAULT">
<Comment></Comment>
<EdgeParameter value="numberAvailableServers"/>
</Schedule>
<Coordinate x="20.0" y="130.0"/>
</Event>
<Event name="StartService">
<Comment></Comment>
<Argument name="arg_0" type="int"/>
<StateTransition state="numberInQueue">
<Assignment value="numberInQueue - 1"/>
</StateTransition>
<StateTransition state="numberAvailableServers">
<Assignment value="numberAvailableServers - 1"/>
</StateTransition>
<Schedule delay="serviceTime.generate()" event="EndService" priority="DEFAULT"/>
<Code>System.out.println("numberAvailableServers"+arg_0);</Code>
<Coordinate x="160.0" y="130.0"/>
</Event>
<Event name="EndService">
<StateTransition state="numberAvailableServers">
<Assignment value="numberAvailableServers + 1"/>
</StateTransition>
<Schedule delay="0.0" event="StartService" condition="numberInQueue &gt; 0" priority="HIGH"/>
<Coordinate x="330.0" y="130.0"/>
</Event>
</SimEntity>
package dis7;
// Standard library imports
import java.util.*;
// Application specific imports
import simkit.*;
import simkit.random.*;
public class ArrivalProcessOpenDis7 extends SimkitOpenDis7Examples.run.OpenDisHelper {
/* Simulation Parameters */
/* inherited parameter java.lang.String address */
/* inherited parameter int port */
/** Inter arrival time */
private simkit.random.RandomVariate tA;
/* Simulation State Variables */
/** Number of arrivals */
protected int N;
/** Number of entity creations */
protected int C;
/** Number of entity removals */
protected int R;
@viskit.ParameterMap (
names = {"address",
"port",
"tA"},
types = {"java.lang.String",
"int",
"simkit.random.RandomVariate"}
)
public ArrivalProcessOpenDis7(java.lang.String address,
int port,
simkit.random.RandomVariate tA) {
super(address, port);
setTA(tA);
}
@Override
public void reset() {
super.reset();
N = 0;
C = 1;
R = 0;
}
/** Bootstraps the first simulation event */
public void doRun() {
firePropertyChange("N", getN());
firePropertyChange("C", getC());
firePropertyChange("R", getR());
waitDelay("Arrival", tA.generate(), Priority.DEFAULT);
}
public void doArrival() {
/* Code insertion for Event Arrival */
int everyTen = 10;
int oldC = C;
int oldR = R;
if ((N % everyTen) == 0) {
disChannel.removeEntity(entityStatePdu_1.getEntityID());
firePropertyChange("R", oldR, R+1);
} else {
disChannel.addEntity(entityStatePdu_1.getEntityID());
firePropertyChange("C", oldC, C+1);
}
/* End Code insertion */
/* StateTransition for N */
int _old_N = getN();
N = N + 1;
firePropertyChange("N", _old_N, getN());
waitDelay("Arrival", tA.generate(), Priority.DEFAULT);
}
public final void setTA(simkit.random.RandomVariate tA) {
this.tA = tA;
}
public simkit.random.RandomVariate getTA() {
return tA;
}
public int getN() {
return N;
}
public int getC() {
return C;
}
public int getR() {
return R;
}
/* Inserted code for ArrivalProcessOpenDis7 */
/* End inserted code */
}
package dis7;
// Standard library imports
import java.util.*;
// Application specific imports
import simkit.*;
import simkit.random.*;
public class SimpleServer extends SimEntityBase {
/* Simulation Parameters */
private simkit.random.RandomVariate serviceTime;
private int totalNumberServers;
/* Simulation State Variables */
protected int numberInQueue;
protected int numberAvailableServers;
@viskit.ParameterMap (
names = {"serviceTime",
"totalNumberServers"},
types = {"simkit.random.RandomVariate",
"int"}
)
/** Creates a new default instance of SimpleServer */
public SimpleServer() {
}
public SimpleServer(simkit.random.RandomVariate serviceTime,
int totalNumberServers) {
setServiceTime(serviceTime);
setTotalNumberServers(totalNumberServers);
}
@Override
public void reset() {
super.reset();
numberInQueue = 0;
numberAvailableServers = totalNumberServers;
}
/** Bootstraps the first simulation event */
public void doRun() {
firePropertyChange("numberInQueue", getNumberInQueue());
firePropertyChange("numberAvailableServers", getNumberAvailableServers());
}
public void doArrival() {
/* StateTransition for numberInQueue */
int _old_NumberInQueue = getNumberInQueue();
numberInQueue = numberInQueue + 1;
firePropertyChange("numberInQueue", _old_NumberInQueue, getNumberInQueue());
if (numberAvailableServers > 0) {
waitDelay("StartService", 0.0, Priority.DEFAULT, (Object) numberAvailableServers);
}
}
public void doStartService(int arg_0) {
/* Code insertion for Event StartService */
System.out.println("numberAvailableServers"+arg_0);
/* End Code insertion */
/* StateTransition for numberInQueue */
int _old_NumberInQueue = getNumberInQueue();
numberInQueue = numberInQueue - 1;
firePropertyChange("numberInQueue", _old_NumberInQueue, getNumberInQueue());
/* StateTransition for numberAvailableServers */
int _old_NumberAvailableServers = getNumberAvailableServers();
numberAvailableServers = numberAvailableServers - 1;
firePropertyChange("numberAvailableServers", _old_NumberAvailableServers, getNumberAvailableServers());
waitDelay("EndService", serviceTime.generate(), Priority.DEFAULT);
}
public void doEndService() {
/* StateTransition for numberAvailableServers */
int _old_NumberAvailableServers = getNumberAvailableServers();
numberAvailableServers = numberAvailableServers + 1;
firePropertyChange("numberAvailableServers", _old_NumberAvailableServers, getNumberAvailableServers());
if (numberInQueue > 0) {
waitDelay("StartService", 0.0, Priority.HIGH);
}
}
public final void setServiceTime(simkit.random.RandomVariate serviceTime) {
this.serviceTime = serviceTime;
}
public simkit.random.RandomVariate getServiceTime() {
return serviceTime;
}
public final void setTotalNumberServers(int totalNumberServers) {
this.totalNumberServers = totalNumberServers;
}
public int getTotalNumberServers() {
return totalNumberServers;
}
public int getNumberInQueue() {
return numberInQueue;
}
public int getNumberAvailableServers() {
return numberAvailableServers;
}
@Override
public String toString() {
return getName();
}
}
package dis7;
public class SimpleServerDis7Assembly extends viskit.assembly.ViskitAssembly {
public SimpleServerDis7Assembly() {
super();
setStopTime(100000.0);
setVerbose(false);
setNumberReplications(1);
setPrintReplicationReports(true);
setPrintSummaryReport(true);
setSaveReplicationData(false);
}
@Override
protected void createSimEntities() {
addSimEntity( "arrivalProcessOpenDis7",
new SimkitOpenDis7Examples.ArrivalProcessOpenDis7(
simkit.random.RandomVariateFactory.getInstance(
"Uniform",
0.9, 2.2
)
)
);
addSimEntity( "simpleServer",
new SimkitOpenDis7Examples.SimpleServer(
1,
simkit.random.RandomVariateFactory.getInstance(
"Gamma",
1.7, 1.8
)
)
);
addSimEventListenerConnection("simpleServer", "arrivalProcessOpenDis7");
super.createSimEntities();
}
@Override
public void createPropertyChangeListeners() {
addPropertyChangeListenerConnection("numInQueueStat", "numberInQueue", "simpleServer");
addPropertyChangeListenerConnection("numAvailServersStat", "numberAvailableServers", "simpleServer");
addPropertyChangeListenerConnection("numArrivalsStat", "numberArrivals", "arrivalProcessOpenDis7");
addPropertyChangeListenerConnection("numServedStat", "numberServed", "simpleServer");
super.createPropertyChangeListeners();
}
@Override
public void createReplicationStats() {
addReplicationStats("numInQueueStat",
new simkit.stat.SimpleStatsTimeVarying(
"numberInQueue"
)
);
addReplicationStatsListenerConnection("numInQueueStat", "numberInQueue", "simpleServer");
addReplicationStats("numAvailServersStat",
new simkit.stat.SimpleStatsTimeVarying(
"numberAvailableServers"
)
);
addReplicationStatsListenerConnection("numAvailServersStat", "numberAvailableServers", "simpleServer");
addReplicationStats("numArrivalsStat",
new simkit.stat.SimpleStatsTimeVarying(
"numberArrivals"
)
);
addReplicationStatsListenerConnection("numArrivalsStat", "numberArrivals", "arrivalProcessOpenDis7");
addReplicationStats("numServedStat",
new simkit.stat.SimpleStatsTimeVarying(
"numberServed"
)
);
addReplicationStatsListenerConnection("numServedStat", "numberServed", "simpleServer");
super.createReplicationStats();
}
@Override
public void createDesignPointStats() {
super.createDesignPointStats();
}
@Override
public void printInfo() {
System.out.println();
System.out.println("Entity Details");
System.out.println("--------------");
System.out.println(getSimEntityByName("arrivalProcessOpenDis7"));
System.out.println(getSimEntityByName("simpleServer"));
System.out.println("--------------");
}
public static void main(String[] args) {
SimpleServerDis7Assembly simpleServerDis7Assembly = new SimpleServerDis7Assembly();
new Thread(simpleServerDis7Assembly).start();
}
}
<?xml version="1.0" encoding="UTF-8"?>
<ViskitProject name="BavlsikViskitOpenDis7">
<AnalystReports name="AnalystReports" />
<AssembliesDirectory name="Assemblies" />
<EventGraphsDirectory name="EventGraphs" />
<BuildDirectory name="build">
<ClassesDirectory name="classes" />
<SourceDirectory name="src" />
</BuildDirectory>
<DistDirectory name="dist" />
<LibDirectory name="lib" />
<Project name="BavlsikViskitOpenDis7" />
<Cached>
<EventGraphs xml="C:/Users/tbavl/Documents/NetworkedGraphicsMV3500/assignments/src/MV3500Cohort2024JulySeptember/projects/Bavlsik/BavlsikViskitOpenDis7/EventGraphs/dis7/SimpleServer.xml" />
<EventGraphs class="C:/Users/tbavl/Documents/NetworkedGraphicsMV3500/assignments/src/MV3500Cohort2024JulySeptember/projects/Bavlsik/BavlsikViskitOpenDis7/build/classes/dis7/SimpleServer.class" digest="-679a97428288e5d644ede38d9ac1dfaa" xml="C:/Users/tbavl/Documents/NetworkedGraphicsMV3500/assignments/src/MV3500Cohort2024JulySeptember/projects/Bavlsik/BavlsikViskitOpenDis7/EventGraphs/dis7/SimpleServer.xml" />
</Cached>
</ViskitProject>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment