improve graph nodes

master
agp8x 2023-04-12 11:19:02 +02:00
parent a2db6b7765
commit f8bdb9902b
4 changed files with 16 additions and 4 deletions

View File

@ -128,6 +128,7 @@ public class Test {
new Production(Database.IronPlate, 1));
planFor("p3_acu", new Production(Database.AdaptiveControlUnit, 1));
planFor("p3_me", new Production(Database.ModularEngine, 1));
planFor("p3_me_acu", new Production(Database.ModularEngine, 1), new Production(Database.AdaptiveControlUnit, 1));
planFor("p3_vf", new Production(Database.VersatileFrameWork, 1));
planFor("screw", new Production(Database.ReinforcedIronPlate, 1));
planFor("rotor", new Production(Database.Rotor, 1));

View File

@ -106,8 +106,15 @@ public class Utils {
if (item.isRaw()) {
m.put("peripheries", DefaultAttribute.createAttribute(2));
}
Double required = sum.outgoingEdgesOf(item).stream().map(ProductionEdge::getTotalRequired).reduce(Double::sum).orElseGet(() -> 0.0);
String label = "%s \n(%.1f)" .formatted(item.getName(), required );
double required = sum.outgoingEdgesOf(item).stream().map(ProductionEdge::getTotalRequired).reduce(Double::sum).orElseGet(() -> Double.NaN);
double instances = sum.outgoingEdgesOf(item).stream().map(ProductionEdge::getInstances).reduce(Double::sum).orElseGet(() -> Double.NaN);
String buildingName = item.getRecipe().getBuilding().getName();
if (Double.isNaN(required) || Double.isNaN(instances)) {
required = -sum.incomingEdgesOf(item).stream().map(ProductionEdge::getTotalRequired).reduce(Double::sum).orElseGet(() -> Double.NaN);
instances = 0;
buildingName = "";
}
String label = "%s \n(%.1f||%.1f)\n%s".formatted(item.getName(), required, instances,buildingName);
m.put("label", DefaultAttribute.createAttribute(label));
return m;
});

View File

@ -199,6 +199,7 @@ public class Recipe {
buildGraph.incomingEdgesOf(item)
.stream()
.map(buildGraph::getEdgeSource)
//.filter(item1 -> !item.getRecipe().isByProduct(item1))
.forEach(queue::add);
}
// *this* item
@ -211,13 +212,15 @@ public class Recipe {
// product is by-product, no forward dependency
System.out.println("BY-PRODUCT " + item.getName() + " -> " + product.getName() + "... " + queue);
byProducts.add(product);
//visited.add(product);
continue;
}
if (queue.contains(product) || productWantedPerMinute == null) {
// defer update, no all usages are expanded yet
System.err.println("product still queued or productWantedPerMinute null for '" + product.getName() + "' from '" + item.getName() + "'");
sum = 0;
queue.add(item);
//if (!item.getRecipe().isByProduct(product)){
queue.add(item);//}
break;
}
double amountNeeded = buildGraph.getEdgeWeight(edge);

View File

@ -47,7 +47,8 @@ class ItemTest {
@Test
void productionUraniumFuelRod(){
test(Database.UraniumFuelRod, "uranium_fuel_rod");
//test(Database.UraniumFuelRod, "uranium_fuel_rod");
fail();
}
}