With v51.1.0 the IntegerSolver got redesigned in terms of how it multi-threads as well as how it can be configured.

With most, if not all, tests the new design performs much better – it finishes faster and use less resources while it’s running! That’s with the default settings. Perhaps the most important news is the extensive configuration possibilities introduced. Being able to control how a MIP solver works is often crucial to finding a solution. To fully exploit these configurations you need to know how a MIP solver works, and learn details on how ojAlgo is implemented, but some basic stuff is relatively easy to start experimenting with.

The example below demonstrates some of the more accessible configurations, and points you in the right direction to learn more on the details of how ojAlgo works in this respect.

Most likely the API of the configuration interfaces and classes will see changes in coming versions. This is just a beginning.

Example Code

Console Output

class MIPStrategyConfiguration
ojAlgo
2022-03-16


First attempt with configured strategy
===============================================================================

[224.96666666666667, Infinity] -> FEASIBLE 236.3 @ { 35.0, 0.0, 0.0, 0.0, 5.0, 5.0, 0.0, 0.0, 25.0, 10.0, 0.0, 0.0, 0.0, 15.0, 0.0, 5.0, 0.0, 0.0, 0.0, 15.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0 }
	 @ 22 (19) 15=0.6666666666666667 224.96666666666667 [0=0<1, 1=0<0, 2=0<0, 3=0<0, 4=0<1, 5=0<1, 6=0<0, 7=0<0, 8=1<1, 9=1<1, 10=0<1, 11=0<1, 12=0<1, 13=1<1, 14=0<1, 15=1<1, 16=0<1, 17=0<1, 18=0<1, 19=0<1, 20=0<0, 21=0<0, 22=0<1, 23=0<1]
[225.05, 236.3] -> FEASIBLE 240.05 @ { 35.0, 0.0, 0.0, 0.0, 5.0, 5.0, 0.0, 0.0, 20.0, 15.0, 0.0, 0.0, 0.0, 15.0, 5.0, 0.0, 0.0, 0.0, 0.0, 15.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0 }
	 @ 24 (21) 14=0.75 225.05 [0=0<1, 1=0<0, 2=0<0, 3=0<0, 4=0<1, 5=0<1, 6=0<0, 7=0<0, 8=1<1, 9=1<1, 10=0<1, 11=0<1, 12=0<1, 13=1<1, 14=1<1, 15=0<0, 16=0<1, 17=0<1, 18=0<1, 19=0<1, 20=0<0, 21=0<0, 22=0<1, 23=0<1]
[215.41666666666666, 236.3] -> FEASIBLE 221.75 @ { 35.0, 0.0, 5.0, 0.0, 5.0, 0.0, 0.0, 0.0, 20.0, 15.0, 0.0, 0.0, 0.0, 20.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.0, 0.0, 0.0, 0.0, 5.0, 1.0, 0.0, 1.0, 1.1102230246251565E-16, 1.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0 }
	 @ 28 (18) 19=0.33333333333333326 215.41666666666666 [0=0<1, 1=0<0, 2=1<1, 3=0<1, 4=0<1, 5=0<1, 6=0<0, 7=0<0, 8=1<1, 9=1<1, 10=0<1, 11=0<1, 12=0<1, 13=1<1, 14=0<1, 15=0<1, 16=0<1, 17=0<1, 18=0<1, 19=1<1, 20=0<0, 21=0<0, 22=0<1, 23=0<1]
[216.26666666666668, 221.75] -> FEASIBLE 222.60000000000002 @ { 35.0, 0.0, 0.0, 5.0, 5.0, 0.0, 0.0, 0.0, 25.0, 10.0, 0.0, 0.0, 0.0, 20.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.0, 0.0, 0.0, 0.0, 5.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0 }
	 @ 26 (20) 19=0.33333333333333326 216.26666666666668 [0=0<1, 1=0<0, 2=0<0, 3=1<1, 4=0<1, 5=0<1, 6=0<0, 7=0<0, 8=1<1, 9=1<1, 10=0<1, 11=0<1, 12=0<1, 13=1<1, 14=0<1, 15=0<1, 16=0<1, 17=0<1, 18=0<1, 19=1<1, 20=0<0, 21=0<0, 22=0<1, 23=0<1]
