digraph ImagePredictionFlow { graph [fontname="Arial", fontsize="10", rankdir="TB"]; // Top-to-Bottom, Reduced Width node [shape="rect", style="rounded,filled", fontname="Arial", fontsize="10", fillcolor="lightblue", gradientangle="90"]; edge [fontname="Arial", fontsize="8"]; A [label="User Upload,\nPredict", fillcolor="lightgreen"]; //Shorter Label B [label="Img Pre-proc,\nAgent Init", fillcolor="lightyellow"]; subgraph cluster_models { label = "Model Ensemble"; style = "dashed"; ImageIn [shape=point, label="", width=0, height=0]; Model1 [label="Model1", fillcolor="lightcoral"]; //Shorter Labels Model2 [label="Model2", fillcolor="lightcoral"]; Model3 [label="Model3", fillcolor="lightcoral"]; Model4 [label="Model4", fillcolor="lightcoral"]; Model5 [label="Model5", fillcolor="lightcoral"]; Model6 [label="Model6", fillcolor="lightcoral"]; Model7 [label="Model7", fillcolor="lightcoral"]; WeightedConsensusInput [label="Model Results", fillcolor="lightyellow"]; //Shorter Label ImageIn -> Model1; ImageIn -> Model2; ImageIn -> Model3; ImageIn -> Model4; ImageIn -> Model5; ImageIn -> Model6; ImageIn -> Model7; Model1 -> WeightedConsensusInput; Model2 -> WeightedConsensusInput; Model3 -> WeightedConsensusInput; Model4 -> WeightedConsensusInput; Model5 -> WeightedConsensusInput; Model6 -> WeightedConsensusInput; Model7 -> WeightedConsensusInput; } ContextualIntelligenceAgent [label="Contextual\nIntelligence Agent", fillcolor="lightcyan"]; //Shorter Label BaggingAgent [label="BaggingAgent", fillcolor="lightcyan"]; //Shorter Label DeepEnsembleAgent [label="DeepEnsemble\nAgent", fillcolor="lightcyan"]; //Shorter Label EvolutionEnsembleAgent [label="EvolutionEnsemble\nAgent", fillcolor="lightcyan"]; //Shorter Label WeightManager [label="Weight\nManager", fillcolor="lightcyan"]; //Shorter Label WeightedConsensus [label="Weighted\nConsensus", fillcolor="lightgreen"]; OptimizeAgent [label="Weight\nOpt Agent", fillcolor="lightcyan"]; //Shorter Label subgraph cluster_forensics { label = "Forensic Analysis"; style = "dashed"; ForensicIn [shape=point, label="", width=0, height=0]; GradientProcessing [label="Gradient\nProcessing", fillcolor="lightpink"]; //Shorter Labels MinMaxProcessing [label="MinMax\nProcessing", fillcolor="lightpink"]; ELAPorcessing [label="ELAPorcessing", fillcolor="lightpink"]; BitPlaneExtraction [label="BitPlane\nExtraction", fillcolor="lightpink"]; WaveletBasedNoiseAnalysis [label="Wavelet\nNoise Analysis", fillcolor="lightpink"]; AnomalyAgent [label="Anomaly\nDetection", fillcolor="lightcyan"]; //Shorter Label ForensicIn -> GradientProcessing; ForensicIn -> MinMaxProcessing; ForensicIn -> ELAPorcessing; ForensicIn -> BitPlaneExtraction; ForensicIn -> WaveletBasedNoiseAnalysis; GradientProcessing -> AnomalyAgent; MinMaxProcessing -> AnomalyAgent; ELAPorcessing -> AnomalyAgent; BitPlaneExtraction -> AnomalyAgent; WaveletBasedNoiseAnalysis -> AnomalyAgent; } DataLoggingAndOutput [label="Data Logging\nOutput", fillcolor="lightsalmon"];//Shorter Label ResultsDisplay [label="Results", fillcolor="lightgreen"]; //Shorter Label // Connections A -> B; B -> ImageIn; WeightedConsensusInput -> ContextualIntelligenceAgent; WeightedConsensusInput -> BaggingAgent; WeightedConsensusInput -> DeepEnsembleAgent; WeightedConsensusInput -> EvolutionEnsembleAgent; // Connect agents ContextualIntelligenceAgent -> WeightManager; BaggingAgent -> WeightManager; DeepEnsembleAgent -> WeightManager; EvolutionEnsembleAgent -> WeightManager; // Agents to WM WeightManager -> WeightedConsensus; WeightedConsensus -> OptimizeAgent; OptimizeAgent -> WeightManager; WeightedConsensus -> ForensicIn; AnomalyAgent -> DataLoggingAndOutput; DataLoggingAndOutput -> ResultsDisplay; }