Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Internal: Lots of Java stuff #3

Open
wants to merge 113 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
113 commits
Select commit Hold shift + click to select a range
5039b43
unify end-of-line spaces (no space, no carriage-return) [minor]
hoijui Apr 15, 2017
f3edcfe
ensure new-line at end-of-file for java source files [minor]
hoijui Apr 15, 2017
0213a97
no space between method-name and "(" [minor]
hoijui Apr 15, 2017
4f03f54
add duplicates check for output value names
hoijui Aug 12, 2016
2850076
prevent duplicate output value name [fix]
hoijui Aug 12, 2016
88f0187
modularize PlotCurve a bit
hoijui Aug 12, 2016
bd2c1e1
factor out the actual simulation run from ExampleMain
hoijui Apr 15, 2017
05058f7
add a swing table implementation to display and edit Properties
hoijui Apr 15, 2017
3b67e87
add a comfortable GUI for testing, and use as main
hoijui Apr 15, 2017
f383f20
allow to set a property in the editing table
hoijui Oct 18, 2016
84c9dd7
make the main window a bit wider
hoijui Oct 18, 2016
ef128c4
allow to easily investigate changes in one input variable with a slider
hoijui Oct 18, 2016
5dc1a08
improve Trial GUI
hoijui Apr 15, 2017
93ccf7b
add en example experiment, iterating over multiple variables
hoijui Nov 13, 2016
4bfa232
IndustrialBenchmarkDynamics: cleanup ctors, prevent double init [fix]
hoijui Apr 15, 2017
aeb30eb
use working value for seemingly arbitrary range limit [fix]
hoijui Feb 28, 2017
32856f6
DataVectorImpl: cleanup
hoijui Apr 15, 2017
0ac58ef
DataVectorImpl: fix indents [minor]
hoijui Feb 28, 2017
166487e
DataVectorImpl: more cleanup and more performant code
hoijui Feb 28, 2017
0d81f52
minor generics fixes [fix]
hoijui Apr 15, 2017
a01b8f0
IndustrialBenchmarkDynamics: lots of improvements and cleanup
hoijui Apr 20, 2017
a35e198
IndustrialBenchmarkDynamics: fix indents [minor]
hoijui Apr 15, 2017
d8c3cf1
fix indents in all java sources [nlc]
hoijui Apr 17, 2017
418f2e1
lots of cleanup of all sorts
hoijui Apr 16, 2017
22ca4df
README: white-space fixes [minor]
hoijui Apr 16, 2017
5ebf12f
README: use Markdown syntax [minor]
hoijui Apr 16, 2017
0109a08
README: add a note [minor]
hoijui Apr 16, 2017
1e77a06
README: use run-command that works out of the box [minor]
hoijui Apr 16, 2017
dc8ae5d
README: other small cleanup [minor]
hoijui Apr 16, 2017
bb14d76
README: use markdown extension [minor]
hoijui Apr 16, 2017
aa73063
remove redundant imports [nlc]
hoijui Apr 17, 2017
fb15e0d
remove trailing white-space in config files [minor]
hoijui Mar 2, 2017
43a5dac
lots of cleanup (mostly CheckStyle suggestions)
hoijui Mar 9, 2017
b998bbb
more cleanup, everywhere
hoijui Apr 17, 2017
b1582b6
more cleanup [nlc]
hoijui Apr 20, 2017
0cc82fa
project: modularize a bit more [maven]
hoijui Apr 17, 2017
92dfea9
project: add organization info [maven]
hoijui Apr 17, 2017
0374436
project: explicitly set packaging type [maven]
hoijui Apr 17, 2017
21ba7f9
project: add minimum maven version [maven]
hoijui Apr 17, 2017
6ff663c
project: show more warnings at compile-time [maven]
hoijui Apr 17, 2017
e62f82e
project: prevent the local user-name from entering the JAR manifest […
hoijui Apr 17, 2017
f1a1454
project: each plugin can only appear once [maven] [fix]
hoijui Apr 17, 2017
f1e076e
rename `(g|s)etInternalMarkovState` to `(g|s)etMarkovState`
hoijui Apr 17, 2017
c6bcb66
do not hide internal fields in non-setter/-getter methods [nlc]
hoijui Apr 17, 2017
e0115db
remove two unused fields
hoijui Apr 17, 2017
1d2e515
make field `maxDelta` static (-> `MAX_DELTA`)
hoijui Apr 20, 2017
a9d118e
remove redundant initialization
hoijui Apr 17, 2017
ad02749
cleanup and speedup dynamic string generation
hoijui Apr 17, 2017
ff3a1b0
separate DataVectorDescription into impl & interface
hoijui Apr 17, 2017
dcbf09a
lots of action cleanup
hoijui Apr 20, 2017
800051e
remove redundant public modifiers [nlc]
hoijui Apr 18, 2017
4fa47cd
license headers are no JavaDoc comments [minor]
hoijui Apr 18, 2017
585fbd0
SetPointGenerator: put all ctors in the beginning of the file [nlc]
hoijui Apr 18, 2017
8716d00
JavaDoc fixes
hoijui Apr 20, 2017
384aea2
JavaDoc fixes for test sources
hoijui Apr 18, 2017
87680e6
cleanup ActionDelta ctor
hoijui Apr 18, 2017
effdf3f
remove code duplication in DataVectorDescriptionImpl ctor
hoijui Apr 18, 2017
3226874
add reporting plugins [maven]
hoijui Apr 18, 2017
1737854
add extended reporting plugins [maven]
hoijui Apr 20, 2017
9f98c1f
set encoding for the javadoc plugin [maven]
hoijui Apr 20, 2017
1038a89
set encoding for the resources plugin [maven]
hoijui Apr 20, 2017
7d7a6d0
set the main class attribute for the exec plugin [maven]
hoijui Apr 20, 2017
409c4e2
add the code-checker plugins [maven]
hoijui Apr 20, 2017
c2406c1
no need to ignore the main package for JavaDoc in release anymore [ma…
hoijui Apr 20, 2017
69db80b
specify encoding for JavaDoc in release aswell [maven]
hoijui Apr 20, 2017
b64e82e
specify info-reports plugin version for reports [maven]
hoijui Apr 20, 2017
9ef8411
add (incomplete!) inceptionYear meta-info tag [maven]
hoijui Apr 20, 2017
818cefd
Ind*Ben*Dyn*: no single char variable names [nlc]
hoijui Apr 20, 2017
e0ab953
Ind*Ben*Dyn*: clarify lots of number types and calculation orders [nlc]
hoijui Apr 20, 2017
e920e0a
Ind*Ben*Dyn*: inita fields in the ctor [nlc]
hoijui Apr 20, 2017
fbf6183
Ind*Ben*Dyn*: make a constant static [nlc]
hoijui Apr 20, 2017
7a64e3f
ActionDeltaDescription: properly name constants [nlc]
hoijui Apr 20, 2017
33729cb
MarkovianStateDescription: properly name constants [nlc]
hoijui Apr 20, 2017
4cc67cd
ObservableStateDescription: properly name constants [nlc]
hoijui Apr 20, 2017
3a0e57c
NLGP: properly name methods [nlc]
hoijui Apr 20, 2017
c3663fd
SetPointGeneratorStateDescription: properly name constants [nlc]
hoijui Apr 20, 2017
cd0b1c1
SetPointGenerator: properly name constants [nlc]
hoijui Apr 20, 2017
4cf5e2e
mark some fields as transient [nlc]
hoijui Apr 21, 2017
c90b632
add some getters
hoijui Apr 21, 2017
2212b71
use `!isEmpty()` instead of `size() > 0`
hoijui Apr 21, 2017
95d608e
do not reassign parameters [nlc]
hoijui Apr 21, 2017
b4d1d5a
remove some superfluous qualifiers [nlc]
hoijui Apr 21, 2017
75f4790
JavaDoc fixes [minor]
hoijui Apr 21, 2017
d2f6715
use varargs
hoijui Apr 21, 2017
e6e25c2
ActionAbsolute: remove superfluous info from field names [nlc]
hoijui Apr 21, 2017
8d9f7e2
replace cloning with the use of copy ctor
hoijui Apr 21, 2017
9621cd5
properly name getter
hoijui Apr 21, 2017
423d08b
mark a variable as final [nlc]
hoijui Apr 21, 2017
fd9690c
use List<Double> directly instead of converting a double[] to it
hoijui Apr 21, 2017
583d109
DataVectorImpl: cleanup checks a bit
hoijui Apr 21, 2017
eb0592d
remove JavaDoc comments that already exist in overriden methods [minor]
hoijui Apr 21, 2017
40b99d3
DataVectorImpl: make properly de-/serializable
hoijui Apr 21, 2017
850c982
encapsulate protected fields with getters
hoijui Apr 22, 2017
6cd9c2c
minimally better doc [minor]
hoijui May 2, 2017
e6ebd33
PropertiesUtil: rename `setpointProperties()` -> `loadSetPointPropert…
hoijui May 3, 2017
2411e20
IBD: the argument state may not contain all these variables [fix]
hoijui May 3, 2017
a14972a
add OpenAI Gym environment wrapper for IndustrialBenchmarkDynamics
hoijui May 3, 2017
1b7b459
Merge remote-tracking branch 'origin/master'
hoijui Aug 9, 2017
2ca116e
some minor performance improvements
hoijui Apr 22, 2017
30a4758
more uniform field names
hoijui Apr 22, 2017
b44ebbf
Ind*Ben*Dyn*: lots of comment and formatting cleanup
hoijui Apr 22, 2017
593420b
GoldstoneEnvironment: cleanup
hoijui Apr 22, 2017
65b8c15
PropertiesUtil: modularize exceptions a bit
hoijui Apr 22, 2017
fb6f624
use field name corresponding to the interface prescribed property name
hoijui Apr 22, 2017
e1ca1d5
TrialGuiMain: add protected getters for eventual serialization
hoijui Apr 22, 2017
8676c28
SetPointGenerator: cleanup field (mainly unifying names)
hoijui Apr 22, 2017
75fa0c9
make single char variable more verbose [nlc]
hoijui Apr 22, 2017
c389161
SetPointGenerator: add getters for eventual serialization & extendibi…
hoijui Apr 22, 2017
83dd742
GoldStoneEnvironmentDynamics: more cleanup
hoijui Apr 22, 2017
f8af73e
+ code clean-up in mis-calibration dynamics
Sep 27, 2017
9336f06
+ updated README
Sep 28, 2017
5c0aff3
README adjustments [minor]
hoijui Oct 22, 2017
b2e692e
Revert "README adjustments [minor]"
Nov 22, 2017
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
53 changes: 53 additions & 0 deletions README.markdown
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
# Industrial Benchmark

Requires: Java 8 and Apache Maven 3.x

Documentation: The documentation is available online at: https://arxiv.org/abs/1709.09480
Source: D. Hein, S. Depeweg, M. Tokic, S. Udluft, A. Hentschel, T.A. Runkler, and V. Sterzing.
"A Benchmark Environment Motivated by Industrial Control Problems". arXiv preprint arXiv:1709.09480, 2017.

## Citing Industrial Benchmark

To cite Industrial Benchmark, please reference:
D. Hein, S. Depeweg, M. Tokic, S. Udluft, A. Hentschel, T.A. Runkler, and V. Sterzing. "A Benchmark Environment
Motivated by Industrial Control Problems". arXiv preprint arXiv:1709.09480, 2017.

D. Hein, S. Udluft, M. Tokic, A. Hentschel, T.A. Runkler, and V. Sterzing. "Batch Reinforcement
Learning on the Industrial Benchmark: First Experiences," in 2017 International Joint Conference on Neural
Networks (IJCNN), 2017, pp. 4214–4221.

S. Depeweg, J. M. Hernández-Lobato, F. Doshi-Velez, and S. Udluft. "Learning and
policy search in stochastic dynamical systems with bayesian neural networks." arXiv
preprint arXiv:1605.07127, 2016.

## Inclusion as a dependency to your Java/Maven project

<dependency>
<groupId>com.siemens.oss.industrialbenchmark</groupId>
<artifactId>industrialbenchmark</artifactId>
<version>1.1.1</version>
</dependency>


## Compilation + Run

NOTE: It is important to run the maven clean phase (`mvn clean`, like below)
when working with this project for the first time.
This will install the `RLGlue:JavaRLGlueCodec:1.0` dependency into the local repo.
Without it, compilation will fail.

mvn clean package
java -jar target/industrialbenchmark-*-jar-with-dependencies.jar
# or
java -jar target/industrialbenchmark-*-jar-with-dependencies.jar src/main/resources/sim.properties

* => a random trajectory is generated
* => all observable state variables are written to file dyn-observable.csv.
* => all markov state variables are written to file dyn-markov.csv

# Sample usage in code

An example usage of the industrial benchmark can be found in the class `com.siemens.industrialbenchmark.ExampleMain`.
It is intented to be a template for data generation.


51 changes: 0 additions & 51 deletions README.txt

This file was deleted.

210 changes: 198 additions & 12 deletions pom.xml
Original file line number Diff line number Diff line change
@@ -1,22 +1,32 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>com.siemens.oss.industrialbenchmark</groupId>
<artifactId>industrialbenchmark</artifactId>
<version>1.1.2-SNAPSHOT</version>

<properties>
<javaSource>1.8</javaSource>
<javaTarget>1.8</javaTarget>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.build.encoding>UTF-8</project.build.encoding>
<project.build.sourceEncoding>${project.build.encoding}</project.build.sourceEncoding>
<project.build.resourceEncoding>${project.build.encoding}</project.build.resourceEncoding>
<java.min.version>8</java.min.version>

<project.mainPackage>com.siemens.industrialbenchmark</project.mainPackage>
<project.mainClass>${project.mainPackage}.TrialGuiMain</project.mainClass>
</properties>

<organization>
<name>Siemens</name>
<url>http://ct.siemens.com</url>
</organization>
<name>Industrial Benchmark</name>
<url>http://github.com/siemens/industrialbenchmark</url>
<description>A novel reinforcement learning benchmark, called Industrial Benchmark, is introduced.
The Industrial Benchmark aims at being be realistic in the sense, that it includes a variety
of aspects that we found to be vital in industrial applications. It is not designed to be an
approximation of any real system, but to pose the same hardness and complexity.
</description>
<inceptionYear>20??</inceptionYear> <!-- TODO Document this! -->

<licenses>
<license>
Expand All @@ -27,6 +37,12 @@ approximation of any real system, but to pose the same hardness and complexity.
</license>
</licenses>

<packaging>jar</packaging>

<prerequisites>
<maven>2.2.1</maven>
</prerequisites>

<developers>
<developer>
<name>Michel Tokic</name>
Expand Down Expand Up @@ -67,6 +83,57 @@ approximation of any real system, but to pose the same hardness and complexity.
</snapshotRepository>
</distributionManagement>

<reporting>
<plugins>
<!-- NOTE Use the profile "Extensive-Reports" for an extended list of reports. -->

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>2.17</version>
<configuration>
<sourceEncoding>${project.build.sourceEncoding}</sourceEncoding>
<linkXref>true</linkXref>
<configLocation>src/main/resources/checkstyle.xml</configLocation>
<propertyExpansion>java.header.regex.template.file=${basedir}/src/main/resources/java_header_regex_template.txt</propertyExpansion>
</configuration>
</plugin>

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-pmd-plugin</artifactId>
<version>3.7</version>
<configuration>
<aggregate>true</aggregate>
<linkXref>true</linkXref>
<sourceEncoding>${project.build.sourceEncoding}</sourceEncoding>
<targetJdk>1.${java.min.version}</targetJdk>
<rulesets>
<ruleset>${basedir}/src/main/resources/pmd.xml</ruleset>
</rulesets>
</configuration>
</plugin>

<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>findbugs-maven-plugin</artifactId>
<version>3.0.4</version>
</plugin>

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-report-plugin</artifactId>
<version>2.19.1</version>
</plugin>

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-project-info-reports-plugin</artifactId>
<version>2.9</version>
</plugin>
</plugins>
</reporting>

<dependencies>
<dependency>
<groupId>org.slf4j</groupId>
Expand Down Expand Up @@ -144,9 +211,11 @@ approximation of any real system, but to pose the same hardness and complexity.
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>${javaSource}</source>
<target>${javaTarget}</target>
<source>1.${java.min.version}</source>
<target>1.${java.min.version}</target>
<encoding>${project.build.sourceEncoding}</encoding>
<showDeprecation>true</showDeprecation>
<compilerArgument>-Xlint:unchecked</compilerArgument>
</configuration>
</plugin>
<!-- Build deliverables: JAR -->
Expand All @@ -162,8 +231,15 @@ approximation of any real system, but to pose the same hardness and complexity.
used to specify that all needed libraries are found under lib/ directory. -->
<classpathPrefix>lib/</classpathPrefix>
<!-- Specifies the main class of the application -->
<mainClass>com.siemens.industrialbenchmark.ExampleMain</mainClass>
<mainClass>${project.mainClass}</mainClass>
</manifest>
<manifestEntries>
<!--
Prevent the local user-name from entering the JAR manifest.
This is required for reproducible builds.
-->
<Built-By />
</manifestEntries>
</archive>
</configuration>
</plugin>
Expand Down Expand Up @@ -218,21 +294,86 @@ approximation of any real system, but to pose the same hardness and complexity.
</configuration>
</execution>
</executions>
</plugin>
<!-- Build deliverables: Self-contained JAR with all dependencies -->
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<!-- Build deliverables: Self-contained JAR with all dependencies -->
<configuration>
<archive>
<manifest>
<mainClass>com.siemens.industrialbenchmark.ExampleMain</mainClass>
<mainClass>${project.mainClass}</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.8</version>
<configuration>
<charset>${project.build.sourceEncoding}</charset>
<encoding>${project.build.sourceEncoding}</encoding>
</configuration>
</plugin>

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
<configuration>
<encoding>${project.build.resourceEncoding}</encoding>
</configuration>
</plugin>

<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.5.0</version>
<executions>
<execution>
<goals>
<goal>java</goal>
</goals>
</execution>
</executions>
<configuration>
<mainClass>${project.mainClass}</mainClass>
</configuration>
</plugin>

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>2.17</version>
<configuration>
<sourceEncoding>${project.build.sourceEncoding}</sourceEncoding>
<linkXref>true</linkXref>
<configLocation>src/main/resources/checkstyle.xml</configLocation>
<propertyExpansion>java.header.regex.template.file=${basedir}/src/main/resources/java_header_regex_template.txt</propertyExpansion>
</configuration>
</plugin>

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-pmd-plugin</artifactId>
<version>3.7</version>
<configuration>
<aggregate>true</aggregate>
<linkXref>true</linkXref>
<sourceEncoding>${project.build.sourceEncoding}</sourceEncoding>
<targetJdk>1.${java.min.version}</targetJdk>
<rulesets>
<ruleset>${basedir}/src/main/resources/pmd.xml</ruleset>
</rulesets>
</configuration>
</plugin>

<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>findbugs-maven-plugin</artifactId>
<version>3.0.4</version>
</plugin>
</plugins>
</build>

Expand All @@ -255,7 +396,8 @@ approximation of any real system, but to pose the same hardness and complexity.
</execution>
</executions>
<configuration>
<excludePackageNames>com.siemens.industrialbenchmark.*</excludePackageNames>
<charset>${project.build.sourceEncoding}</charset>
<encoding>${project.build.sourceEncoding}</encoding>
</configuration>
</plugin>
<plugin>
Expand Down Expand Up @@ -307,5 +449,49 @@ approximation of any real system, but to pose the same hardness and complexity.
</plugins>
</build>
</profile>

<profile>
<id>Extensive-Reports</id>
<!--
This profile adds additional reports to the site phase.
The reports in here create a lot of output (in MB).
Thus we do not want to use them to generate the default site,
which is uploaded on the web (for potentially many versions).
-->
<reporting>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jxr-plugin</artifactId>
<version>2.5</version>
<configuration>
<sourceEncoding>${project.build.sourceEncoding}</sourceEncoding>
</configuration>
</plugin>

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.8</version>
<configuration>
<charset>${project.build.sourceEncoding}</charset>
<encoding>${project.build.sourceEncoding}</encoding>
</configuration>
</plugin>

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-changelog-plugin</artifactId>
<version>2.3</version>
</plugin>

<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>sonar-maven-plugin</artifactId>
<version>3.2</version>
</plugin>
</plugins>
</reporting>
</profile>
</profiles>
</project>
Loading