[207.13333333333333, 221.75] -> FEASIBLE 217.8 @ { 35.0, 10.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 20.0, 15.0, 0.0, 0.0, 0.0, 20.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.0, 0.0, 5.0, 5.0, 1.0, 1.0, 0.0, 0.0, 0.0, 5.149274756588439E-17, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 6.938893903907228E-17, 1.0, 0.0, 0.0, 0.0, 0.0, 5.551115123125783E-17, 0.0, 1.0, 0.0, 1.0, 1.0 }
	 @ 31 (14) 1=0.6666666666666666 207.13333333333333 [0=0<1, 1=1<1, 2=0<1, 3=0<1, 4=0<1, 5=0<1, 6=0<0, 7=0<0, 8=1<1, 9=1<1, 10=0<1, 11=0<1, 12=0<1, 13=1<1, 14=0<1, 15=0<1, 16=0<1, 17=0<1, 18=0<1, 19=0<1, 20=1<1, 21=0<0, 22=0<1, 23=0<1]
[202.88333333333333, 217.8] -> FEASIBLE 213.55 @ { 35.0, 10.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 25.0, 10.0, 0.0, 0.0, 0.0, 20.0, 0.0, 0.0, 3.3306690738754696E-16, 0.0, 1.2212453270876722E-15, 0.0, 2.220446049250313E-16, 5.0, 5.0, 5.000000000000001, 1.0, 1.0, -2.2759572004815717E-17, 0.0, 0.0, 6.745220354487106E-17, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 6.938893903907227E-18, 1.0, 0.0, 0.0, -2.7755575615628914E-17, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0 }
	 @ 34 (12) 1=0.6666666666666667 202.88333333333333 [0=0<1, 1=1<1, 2=0<1, 3=0<1, 4=0<1, 5=0<1, 6=0<0, 7=0<0, 8=1<1, 9=1<1, 10=0<1, 11=0<1, 12=0<1, 13=1<1, 14=0<1, 15=0<1, 16=0<1, 17=0<1, 18=0<1, 19=0<1, 20=0<1, 21=1<1, 22=0<1, 23=0<1]
[198.03333333333333, 213.55] -> FEASIBLE 208.7 @ { 35.0, 10.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 25.0, 0.0, 5.0, 5.0, 0.0, 20.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.999999999999996, 0.0, 0.0, 1.0, 1.0, 0.0, 1.1102230246251565E-16, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.1102230246251565E-16, 0.0, 0.0, 0.9999999999999999, 0.0, 0.0 }
	 @ 42 (7) 1=0.6666666666666666 198.03333333333333 [0=0<1, 1=1<1, 2=0<1, 3=0<1, 4=0<1, 5=0<1, 6=0<0, 7=0<0, 8=0<1, 9=0<0, 10=0<1, 11=0<1, 12=0<1, 13=1<1, 14=0<1, 15=0<1, 16=0<1, 17=0<1, 18=0<1, 19=0<1, 20=0<1, 21=0<1, 22=0<1, 23=0<1]
[200.2142857142857, 208.7] -> FEASIBLE 206.5 @ { 15.0, 30.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 25.0, 0.0, 5.0, 5.0, 20.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.0, 0.0, 0.0, 1.0, 1.0, 0.0, -6.938893903907228E-17, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, -6.938893903907228E-17, 0.0, 0.0, 1.0, 0.0, 0.0 }
	 @ 120 (63) 0=0.5714285714285714 200.2142857142857 [0=1<1, 1=0<1, 2=0<1, 3=0<1, 4=0<1, 5=0<1, 6=0<0, 7=0<0, 8=0<1, 9=0<0, 10=0<1, 11=0<1, 12=0<1, 13=0<0, 14=0<1, 15=0<1, 16=0<1, 17=0<1, 18=0<1, 19=0<0, 20=0<1, 21=0<1, 22=0<1, 23=0<1]
