Vogel's approximation method: Difference between revisions

→‎{{header|Java}}: do col search and row search simultaneously
(→‎{{header|Java}}: added Java)
(→‎{{header|Java}}: do col search and row search simultaneously)
Line 171:
<lang java>import java.util.Arrays;
import static java.util.Arrays.stream;
import java.util.concurrent.*;
 
public class VogelsApproximationMethod {
Line 186 ⟶ 187:
static int[][] result = new int[nRows][nCols];
 
static ExecutorService es = Executors.newFixedThreadPool(2);
public static void main(String[] args) {
 
public static void main(String[] args) throws Exception {
int supplyLeft = stream(supply).sum();
int totalCost = 0;
Line 212 ⟶ 215:
stream(result).forEach(a -> System.out.println(Arrays.toString(a)));
System.out.println("Total cost: " + totalCost);
 
es.shutdown();
}
 
static int[] nextCell() throws Exception {
Future<int[]> res1f1 = es.submit(() -> maxPenalty(nRows, nCols, true));
Future<int[]> res2f2 = es.submit(() -> maxPenalty(nCols, nRows, false));
 
int[] res1 = f1.get();
int[] res2 = f2.get();
 
if (res1[3] == res2[3])
return res1[2] < res2[2] ? res1 : res2;
 
return (res1[3] > res2[3]) ? res2 : res1;
}
Anonymous user