## 2 Materials and Methods
### The Mixed-Integer and Asynchronous Level Decomposition
for\(\mathrm{k}\gets 1\) to \(\mathrm{k}+1\)do
3. if (5) does not hold and \(\mathrm{rr}=0\)then
4.\(\mathbf{\overline{x}}_{\mathrm{k}}\leftarrow\mathbf{x}_{\mathrm{k}}\), \(\mathrm{rr}\leftarrow\mathbf{w}\), \(\overline{f}\leftarrow\)\(\mathrm{c}^{\mathrm{T}}\mathbf{\overline{x}}_{\mathrm{k}}\) and \(\overline{g}\leftarrow\mathbf{c}\)
5. for all j \(\in\mathcal{A}\)do
6. to coordinate[j] \(\leftarrow\)false and
7. coordinating[j] \(\leftarrow\)true
8. endfor
9. for all j \(\in\{1,\ldots,w\}\backslash\mathcal{A}\)do
10. to coordinate[j] \(\leftarrow\)true and
11. coordinating[j] \(\leftarrow\)false
12. endfor
13. endif
14. Send \(\mathbf{x}_{\mathrm{k}}\) to all available workers \(\mathrm{j}\in\mathcal{A}\) and set \(\mathcal{A}=\varnothing\)
15. Update the set \(\mathcal{A}\) of idle workers and receive \((f^{j}(\mathbf{x}_{a(\mathcal{J})}),g^{j}_{a(\mathcal{J})})\) from workers \(\mathrm{j}\in\mathcal{A}\)
16. Update \(\mathcal{J}\leftarrow\mathcal{J}^{\mathrm{j}}\cup\{a(\mathcal{J})\}\) for all j \(\in\mathcal{A}\) and set \(\mathcal{R}\leftarrow\varnothing\)
17. for all j \(\in\mathcal{A}\)do
18. if coordinating[j] \(=\)true then
19. coordinating[j] \(\leftarrow\)false and \(\mathrm{rr}\leftarrow\mathrm{rr}-1\)
20. \(\overline{f}\leftarrow\overline{f}+\mathcal{J}(\mathbf{\overline{x}}_{a( \mathcal{J})})\) and \(\overline{g}\leftarrow\overline{g}+\delta^{j}_{a(\mathcal{J})}\)
21. if \(\mathrm{rr}=0\)then
22. Set \(L\leftarrow\max\{L,\big{\|}\overline{g}\big{\|}\}\)
23. if\(\overline{f}<f_{k}^{\mathrm{up}}\)then
24. \(f_{k}^{\mathrm{up}}-f\) and \(\mathbf{x}_{\mathrm{best}}\leftarrow\mathbf{\overline{x}}_{\mathrm{k}}\)
25. endif
26. endif
27. else
28. if to_coordinate[j] \(=\)true then
29. Send \(\mathbf{\overline{x}}_{\mathrm{k}}\) to worker \(\mathrm{j}\) and set \(\mathcal{R}\leftarrow\mathcal{R}\cup\{\mathrm{j}\}\)
30. Set to_coordinate[j] \(\leftarrow\)false and
31. coordinating[j] \(\leftarrow\)true
32. endif
33. endif
34. endfor
35. Set \(\mathcal{A}\leftarrow\mathcal{A}\backslash\mathcal{R}\)
36. Set \(\Delta_{k}\leftarrow f_{k}^{\mathrm{up}}-f_{k}^{\mathrm{low}}\)
37. if \(\Delta_{k}\leq\mathrm{tol}_{\Delta}\)then stop: return \(\mathbf{x}_{\mathrm{best}}\) and \(f_{k}^{\mathrm{up}}\)end if
38. if \(\Delta_{k}\leq\alpha\Delta\)then Set \(\mathbf{\hat{x}}_{\mathrm{k}}\leftarrow\mathbf{x}_{\mathrm{best}}\) and \(\Delta\leftarrow\Delta_{k}\)end if
39. \(\mathbf{\hat{x}}_{\mathrm{k}}^{\mathrm{up}}\leftarrow\)\(f_{k}^{\mathrm{up}}-\alpha\Delta_{k}\)
40. if (4) is feasible then
41. Get a new iterate \(\mathbf{x}_{\mathrm{k}+1}\) from the solution of (4)
42. else
43. Set \(f_{k}^{\mathrm{low}}\leftarrow\)\(f_{k}^{\mathrm{dev}}\) and go to Step 36
44. endif
45. if \(\mathbf{x}_{\mathrm{k}+1}\) leads to infeasible subproblems then
46. Add a feasibility cut to the MP (2) and go to Step 40
47. endif
48. Set \(f_{k+1}^{\mathrm{up}}\leftarrow f_{k}^{\mathrm{up}},f_{k+1}^{\mathrm{low}} \leftarrow f_{k}^{\mathrm{low}},\mathbf{\hat{x}}_{\mathrm{k}+1}\leftarrow \mathbf{\hat{x}}_{\mathrm{k}}\) and \(\mathbf{\overline{x}}_{\mathrm{k}+1}\leftarrow\mathbf{\overline{x}}_{\mathrm{k}}\)
49. endfor
```  
**Algorithm 1**Asynchronous Level Decomposition.