[201.89999999999998, 206.5] -> FEASIBLE 202.34999999999997 @ { 20.0, 0.0, 25.0, 0.0, 0.0, 0.0, 2.220446049250313E-15, 30.0, 0.0, 0.0, 0.0, 5.0, 14.999999999999996, 0.0, 0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 15.0, 0.0, 0.0, 1.0, 4.85722573273506E-17, 1.0, 0.0, 0.0, 1.2963000117771623E-16, -3.469446951953614E-18, 1.0, 0.0, 0.0, 0.0, 0.9999999999999999, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0 }
	 @ 146 (136) 2=0.20000000000000007 201.89999999999998 [0=1<1, 1=0<1, 2=1<1, 3=0<0, 4=0<1, 5=0<1, 6=0<1, 7=1<1, 8=0<1, 9=0<0, 10=0<1, 11=0<1, 12=1<1, 13=0<1, 14=0<1, 15=0<0, 16=0<1, 17=0<1, 18=0<1, 19=0<1, 20=0<1, 21=0<1, 22=0<1, 23=0<1]
Done 182 IntegerSolver iterations in 0.220103605s with NodeStatistics [I=9, E=1, S=81, A=1]
OPTIMAL 202.35 @ { 2E+1, 0, 25, 0, 0, 0, 0, 3E+1, 0, 0, 0, 5, 15, 0, 0, 0, 5, 0, 0, 0, 0, 15, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 }

Should perhaps have tried with the default settings first...
===============================================================================

[224.96666666666667, Infinity] -> FEASIBLE 236.3 @ { 35.0, 0.0, 0.0, 0.0, 5.0, 5.0, 0.0, 0.0, 25.0, 10.0, 0.0, 0.0, 0.0, 15.0, 0.0, 5.0, 0.0, 0.0, 0.0, 15.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0 }
	 @ 204 (201) 15=0.6666666666666667 224.96666666666667 [0=0<1, 1=0<0, 2=0<0, 3=0<0, 4=0<1, 5=0<1, 6=0<0, 7=0<0, 8=1<1, 9=1<1, 10=0<1, 11=0<1, 12=0<1, 13=1<1, 14=0<1, 15=1<1, 16=0<1, 17=0<1, 18=0<1, 19=0<1, 20=0<0, 21=0<0, 22=0<1, 23=0<1]
[225.05, 236.3] -> FEASIBLE 240.05 @ { 35.0, 0.0, 0.0, 0.0, 5.0, 5.0, 0.0, 0.0, 20.0, 15.0, 0.0, 0.0, 0.0, 15.0, 5.0, 0.0, 0.0, 0.0, 0.0, 15.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0 }
	 @ 206 (203) 14=0.75 225.05 [0=0<1, 1=0<0, 2=0<0, 3=0<0, 4=0<1, 5=0<1, 6=0<0, 7=0<0, 8=1<1, 9=1<1, 10=0<1, 11=0<1, 12=0<1, 13=1<1, 14=1<1, 15=0<0, 16=0<1, 17=0<1, 18=0<1, 19=0<1, 20=0<0, 21=0<0, 22=0<1, 23=0<1]
[216.26666666666668, 236.3] -> FEASIBLE 222.60000000000002 @ { 35.0, 0.0, 0.0, 5.0, 5.0, 0.0, 0.0, 0.0, 25.0, 10.0, 0.0, 0.0, 0.0, 20.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.0, 0.0, 0.0, 0.0, 5.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0 }
	 @ 216 (202) 19=0.33333333333333326 216.26666666666668 [0=0<1, 1=0<0, 2=0<0, 3=1<1, 4=0<1, 5=0<1, 6=0<0, 7=0<0, 8=1<1, 9=1<1, 10=0<1, 11=0<1, 12=0<1, 13=1<1, 14=0<1, 15=0<1, 16=0<1, 17=0<1, 18=0<1, 19=1<1, 20=0<0, 21=0<0, 22=0<1, 23=0<1]
