Skip to content
22 changes: 22 additions & 0 deletions .github/workflows/SimPathsBuild.yml
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,28 @@ jobs:
- name: Run integration tests
run: mvn verify

run-simpaths-start:
needs: build
runs-on: [ ubuntu-latest ]
steps:
- uses: actions/checkout@v4
- name: Set up JDK 19
uses: actions/setup-java@v4
with:
java-version: '19'
distribution: 'temurin'
- uses: actions/download-artifact@v4
with:
name: simpaths_jars
path: .
- name: Do one full Setup and Run with SimPathsStart (mimicking GUI run)
run: java -jar singlerun.jar -c UK -s 2019 -g false --rewrite-policy-schedule
- name: Check input db exists
id: check_file
uses: thebinaryfelix/check-file-existence-action@1.0.0
with:
files: 'input/input.mv.db, input/EUROMODpolicySchedule.xlsx, input/DatabaseCountryYear.xlsx'

run-simpaths-persist-root:
needs: build
runs-on: [ ubuntu-latest ]
Expand Down
44 changes: 38 additions & 6 deletions src/main/java/simpaths/experiment/SimPathsStart.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit;
import javax.swing.BorderFactory;
import javax.swing.BoxLayout;
import javax.swing.JInternalFrame;
Expand Down Expand Up @@ -47,7 +48,8 @@ public class SimPathsStart implements ExperimentBuilder {

private static boolean showGui = true; // Show GUI by default

private static boolean setupOnly = false;
private static boolean doSetup = true;
private static boolean doRun = true;

private static boolean rewritePolicySchedule = false;

Expand All @@ -70,13 +72,13 @@ public static void main(String[] args) {
runGUIdialog();
} else {
try {
runGUIlessSetup(4);
if (doSetup) runGUIlessSetup(4);
} catch (FileNotFoundException f) {
System.err.println(f.getMessage());
};
}

if (setupOnly) {
if (!doRun) {
System.out.println("Setup complete, exiting.");
return;
}
Expand All @@ -93,6 +95,7 @@ public static void main(String[] args) {
startYear = Integer.parseInt(valueYear);

// start the JAS-mine simulation engine
System.out.println("Starting simulation...");
final SimulationEngine engine = SimulationEngine.getInstance();
MicrosimShell gui = null;
if (showGui) {
Expand All @@ -102,6 +105,22 @@ public static void main(String[] args) {
SimPathsStart experimentBuilder = new SimPathsStart();
engine.setExperimentBuilder(experimentBuilder);
engine.setup();

if (!showGui) {
engine.startSimulation();
try {
while (engine.getRunningStatus()) {
try {
TimeUnit.SECONDS.sleep(10);
} catch (InterruptedException e) {
System.err.println("Interrupted while waiting for simulation to complete.");
return;
}
}
} finally {
engine.quit();
}
}
}

private static boolean parseCommandLineArgs(String[] args) {
Expand All @@ -115,9 +134,12 @@ private static boolean parseCommandLineArgs(String[] args) {
startYearOption.setArgName("year");
options.addOption(startYearOption);

Option setupOption = new Option("Setup", "Setup only");
Option setupOption = new Option("Setup", "Setup only (no run)");
options.addOption(setupOption);

Option runOption = new Option("Run", "Run only (no setup)");
options.addOption(runOption);

Option rewritePolicyScheduleOption = new Option("r", "rewrite-policy-schedule",false, "Re-write policy schedule from detected policy files");
options.addOption(rewritePolicyScheduleOption);

Expand All @@ -135,6 +157,10 @@ private static boolean parseCommandLineArgs(String[] args) {
try {
CommandLine cmd = parser.parse(options, args);

if(cmd.hasOption("Setup") && cmd.hasOption("Run")) {
throw new ParseException("'Run only' and 'Setup only' options cannot be used together.");
}

if (cmd.hasOption("h")) {
printHelpMessage(formatter, options);
return false; // Exit without reporting an error
Expand All @@ -157,7 +183,13 @@ private static boolean parseCommandLineArgs(String[] args) {
}

if (cmd.hasOption("Setup")) {
setupOnly = true;
doSetup = true;
doRun = false;
}

if (cmd.hasOption("Run")) {
doRun = true;
doSetup = false;
}

if (cmd.hasOption("r")) {
Expand Down Expand Up @@ -199,7 +231,7 @@ public void buildExperiment(SimulationEngine engine) {

engine.addSimulationManager(model);
engine.addSimulationManager(collector);
engine.addSimulationManager(observer);
if (showGui) engine.addSimulationManager(observer);

model.setCollector(collector);
}
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/simpaths/model/SimPathsModel.java
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ public void setFirstRun(boolean firstRun) {
private boolean flagUpdateCountry = false; // set to true if switch between countries

@GUIparameter(description = "Simulated population size (base year)")
private Integer popSize = 170000;
private Integer popSize = 50000;

@GUIparameter(description = "Simulation first year [valid range 2011-2019]")
private Integer startYear = 2011;
Expand Down