···11+Configuration,Data,Compile Time (s),Solve Time (s)
22+Base,gbac/UD2-gbac.dzn,25.458818981423974,17.341287191957235
33+Base,gbac/UD4-gbac.dzn,25.138776898384094,14.327164655551314
44+Base,gbac/UD5-gbac.dzn,28.67881595157087,19.71248783171177
55+Base,gbac/UD8-gbac.dzn,27.21088409423828,25.1462098434567
66+Base,gbac/reduced_UD4-gbac.dzn,22.770592607557774,6.444738935679197
77+Incremental Rewriting,gbac/UD2-gbac.dzn,0.44289878150448203,16.619278862606734
88+Incremental Rewriting,gbac/UD4-gbac.dzn,0.2829281724989414,14.927907383069396
99+Incremental Rewriting,gbac/UD5-gbac.dzn,0.5103892032057047,18.957355537917465
1010+Incremental Rewriting,gbac/UD8-gbac.dzn,0.39341115299612284,24.45117470016703
1111+Incremental Rewriting,gbac/reduced_UD4-gbac.dzn,0.13793163280934095,7.798715312965214
1212+Restart Based Search,gbac/UD2-gbac.dzn,0.24477300000000002,10.421576
1313+Restart Based Search,gbac/UD4-gbac.dzn,0.1655035,5.5756935
1414+Restart Based Search,gbac/UD5-gbac.dzn,0.35128000000000004,19.6692045
1515+Restart Based Search,gbac/UD8-gbac.dzn,0.18578899999999998,22.257126
1616+Restart Based Search,gbac/reduced_UD4-gbac.dzn,0.076363,5.0173045
+28
output/radiation.csv
···11+Configuration,Data,Compile Time (s),Solve Time (s)
22+Base,radiation/01.dzn,0.24510734984651208,0.023913082107901572
33+Base,radiation/02.dzn,0.30582690900191667,0.028090783022344114
44+Base,radiation/03.dzn,0.3193663267418742,0.031867857277393344
55+Base,radiation/04.dzn,0.39944209847599266,0.06285300282761455
66+Base,radiation/05.dzn,0.3814492827281356,0.07408921113237739
77+Base,radiation/06.dzn,0.42284395741298797,0.0830705595202744
88+Base,radiation/07.dzn,0.3188631976954639,0.03759916163980961
99+Base,radiation/08.dzn,0.41931043174117805,0.16300638895481825
1010+Base,radiation/09.dzn,0.4676839098334312,0.2566952796652913
1111+Incremental Rewriting,radiation/01.dzn,0.01925070183351636,0.01717325309291482
1212+Incremental Rewriting,radiation/02.dzn,0.020097369328141212,0.014758218824863435
1313+Incremental Rewriting,radiation/03.dzn,0.019597070664167403,0.03506866861134768
1414+Incremental Rewriting,radiation/04.dzn,0.020147585589438678,0.046414986718446016
1515+Incremental Rewriting,radiation/05.dzn,0.020718697272241116,0.07127303797751665
1616+Incremental Rewriting,radiation/06.dzn,0.020426739938557148,0.0479787765070796
1717+Incremental Rewriting,radiation/07.dzn,0.020852961204946042,0.031166965235024692
1818+Incremental Rewriting,radiation/08.dzn,0.020653770212084054,0.240933208912611
1919+Incremental Rewriting,radiation/09.dzn,0.020874314848333596,0.23791785333305598
2020+Restart Based Search,radiation/01.dzn,0.0397587,0.0156963
2121+Restart Based Search,radiation/02.dzn,0.03960400000000001,0.012639799999999998
2222+Restart Based Search,radiation/03.dzn,0.039819400000000005,0.018935200000000003
2323+Restart Based Search,radiation/04.dzn,0.044984100000000006,0.03167359999999999
2424+Restart Based Search,radiation/05.dzn,0.045806799999999995, 0.068683
2525+Restart Based Search,radiation/06.dzn,0.0460396,0.0317119
2626+Restart Based Search,radiation/07.dzn,0.048206399999999996,0.016760999999999998
2727+Restart Based Search,radiation/08.dzn,0.048394900000000005,0.1321796
2828+Restart Based Search,radiation/09.dzn,0.048275,0.1422641
···11+%-----------------------------------------------------------------------------%
22+% Radiation problem, MiniZinc 2.0.4 version
33+%
44+%-----------------------------------------------------------------------------%
55+66+%-----------------------------------------------------------------------------%
77+% Parameters
88+%-----------------------------------------------------------------------------%
99+1010+int: m; % Rows
1111+int: n; % Columns
1212+1313+set of int: Rows = 1..m;
1414+set of int: Columns = 1..n;
1515+1616+ % Intensity matrix
1717+array[Rows, Columns] of int: Intensity;
1818+1919+2020+set of int: BTimes = 1..Bt_max;
2121+2222+int: Bt_max = max(i in Rows, j in Columns) (Intensity[i,j]);
2323+int: Ints_sum = sum(i in Rows, j in Columns) (Intensity[i,j]);
2424+2525+%-----------------------------------------------------------------------------%
2626+% Variables
2727+%-----------------------------------------------------------------------------%
2828+2929+ % Total beam-on time
3030+var 0..Ints_sum: Beamtime;
3131+3232+ % Number of shape matrices
3333+var 0..m*n: K;
3434+3535+ % N[b] is the number of shape matrices with associated beam-on time b
3636+array[BTimes] of var 0..m*n: N;
3737+3838+ % Q[i,j,b] is the number of shape matrices with associated beam-on time
3939+ % b that expose cell (i,j)
4040+array[Rows, Columns, BTimes] of var 0..m*n: Q;
4141+4242+%-----------------------------------------------------------------------------%
4343+% Constraints
4444+%-----------------------------------------------------------------------------%
4545+4646+ % For FD/LP hybrid solving, all these should go the LP solver
4747+ % (with a suitable linearisation of the 'max' expressions).
4848+constraint
4949+ Beamtime = sum(b in BTimes) (b * N[b])
5050+ /\
5151+ K = sum(b in BTimes) (N[b])
5252+ /\
5353+ forall(i in Rows, j in Columns)
5454+ ( Intensity[i,j] = sum([b * Q[i,j,b] | b in BTimes]) )
5555+ /\
5656+ forall(i in Rows, b in BTimes)
5757+ ( upper_bound_on_increments(N[b], [Q[i,j,b] | j in Columns]) );
5858+5959+6060+predicate upper_bound_on_increments(var int: N_b, array[int] of var int: L) =
6161+ N_b >= L[1] + sum([ max(L[j] - L[j-1], 0) | j in 2..n ]);
6262+ %
6363+ % Good linear version:
6464+ % let { array[min(index_set(L))..max(index_set(L))] of var int: S } in
6565+ % N_b >= L[1] + sum([ S[j] | j in 2..n ]) /\
6666+ % forall([ S[j] >= L[j] - L[j-1] /\ S[j] >= 0 | j in 2..n ]);
6767+6868+6969+%-----------------------------------------------------------------------------%
7070+output [
7171+ "Beamtime = \(Beamtime);\n",
7272+ "K = \(K);\n",
7373+ "N = \(N);\n",
7474+ "Q = array3d(\(Rows), \(Columns), \(BTimes), \(Q));\n"
7575+];
7676+7777+%-----------------------------------------------------------------------------%
+35
scatterplot.py
···11+#!/usr/bin/env python3
22+import sys
33+44+import numpy as np
55+import seaborn as sns
66+import matplotlib.pyplot as plt
77+import pandas as pd
88+import matplotlib as mpl
99+1010+if __name__ == "__main__":
1111+ data = pd.read_csv(sys.argv[1])
1212+1313+ sns.set(font_scale=1.24, style="whitegrid", font="IBM Plex Sans")
1414+ fig, ax = plt.subplots()
1515+1616+ plot = sns.scatterplot(
1717+ data=data,
1818+ x="Compile Time (s)",
1919+ y="Solve Time (s)",
2020+ hue="Configuration",
2121+ style="Configuration",
2222+ legend="gbac" in sys.argv[1],
2323+ )
2424+2525+ if "radiation" in sys.argv[1]:
2626+ ax.set_xlim(0, 0.5)
2727+ ax.set_ylim(0, 0.5)
2828+ elif "gbac" in sys.argv[1]:
2929+ handles, labels = ax.get_legend_handles_labels()
3030+ ax.legend(handles=handles, labels=labels)
3131+ plot.legend(bbox_to_anchor=(0.23, 0.95), loc="upper left", borderaxespad=0)
3232+ ax.set_xlim(0, 30)
3333+ ax.set_ylim(0, 30)
3434+3535+ plot.figure.savefig("output.pdf", bbox_inches="tight")