[202.88333333333333, 222.60000000000002] -> FEASIBLE 213.54999999999998 @ { 35.0, 10.000000000000004, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 25.0, 10.0, 8.881784197001252E-16, 8.326672684688694E-17, 0.0, 19.999999999999996, 0.0, 0.0, 2.109423746787798E-15, 0.0, 0.0, 0.0, 0.0, 5.000000000000001, 4.999999999999997, 5.0, 0.9999999999999998, 1.0, -2.7755575615628914E-17, 0.0, 0.0, 1.4988010832439607E-16, 0.0, 0.0, 1.0, 1.0, 0.0, 1.6653345369377388E-17, 0.0, 1.0, 0.0, 0.0, 4.163336342344338E-16, 1.4637067577343014E-32, -1.3299546649155492E-17, 0.0, 0.0, 1.0, 0.9999999999999996, 1.0 }
	 @ 220 (194) 1=0.6666666666666666 202.88333333333333 [0=0<1, 1=1<1, 2=0<1, 3=0<1, 4=0<1, 5=0<1, 6=0<0, 7=0<0, 8=1<1, 9=1<1, 10=0<1, 11=0<1, 12=0<1, 13=1<1, 14=0<1, 15=0<1, 16=0<1, 17=0<1, 18=0<1, 19=0<1, 20=0<1, 21=1<1, 22=0<1, 23=0<1]
[198.03333333333333, 213.54999999999998] -> FEASIBLE 208.7 @ { 35.0, 10.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 25.0, 0.0, 5.0, 5.0, 0.0, 20.0, 0.0, -2.7755575615628914E-17, 0.0, 0.0, 0.0, 0.0, 0.0, 15.0, 0.0, 0.0, 1.0, 1.0, 0.0, -8.557969148152249E-18, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0, 0.0, -1.8503717077085942E-18, 0.0, 0.0, -1.0408340855860843E-17, 0.0, 0.0, 1.0, 0.0, 0.0 }
	 @ 238 (189) 1=0.6666666666666666 198.03333333333333 [0=0<1, 1=1<1, 2=0<1, 3=0<1, 4=0<1, 5=0<1, 6=0<0, 7=0<0, 8=0<1, 9=0<0, 10=0<1, 11=0<1, 12=0<1, 13=1<1, 14=0<1, 15=0<1, 16=0<1, 17=0<1, 18=0<1, 19=0<1, 20=0<1, 21=0<1, 22=0<1, 23=0<1]
[203.43333333333337, 208.7] -> FEASIBLE 206.5 @ { 15.0, 30.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 25.0, 0.0, 5.0, 5.0, 20.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.0, 0.0, 0.0, 1.0, 1.0, 0.0, 1.3877787807814457E-17, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.3877787807814457E-17, 0.0, 0.0, 1.0, 0.0, 0.0 }
	 @ 279 (250) 9=0.33333333333333354 203.43333333333337 [0=1<1, 1=0<1, 2=0<1, 3=0<1, 4=0<1, 5=0<1, 6=0<0, 7=0<0, 8=0<1, 9=0<0, 10=0<1, 11=0<1, 12=0<1, 13=0<0, 14=0<1, 15=0<1, 16=0<1, 17=0<1, 18=0<1, 19=0<0, 20=0<1, 21=1<1, 22=0<1, 23=0<1]
[197.2642857142857, 206.5] -> FEASIBLE 202.34999999999997 @ { 20.0, 0.0, 25.0, 0.0, 0.0, 0.0, 2.220446049250313E-15, 30.0, 0.0, 0.0, 0.0, 5.0, 14.999999999999996, 0.0, 0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 15.0, 0.0, 0.0, 1.0, 4.85722573273506E-17, 1.0, 0.0, 0.0, 1.2963000117771623E-16, -3.469446951953614E-18, 1.0, 0.0, 0.0, 0.0, 0.9999999999999999, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0 }
	 @ 266 (239) 0=0.5714285714285714 197.2642857142857 [0=1<1, 1=0<1, 2=1<1, 3=0<0, 4=0<1, 5=0<1, 6=0<1, 7=1<1, 8=0<1, 9=0<0, 10=0<1, 11=0<1, 12=1<1, 13=0<1, 14=0<1, 15=0<0, 16=0<1, 17=0<1, 18=0<1, 19=0<1, 20=0<1, 21=0<1, 22=0<1, 23=0<1]
