diff --git a/ws2012/CE/Folien/gms-02-NAE-col.pdf b/ws2012/CE/Folien/gms-02-NAE-col.pdf new file mode 100644 index 00000000..0497bbf3 Binary files /dev/null and b/ws2012/CE/Folien/gms-02-NAE-col.pdf differ diff --git a/ws2012/CE/Folien/gms-03-NAE-col.pdf b/ws2012/CE/Folien/gms-03-NAE-col.pdf new file mode 100644 index 00000000..1e2f9ab7 Binary files /dev/null and b/ws2012/CE/Folien/gms-03-NAE-col.pdf differ diff --git a/ws2012/CE/Folien/gms-04-NAE-col.pdf b/ws2012/CE/Folien/gms-04-NAE-col.pdf new file mode 100644 index 00000000..074be132 Binary files /dev/null and b/ws2012/CE/Folien/gms-04-NAE-col.pdf differ diff --git a/ws2012/CE/uebungen/0/EiCE_Uebung_00b.pdf b/ws2012/CE/uebungen/0/EiCE_Uebung_00b.pdf new file mode 100644 index 00000000..2821effd Binary files /dev/null and b/ws2012/CE/uebungen/0/EiCE_Uebung_00b.pdf differ diff --git a/ws2012/CE/uebungen/1/EiCE_Uebung01.pdf b/ws2012/CE/uebungen/1/EiCE_Uebung01.pdf new file mode 100644 index 00000000..d8666454 Binary files /dev/null and b/ws2012/CE/uebungen/1/EiCE_Uebung01.pdf differ diff --git a/ws2012/CE/uebungen/1/EiCE_Uebung01_Solution_Lukas.pdf b/ws2012/CE/uebungen/1/EiCE_Uebung01_Solution_Lukas.pdf new file mode 100644 index 00000000..3683d90f Binary files /dev/null and b/ws2012/CE/uebungen/1/EiCE_Uebung01_Solution_Lukas.pdf differ diff --git a/ws2012/CE/uebungen/1/petrinetz.graphml b/ws2012/CE/uebungen/1/petrinetz.graphml new file mode 100644 index 00000000..9942bc22 --- /dev/null +++ b/ws2012/CE/uebungen/1/petrinetz.graphml @@ -0,0 +1,2119 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + P1-1 + + + + + + + + + + + + + + + + + + + + + + + + + + P1-2 + + + + + + + + + + + + + + + + + + + + + + + + + + P1-4 + + + + + + + + + + + + + + + + + + + + + + + + + + P1-3 + + + + + + + + + + + + + + + + + + + + + + + + + + P1-5 + + + + + + + + + + + + + + + + + + + + + + + + + + t1-1 + + + + + + + + + + + + + + + + + + + + + + + + + + t1-2 + + + + + + + + + + + + + + + + + + + + + + + + + + t1-3 + + + + + + + + + + + + + + + + + + + + + + + + + + P1-1 + + + + + + + + + + + + + + + + + + + + + + + + + + P1-2 + + + + + + + + + + + + + + + + + + + + + + + + + + P1-4 + + + + + + + + + + + + + + + + + + + + + + + + + + P1-3 + + + + + + + + + + + + + + + + + + + + + + + + + + P1-5 + + + + + + + + + + + + + + + + + + + + + + + + + + t1-1 + + + + + + + + + + + + + + + + + + + + + + + + + + t1-2 + + + + + + + + + + + + + + + + + + + + + + + + + + t1-3 + + + + + + + + + + + + + + + + + + + + + + + + + + P1-1 + + + + + + + + + + + + + + + + + + + + + + + + + + P1-2 + + + + + + + + + + + + + + + + + + + + + + + + + + P1-4 + + + + + + + + + + + + + + + + + + + + + + + + + + P1-3 + + + + + + + + + + + + + + + + + + + + + + + + + + P1-5 + + + + + + + + + + + + + + + + + + + + + + + + + + t1-1 + + + + + + + + + + + + + + + + + + + + + + + + + + t1-2 + + + + + + + + + + + + + + + + + + + + + + + + + + t1-3 + + + + + + + + + + + + + + + + + + + + + + + + + + P1-1 + + + + + + + + + + + + + + + + + + + + + + + + + + P1-2 + + + + + + + + + + + + + + + + + + + + + + + + + + P1-4 + + + + + + + + + + + + + + + + + + + + + + + + + + P1-3 + + + + + + + + + + + + + + + + + + + + + + + + + + P1-5 + + + + + + + + + + + + + + + + + + + + + + + + + + t1-1 + + + + + + + + + + + + + + + + + + + + + + + + + + t1-2 + + + + + + + + + + + + + + + + + + + + + + + + + + t1-3 + + + + + + + + + + + + + + + + + + + + + + + + + + P1-1 + + + + + + + + + + + + + + + + + + + + + + + + + + P1-2 + + + + + + + + + + + + + + + + + + + + + + + + + + P1-4 + + + + + + + + + + + + + + + + + + + + + + + + + + P1-3 + + + + + + + + + + + + + + + + + + + + + + + + + + P1-5 + + + + + + + + + + + + + + + + + + + + + + + + + + t1-1 + + + + + + + + + + + + + + + + + + + + + + + + + + t1-2 + + + + + + + + + + + + + + + + + + + + + + + + + + t1-3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ws2012/CE/uebungen/1/petrinetz.jpg b/ws2012/CE/uebungen/1/petrinetz.jpg new file mode 100644 index 00000000..6f98d7f0 Binary files /dev/null and b/ws2012/CE/uebungen/1/petrinetz.jpg differ diff --git a/ws2012/CE/uebungen/1/solution.odt b/ws2012/CE/uebungen/1/solution.odt new file mode 100644 index 00000000..9c144cae Binary files /dev/null and b/ws2012/CE/uebungen/1/solution.odt differ diff --git a/ws2012/CE/uebungen/1/solution.pdf b/ws2012/CE/uebungen/1/solution.pdf new file mode 100644 index 00000000..79962996 Binary files /dev/null and b/ws2012/CE/uebungen/1/solution.pdf differ diff --git a/ws2012/CE/uebungen/2/EiCE_Uebung02.pdf b/ws2012/CE/uebungen/2/EiCE_Uebung02.pdf new file mode 100644 index 00000000..6f46275f Binary files /dev/null and b/ws2012/CE/uebungen/2/EiCE_Uebung02.pdf differ diff --git a/ws2012/CE/uebungen/2/uebung02_solution.odt b/ws2012/CE/uebungen/2/uebung02_solution.odt new file mode 100644 index 00000000..c526aa33 Binary files /dev/null and b/ws2012/CE/uebungen/2/uebung02_solution.odt differ diff --git a/ws2012/CE/uebungen/2/uebung02_solution.pdf b/ws2012/CE/uebungen/2/uebung02_solution.pdf new file mode 100644 index 00000000..522eeea7 Binary files /dev/null and b/ws2012/CE/uebungen/2/uebung02_solution.pdf differ diff --git a/ws2012/CE/uebungen/3/02_20051116_dsi.pdf b/ws2012/CE/uebungen/3/02_20051116_dsi.pdf new file mode 100644 index 00000000..10b5dd0b Binary files /dev/null and b/ws2012/CE/uebungen/3/02_20051116_dsi.pdf differ diff --git a/ws2012/CE/uebungen/3/7.Komplexe Zahlen.pdf b/ws2012/CE/uebungen/3/7.Komplexe Zahlen.pdf new file mode 100644 index 00000000..335a1bef Binary files /dev/null and b/ws2012/CE/uebungen/3/7.Komplexe Zahlen.pdf differ diff --git a/ws2012/CE/uebungen/3/EiCE_Uebung03_update.pdf b/ws2012/CE/uebungen/3/EiCE_Uebung03_update.pdf new file mode 100644 index 00000000..06e094a0 Binary files /dev/null and b/ws2012/CE/uebungen/3/EiCE_Uebung03_update.pdf differ diff --git a/ws2012/CE/uebungen/3/Merkzettel - Nichtlineare Systeme.pdf b/ws2012/CE/uebungen/3/Merkzettel - Nichtlineare Systeme.pdf new file mode 100644 index 00000000..337eaa35 Binary files /dev/null and b/ws2012/CE/uebungen/3/Merkzettel - Nichtlineare Systeme.pdf differ diff --git a/ws2012/CE/uebungen/3/uebung03_solution.odt b/ws2012/CE/uebungen/3/uebung03_solution.odt new file mode 100644 index 00000000..4a1a5f94 Binary files /dev/null and b/ws2012/CE/uebungen/3/uebung03_solution.odt differ diff --git a/ws2012/CE/uebungen/3/uebung03_solution.pdf b/ws2012/CE/uebungen/3/uebung03_solution.pdf new file mode 100644 index 00000000..f36e1151 Binary files /dev/null and b/ws2012/CE/uebungen/3/uebung03_solution.pdf differ diff --git a/ws2012/CE/uebungen/EiCE_Uebung_00b.pdf b/ws2012/CE/uebungen/EiCE_Uebung_00b.pdf deleted file mode 100644 index 84387052..00000000 Binary files a/ws2012/CE/uebungen/EiCE_Uebung_00b.pdf and /dev/null differ diff --git a/ws2012/CE/uebungen/P1/DEVS/.classpath b/ws2012/CE/uebungen/P1/DEVS/.classpath new file mode 100644 index 00000000..87279173 --- /dev/null +++ b/ws2012/CE/uebungen/P1/DEVS/.classpath @@ -0,0 +1,6 @@ + + + + + + diff --git a/ws2012/CE/uebungen/P1/DEVS/.project b/ws2012/CE/uebungen/P1/DEVS/.project new file mode 100644 index 00000000..ee0093a7 --- /dev/null +++ b/ws2012/CE/uebungen/P1/DEVS/.project @@ -0,0 +1,17 @@ + + + DEVS2 + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + diff --git a/ws2012/CE/uebungen/P1/DEVS/.settings/org.eclipse.jdt.core.prefs b/ws2012/CE/uebungen/P1/DEVS/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 00000000..ab76192d --- /dev/null +++ b/ws2012/CE/uebungen/P1/DEVS/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,12 @@ +#Thu Oct 11 22:30:59 CEST 2012 +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.5 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.5 diff --git a/ws2012/CE/uebungen/P1/DEVS/bin/edu/eice2012/DEVS$StopEvent.class b/ws2012/CE/uebungen/P1/DEVS/bin/edu/eice2012/DEVS$StopEvent.class new file mode 100644 index 00000000..4f623403 Binary files /dev/null and b/ws2012/CE/uebungen/P1/DEVS/bin/edu/eice2012/DEVS$StopEvent.class differ diff --git a/ws2012/CE/uebungen/P1/DEVS/bin/edu/eice2012/DEVS.class b/ws2012/CE/uebungen/P1/DEVS/bin/edu/eice2012/DEVS.class new file mode 100644 index 00000000..8d874abe Binary files /dev/null and b/ws2012/CE/uebungen/P1/DEVS/bin/edu/eice2012/DEVS.class differ diff --git a/ws2012/CE/uebungen/P1/DEVS/bin/edu/eice2012/DEVSMain.class b/ws2012/CE/uebungen/P1/DEVS/bin/edu/eice2012/DEVSMain.class new file mode 100644 index 00000000..e43038f2 Binary files /dev/null and b/ws2012/CE/uebungen/P1/DEVS/bin/edu/eice2012/DEVSMain.class differ diff --git a/ws2012/CE/uebungen/P1/DEVS/bin/edu/eice2012/DiscreteEvent.class b/ws2012/CE/uebungen/P1/DEVS/bin/edu/eice2012/DiscreteEvent.class new file mode 100644 index 00000000..59e58b30 Binary files /dev/null and b/ws2012/CE/uebungen/P1/DEVS/bin/edu/eice2012/DiscreteEvent.class differ diff --git a/ws2012/CE/uebungen/P1/DEVS/bin/edu/eice2012/ExponentialDistributionWrapper.class b/ws2012/CE/uebungen/P1/DEVS/bin/edu/eice2012/ExponentialDistributionWrapper.class new file mode 100644 index 00000000..2587ce74 Binary files /dev/null and b/ws2012/CE/uebungen/P1/DEVS/bin/edu/eice2012/ExponentialDistributionWrapper.class differ diff --git a/ws2012/CE/uebungen/P1/DEVS/bin/edu/eice2012/MyExponential.class b/ws2012/CE/uebungen/P1/DEVS/bin/edu/eice2012/MyExponential.class new file mode 100644 index 00000000..df2a32c5 Binary files /dev/null and b/ws2012/CE/uebungen/P1/DEVS/bin/edu/eice2012/MyExponential.class differ diff --git a/ws2012/CE/uebungen/P1/DEVS/bin/edu/eice2012/MyNormalDist.class b/ws2012/CE/uebungen/P1/DEVS/bin/edu/eice2012/MyNormalDist.class new file mode 100644 index 00000000..702bc6ed Binary files /dev/null and b/ws2012/CE/uebungen/P1/DEVS/bin/edu/eice2012/MyNormalDist.class differ diff --git a/ws2012/CE/uebungen/P1/DEVS/bin/edu/eice2012/NormalDistributionWrapper.class b/ws2012/CE/uebungen/P1/DEVS/bin/edu/eice2012/NormalDistributionWrapper.class new file mode 100644 index 00000000..b14fdd2e Binary files /dev/null and b/ws2012/CE/uebungen/P1/DEVS/bin/edu/eice2012/NormalDistributionWrapper.class differ diff --git a/ws2012/CE/uebungen/P1/DEVS/bin/edu/eice2012/QueueDEVS.class b/ws2012/CE/uebungen/P1/DEVS/bin/edu/eice2012/QueueDEVS.class new file mode 100644 index 00000000..9ffcfac6 Binary files /dev/null and b/ws2012/CE/uebungen/P1/DEVS/bin/edu/eice2012/QueueDEVS.class differ diff --git a/ws2012/CE/uebungen/P1/DEVS/bin/edu/eice2012/RandomNumberGenerator.class b/ws2012/CE/uebungen/P1/DEVS/bin/edu/eice2012/RandomNumberGenerator.class new file mode 100644 index 00000000..0ed2314c Binary files /dev/null and b/ws2012/CE/uebungen/P1/DEVS/bin/edu/eice2012/RandomNumberGenerator.class differ diff --git a/ws2012/CE/uebungen/P1/DEVS/src/edu/eice2012/DEVS.java b/ws2012/CE/uebungen/P1/DEVS/src/edu/eice2012/DEVS.java new file mode 100644 index 00000000..1ca90303 --- /dev/null +++ b/ws2012/CE/uebungen/P1/DEVS/src/edu/eice2012/DEVS.java @@ -0,0 +1,117 @@ +/** + Vorlesung: Einfuehrung in Computational Engineering + @author Arne Naegel + @date Oktober 2012 + */ + +package edu.eice2012; + + + +import java.util.Iterator; +import java.util.PriorityQueue; + +/* This class implements a time dependent discrete event simulation */ +abstract public class DEVS { + + // GENERAL + protected PriorityQueue queue; + private double time; + private double maxTime; + + // CONSTRUCTOR + public DEVS(){ + queue = new PriorityQueue(2); + time = 0.0; + + + } + + protected class StopEvent extends DiscreteEvent{ + StopEvent(double t) { + super(t,'X'); + } + } + + // USER-DEFINED FUNCTIONS + /** This routine may be implemented */ + public void initialize() { + queue.add(new StopEvent(maxTime)); + } + + /** This routine must be implemented */ + abstract public void eventRoutine(DiscreteEvent ev); + + /** This routine may be implemented */ + public void statistics() {} + + + + // GENERAL FUNCTIONS + /** getter time */ + public double getTime() { + return time; + } + + /** setter time */ + public void setTime(double time) { + this.time = time; + } + + /** getter max time */ + public double getMaxTime() { + return maxTime; + } + + /** setter max time */ + public void setMaxTime(double time) { + this.maxTime = time; + } + + + /** Simulation stops if time limit has been reached*/ + public boolean stopCondition() { + return getTime() > getMaxTime(); + } + + /** Perform simulation run (event loop) */ + public void simulate(){ + + while (true){ + + // get event + DiscreteEvent ev = queue.poll(); + + // abort, if queue is empty + if (ev==null) { + System.out.println("Queue is empty!"); + break; + } + + // update time and treat event + time = ev.getTime(); + eventRoutine(ev); + + // print queue status + System.out.print("{"); + + for (Iterator it = queue.iterator(); it.hasNext();) + { + System.out.print(it.next()+", "); + } + System.out.println("}"); + + // check for stop condition + if (ev instanceof StopEvent) + { + System.out.println("Terminating"); + break; + } + } + } + + + + +} + diff --git a/ws2012/CE/uebungen/P1/DEVS/src/edu/eice2012/DEVSMain.java b/ws2012/CE/uebungen/P1/DEVS/src/edu/eice2012/DEVSMain.java new file mode 100644 index 00000000..bd33cae0 --- /dev/null +++ b/ws2012/CE/uebungen/P1/DEVS/src/edu/eice2012/DEVSMain.java @@ -0,0 +1,50 @@ +/** + Vorlesung: Einfuehrung in Computational Engineering + @author Arne Naegel + @date Oktober 2012 + */ + +package edu.eice2012; + +import java.util.Random; + +public class DEVSMain { + + /** execute program */ + public static void main(String args[]){ + + // create random number generator + RandomNumberGenerator randA; + RandomNumberGenerator randD; + double maxtime; + + // ALTERNATIVE 1: results from exercise 1 + // TODO: VAlidierung in Aufgabenteil b) + randA = new MyExponential(); + randD = new MyNormalDist(); + maxtime = 100.0; + + + // ALTERNATIVE 2: 'real' random numbers + // TODO: Experimente in Aufgabenteil d) + /* Random r = new Random(47); + + + randA = new ExponentialDistributionWrapper(r, 5.0); + randD = new ExponentialDistributionWrapper(r, 6.0); + //randD= new NormalDistributionWrapper(r, 6.0, 2.0); + maxtime = 20000; + */ + + DEVS sim = new QueueDEVS(randA, randD); + + sim.setMaxTime(maxtime); + sim.initialize(); + sim.simulate(); + + sim.statistics(); + } + + + +} diff --git a/ws2012/CE/uebungen/P1/DEVS/src/edu/eice2012/DiscreteEvent.java b/ws2012/CE/uebungen/P1/DEVS/src/edu/eice2012/DiscreteEvent.java new file mode 100644 index 00000000..e1cf2afb --- /dev/null +++ b/ws2012/CE/uebungen/P1/DEVS/src/edu/eice2012/DiscreteEvent.java @@ -0,0 +1,43 @@ +/** + Vorlesung: Einfuehrung in Computational Engineering + @author Arne Naegel + @date Oktober 2012 + */ +package edu.eice2012; + +import java.lang.Double; + +public class DiscreteEvent implements Comparable{ + + private double time; + private char type; + + + DiscreteEvent(double t, char c) {time=t; type=c;} + + public double getTime() { + return time; + } + public void setTime(double time) { + this.time = time; + } + + public char getType() { + return type; + } + public void setType(char type) { + this.type = type; + } + + + public String toString(){ + return "Event<"+type+", "+time+">"; + } + + + + public int compareTo(DiscreteEvent e) { + return new Double(time).compareTo(e.getTime()); + + } +} diff --git a/ws2012/CE/uebungen/P1/DEVS/src/edu/eice2012/ExponentialDistributionWrapper.java b/ws2012/CE/uebungen/P1/DEVS/src/edu/eice2012/ExponentialDistributionWrapper.java new file mode 100644 index 00000000..58c97ba0 --- /dev/null +++ b/ws2012/CE/uebungen/P1/DEVS/src/edu/eice2012/ExponentialDistributionWrapper.java @@ -0,0 +1,32 @@ +package edu.eice2012; + +import java.util.Random; + + +/** Generiert Werte einer Exponentialverteilung */ +public class ExponentialDistributionWrapper implements RandomNumberGenerator { + +private static final long serialVersionUID = 1L; + + private double lambda; + private Random r; + private boolean doInteger; + + public ExponentialDistributionWrapper(Random r){ + this (r, 1.0); + } + + public ExponentialDistributionWrapper(Random r, double lambda){ + this.doInteger=false; + this.r = r; + this.lambda=lambda; + } + + + public double nextDoubleValue(){ + double x = r.nextDouble(); + if (doInteger) return (double) Math.round(-Math.log(1.0-x)/lambda); + return -Math.log(1.0-x)/lambda; + } + +} diff --git a/ws2012/CE/uebungen/P1/DEVS/src/edu/eice2012/MyExponential.java b/ws2012/CE/uebungen/P1/DEVS/src/edu/eice2012/MyExponential.java new file mode 100644 index 00000000..c20b54af --- /dev/null +++ b/ws2012/CE/uebungen/P1/DEVS/src/edu/eice2012/MyExponential.java @@ -0,0 +1,30 @@ +/** + Vorlesung: Einfuehrung in Computational Engineering + @author Arne Naegel + @date Oktober 2012 + */ +package edu.eice2012; + +public class MyExponential implements RandomNumberGenerator + +{ + MyExponential() {i=0;} + + public double nextDoubleValue(){ + double val=data[i]; + i=(i+1)%data.length; + return val; + }; + + private int i; + private static final long serialVersionUID = 1L; + private static double data[] = + //{0.57, 2.73, 1.36, 0.72, 0.23, 0.08, 1.21, 0.35, 2.81, 0.19, 0.88}; + {8.76, 16.82, 15.40, 26.72,3.46,27.06,23.52,8.06,0.71,42.03,56.27}; + + + + + + +} diff --git a/ws2012/CE/uebungen/P1/DEVS/src/edu/eice2012/MyNormalDist.java b/ws2012/CE/uebungen/P1/DEVS/src/edu/eice2012/MyNormalDist.java new file mode 100644 index 00000000..188374e4 --- /dev/null +++ b/ws2012/CE/uebungen/P1/DEVS/src/edu/eice2012/MyNormalDist.java @@ -0,0 +1,25 @@ +/** + Vorlesung: Einfuehrung in Computational Engineering + @author Arne Naegel + @date Oktober 2012 + */ +package edu.eice2012; + +public class MyNormalDist implements RandomNumberGenerator + +{ + MyNormalDist() {i=0;} + + public double nextDoubleValue(){ + double val=data[i]; + i=(i+1)%data.length; + return val; + }; + + private int i; + private static final long serialVersionUID = 1L; + private static double data[] = + //{1.89, 2.02, 2.56, 3.84, 2.00, 2.28, 3.32, 3.56, 2.97, 2.67, 2.70}; + {25.30, 20.11, 13.25, 10.68, 16.85, 19.22, 23.96, 28.30, 24.55, 22.70, 17.14}; + +} diff --git a/ws2012/CE/uebungen/P1/DEVS/src/edu/eice2012/NormalDistributionWrapper.java b/ws2012/CE/uebungen/P1/DEVS/src/edu/eice2012/NormalDistributionWrapper.java new file mode 100644 index 00000000..f4992e2f --- /dev/null +++ b/ws2012/CE/uebungen/P1/DEVS/src/edu/eice2012/NormalDistributionWrapper.java @@ -0,0 +1,35 @@ +package edu.eice2012; + + +import java.util.Random; + + +/** Generiert Werte einer Normalverteilung */ +public class NormalDistributionWrapper implements RandomNumberGenerator{ + + private static final long serialVersionUID = 1L; + + private double mu; + private double sigma; + private Random r; + private boolean doInteger; // returning integers or doubles? + + + public NormalDistributionWrapper(Random r){ + this(r, 0.0, 1.0); + } + + public NormalDistributionWrapper(Random r, double mu, double sigma){ + this.r = r; + this.mu=mu; + this.sigma=sigma; + this.doInteger=false; + } + + public double nextDoubleValue(){ + double x = r.nextGaussian(); + if (doInteger) return (double) Math.round( mu +x*sigma); + return mu +x*sigma; + } + +} diff --git a/ws2012/CE/uebungen/P1/DEVS/src/edu/eice2012/QueueDEVS.java b/ws2012/CE/uebungen/P1/DEVS/src/edu/eice2012/QueueDEVS.java new file mode 100644 index 00000000..3d73ad50 --- /dev/null +++ b/ws2012/CE/uebungen/P1/DEVS/src/edu/eice2012/QueueDEVS.java @@ -0,0 +1,277 @@ +/** + Vorlesung: Einfuehrung in Computational Engineering + @author Arne Naegel + @date Oktober 2012 + */ + +package edu.eice2012; + +import java.util.AbstractList; +import java.util.Vector; + + +public class QueueDEVS extends DEVS { + + // problem specific variables + private int server; // current machine state (0=idle) + private int buffer; // current buffer length + private int maxServers; + + // random number generators + private RandomNumberGenerator randA; + private RandomNumberGenerator randD; + + // statistics (per event) + private Vector eventTimes; // time stamp when event is triggered + private Vector eventTypes; // type of event + private Vector serverList; // #items processed by server(s) + private Vector bufferList; // #items in buffer + private Vector loadList; // #items in system + + + + /** Constructor */ + public QueueDEVS(RandomNumberGenerator randA, RandomNumberGenerator randD) + { + // attributes + buffer = 0; + server = 0; + maxServers = 1; + + // random numbers + this.randA = randA; + this.randD = randD; + + + // statistics (per event) + eventTimes = new Vector(); + eventTypes = new Vector(); + bufferList = new Vector(); + serverList = new Vector(); + loadList = new Vector(); + + // first entries + eventTimes.add(0.0); + eventTypes.add('I'); + bufferList.add(0.0); + serverList.add(0.0); + loadList.add(0.0); + } + + public void setRandomArrival(RandomNumberGenerator rand) + { + this.randA = rand; + } + + public void setRandomDeparture(RandomNumberGenerator rand) + { + this.randD = rand; + } + + + + /** status for server */ + public boolean allBusy() + { + return (server == maxServers); + } + + /** status for server */ + public boolean isIdle() + { + return (server==0); + } + + + public int getServerState() { + return this.server; + } + + + public void initialize() + { + super.initialize(); + server = 0; + buffer = 0; + queue.add(new DiscreteEvent(0.5, 'A')); + + /* + * ALTERNATIVE: first arrival is random + double offset = randA.nextDoubleValue(); + queue.add(new DiscreteEvent((offset), 'A')); + */ + } + + + /** called for every event */ + public void eventRoutine(DiscreteEvent e) + { + + char type = e.getType(); + switch (type) + { + case 'A': arrivalRoutine(e); break; + case 'D': departureRoutine(e); break; + + default: System.out.println("Unknown event type -> Aborting!!!"); + }; + + + // print stats + System.out.println("Event: "+e.getTime() + "|"+type+ "|"+ buffer+ "|"+ getServerState()); + + // record event statistics (example!) + eventTimes.add(e.getTime()); // time stamp + eventTypes.add(e.getType()); // type (A/D/X) + int serverState = getServerState(); + serverList.add((double) serverState); // server state + bufferList.add((double) buffer); // buffer state + + int nItems = buffer + serverState; + loadList.add((double) nItems); // system load + }; + + /** TODO: called upon arrival */ + protected void arrivalRoutine (DiscreteEvent e) + { + + //System.out.println("arrivalRoutine muss implementiert werden!"); + + double offset1 = randA.nextDoubleValue(); + queue.add(new DiscreteEvent((getTime()+offset1), 'A')); + + if(allBusy()){ + buffer++; + }else{ + server++; + double offset2 = randD.nextDoubleValue(); + queue.add(new DiscreteEvent(getTime()+offset2, 'D')); + } + + + + + } + + + /** TODO: called upon departure */ + protected void departureRoutine (DiscreteEvent e) + { + //System.out.println("departureRoutine muss implementiert werden!"); + + if(buffer == 0){ + server = 0; + }else{ + buffer--; + double offset=randD.nextDoubleValue(); + queue.add(new DiscreteEvent(getTime()+offset, 'D')); + } + + } + + + + /** aux: compute \sum v_i */ + static protected double firstMoments(AbstractList values){ + double val=0.0; + int numEvents = values.size()-1; + for (int i=0; i values, AbstractList weights){ + double val=0.0; + int numEvents = values.size()-1; // skip final STOP event! + for (int i=0; i values){ + double val=0.0; + int numEvents = values.size()-1; // skip final STOP event! + for (int i=0; i values, AbstractList weights){ + double val=0.0; + int numEvents = values.size()-1; // skip final STOP event! + for (int i=0; i, AbstractList) + * */ + static protected double[] aggregateTimesPerLoad(AbstractList times, AbstractList loads) + { + + int numEvents = loads.size()-1; // skip final STOP event! + + // a) find maximum load + int maxLoad = 0; + for (int i=0; i maxLoad) maxLoad = load; + } + + // b) compute sum of values and assign + double val[] = new double[maxLoad+1]; + for (int i=0; i