Done 147 IntegerSolver iterations in 0.054456187s with NodeStatistics [I=7, E=8, S=51, A=16]
OPTIMAL 202.35 @ { 2E+1, 0, 25, 0, 0, 0, 0, 3E+1, 0, 0, 0, 5, 15, 0, 0, 0, 5, 0, 0, 0, 0, 15, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 }

The default configuration with just a small adjustment to the MIP gap tolerance
===============================================================================

[224.96666666666667, Infinity] -> FEASIBLE 236.3 @ { 35.0, 0.0, 0.0, 0.0, 5.0, 5.0, 0.0, 0.0, 25.0, 10.0, 0.0, 0.0, 0.0, 15.0, 0.0, 5.0, 0.0, 0.0, 0.0, 15.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0 }
	 @ 366 (363) 15=0.6666666666666667 224.96666666666667 [0=0<1, 1=0<0, 2=0<0, 3=0<0, 4=0<1, 5=0<1, 6=0<0, 7=0<0, 8=1<1, 9=1<1, 10=0<1, 11=0<1, 12=0<1, 13=1<1, 14=0<1, 15=1<1, 16=0<1, 17=0<1, 18=0<1, 19=0<1, 20=0<0, 21=0<0, 22=0<1, 23=0<1]
[225.05, 236.3] -> FEASIBLE 240.05 @ { 35.0, 0.0, 0.0, 0.0, 5.0, 5.0, 0.0, 0.0, 20.0, 15.0, 0.0, 0.0, 0.0, 15.0, 5.0, 0.0, 0.0, 0.0, 0.0, 15.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0 }
	 @ 368 (365) 14=0.75 225.05 [0=0<1, 1=0<0, 2=0<0, 3=0<0, 4=0<1, 5=0<1, 6=0<0, 7=0<0, 8=1<1, 9=1<1, 10=0<1, 11=0<1, 12=0<1, 13=1<1, 14=1<1, 15=0<0, 16=0<1, 17=0<1, 18=0<1, 19=0<1, 20=0<0, 21=0<0, 22=0<1, 23=0<1]
[216.26666666666668, 236.3] -> FEASIBLE 222.60000000000002 @ { 35.0, 0.0, 0.0, 5.0, 5.0, 0.0, 0.0, 0.0, 25.0, 10.0, 0.0, 0.0, 0.0, 20.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.0, 0.0, 0.0, 0.0, 5.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0 }
	 @ 376 (364) 19=0.33333333333333326 216.26666666666668 [0=0<1, 1=0<0, 2=0<0, 3=1<1, 4=0<1, 5=0<1, 6=0<0, 7=0<0, 8=1<1, 9=1<1, 10=0<1, 11=0<1, 12=0<1, 13=1<1, 14=0<1, 15=0<1, 16=0<1, 17=0<1, 18=0<1, 19=1<1, 20=0<0, 21=0<0, 22=0<1, 23=0<1]
[215.41666666666666, 222.60000000000002] -> FEASIBLE 221.75 @ { 34.99999999999999, 0.0, 5.0, 1.7763568394002505E-15, 5.0, 0.0, 0.0, 0.0, 20.0, 14.999999999999998, 0.0, 4.440892098500627E-16, 0.0, 20.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.0, 0.0, 0.0, 0.0, 5.000000000000001, 1.0, 0.0, 1.0, 1.1102230246251565E-16, 1.0, 4.7184478546569146E-17, 0.0, 0.0, 1.0, 1.0, 0.0, 8.881784197001254E-17, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0 }
	 @ 396 (362) 19=0.33333333333333326 215.41666666666666 [0=0<1, 1=0<0, 2=1<1, 3=0<1, 4=0<1, 5=0<1, 6=0<0, 7=0<0, 8=1<1, 9=1<1, 10=0<1, 11=0<1, 12=0<1, 13=1<1, 14=0<1, 15=0<1, 16=0<1, 17=0<1, 18=0<1, 19=1<1, 20=0<0, 21=0<0, 22=0<1, 23=0<1]
[212.94999999999996, 221.75] -> FEASIBLE 217.95 @ { 35.0, 10.000000000000005, 0.0, 0.0, 0.0, 0.0, 5.329070518200751E-15, 19.999999999999993, 15.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.0, 5.0, 0.0, 1.7698793819409534E-15, 0.0, 10.0, 9.59677651545105E-16, 0.0, 5.000000000000002, 1.0000000000000002, 1.0, 0.0, -9.529182998235798E-17, 0.0, 6.938893903907333E-18, 8.326672684688674E-17, 1.0, 1.0, 0.0, 0.0, 0.0, -1.816845285329549E-16, 1.1102230246251592E-17, -2.0747418514673906E-16, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0000000000000007 }
	 @ 438 (428) 20=0.3333333333333329 212.94999999999996 [0=0<1, 1=1<1, 2=0<0, 3=0<1, 4=0<1, 5=0<1, 6=0<1, 7=1<1, 8=1<1, 9=0<1, 10=0<1, 11=0<1, 12=0<1, 13=0<1, 14=0<1, 15=1<1, 16=0<1, 17=0<1, 18=0<1, 19=0<1, 20=1<1, 21=0<1, 22=0<1, 23=0<1]
[198.03333333333333, 217.95] -> FEASIBLE 208.7 @ { 35.0, 10.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 25.0, 0.0, 5.0, 5.0, 0.0, 20.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.999999999999998, 0.0, 0.0, 1.0, 1.0, 0.0, 2.7755575615628914E-17, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 2.7755575615628914E-17, 0.0, 0.0, 0.9999999999999999, 0.0, 0.0 }
	 @ 384 (351) 1=0.6666666666666666 198.03333333333333 [0=0<1, 1=1<1, 2=0<1, 3=0<1, 4=0<1, 5=0<1, 6=0<0, 7=0<0, 8=0<1, 9=0<0, 10=0<1, 11=0<1, 12=0<1, 13=1<1, 14=0<1, 15=0<1, 16=0<1, 17=0<1, 18=0<1, 19=0<1, 20=0<1, 21=0<1, 22=0<1, 23=0<1]
[197.2642857142857, 208.7] -> FEASIBLE 202.34999999999997 @ { 20.0, 1.27675647831893E-15, 25.0, 0.0, 0.0, 0.0, 1.7208456881689926E-15, 29.999999999999996, 0.0, 0.0, 0.0, 4.999999999999998, 15.0, 0.0, 0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 15.0, 0.0, 0.0, 1.0, 1.0177044392397267E-16, 1.0, 0.0, 0.0, 7.348011088481597E-17, 0.0, 1.0, 0.0, 0.0, 0.0, 0.9999999999999999, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0 }
	 @ 454 (403) 0=0.5714285714285714 197.2642857142857 [0=1<1, 1=0<1, 2=1<1, 3=0<0, 4=0<1, 5=0<1, 6=0<1, 7=1<1, 8=0<1, 9=0<0, 10=0<1, 11=0<1, 12=1<1, 13=0<1, 14=0<1, 15=0<0, 16=0<1, 17=0<1, 18=0<1, 19=0<1, 20=0<1, 21=0<1, 22=0<1, 23=0<1]
Done 112 IntegerSolver iterations in 0.04494194s with NodeStatistics [I=7, E=8, S=31, A=21]
OPTIMAL 202.35 @ { 2E+1, 0, 25, 0, 0, 0, 0, 3E+1, 0, 0, 0, 5, 15, 0, 0, 0, 5, 0, 0, 0, 0, 15, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 }