private void WaterJet() { var waterJet = CreateNewResource("WaterJetCutter", true, false); List <M_ResourceCapabilityProvider> capabilityProviders = new List <M_ResourceCapabilityProvider>(); List <M_ResourceSetup> setups = new List <M_ResourceSetup>(); foreach (var capability in _capability.Capabilities .Where(x => x.Name == _capability.CUTTING.Name || x.Name == _capability.DRILLING.Name) .Select(x => x.ChildResourceCapabilities)) { foreach (var subCapability in capability) { var capabilityProvider = new M_ResourceCapabilityProvider() { Name = $"Provides {subCapability.Name} {waterJet.Name}", ResourceCapabilityId = subCapability.Id, }; setups.Add(CreateNewSetup(waterJet, capabilityProvider, true, true, 5)); capabilityProviders.Add(capabilityProvider); } } CapabilityToSetupDict.Add($"{waterJet.Name} WaterJetCutter", setups); CapabilityProviderDict.Add($"{waterJet.Name} Resource", capabilityProviders); CapabilityToResourceDict.Add($"{waterJet.Name} Resource", new List <M_Resource> { waterJet }); }
private M_ResourceSetup CreatePhysicalToolResource(List <M_Resource> resourceToolsToAssign, M_ResourceCapability subCapability, List <M_ResourceSetup> setups, M_ResourceCapabilityProvider capabilityProvider) { var toolObject = resourceToolsToAssign.Single(x => x.Name.Equals(subCapability.Name)); return(CreateNewSetup(toolObject, capabilityProvider, true, true, 0)); }
private M_ResourceSetup CreateNewSetup(M_Resource resource, M_ResourceCapabilityProvider capabilityProvider, bool usedInProcessing, bool usedInSetup, long setupTime) { return(new M_ResourceSetup { ResourceCapabilityProviderId = capabilityProvider.Id, ResourceId = resource.Id, Name = $"Setup {capabilityProvider.Name} {resource.Name}", UsedInProcess = usedInProcessing, UsedInSetup = usedInSetup, SetupTime = setupTime }); }
/// <summary> /// Start the SetupPhase with the tool and make a flag for currently in setupPhase /// </summary> /// <param name="resourceTool"></param> /// <returns></returns> public bool Mount(M_ResourceCapabilityProvider resourceCapabilityProvider) { if (SetupPhase != false) { return(false); } ResourceCapabilityProvider = resourceCapabilityProvider; return(true); }
public static void PublishResourceSetup(Agent agent, long duration, M_ResourceCapabilityProvider capabilityProvider) { var pubSetup = new FCreateSimulationResourceSetup(expectedDuration: duration , duration: duration , start: agent.CurrentTime , capabilityProvider: capabilityProvider.Name , capabilityName: capabilityProvider.Name , setupId: capabilityProvider.Id); agent.Context.System.EventStream.Publish(@event: pubSetup); }
public static void PublishJob(Agent agent, IJob job, long duration, M_ResourceCapabilityProvider capabilityProvider, string bucket) { var pub = new FUpdateSimulationJob(job: job , duration: duration , start: agent.CurrentTime , capabilityProvider: agent.Name , jobType: JobType.OPERATION , bucket: bucket , setupId: capabilityProvider.Id); agent.Context.System.EventStream.Publish(@event: pub); }
public ProposalForCapabilityProvider(M_ResourceCapabilityProvider capabilityProvider) { _capabilityProvider = capabilityProvider; }
private void CreateTools(M_ResourceCapability capability, long setupTime, int numberOfOperators, List <M_Resource> workerToAssign, List <M_Resource> resourceToolsToAssign, String workergroup) { List <M_Resource> tools = new List <M_Resource>(); List <M_ResourceSetup> setups = new List <M_ResourceSetup>(); List <M_ResourceCapabilityProvider> capabilityProviders = new List <M_ResourceCapabilityProvider>(); List <M_Resource> operators = new List <M_Resource>(); for (int i = 1; i < 1 + numberOfOperators; i++) { operators.Add(CreateNewResource(capability.Name + " Operator " + i, true, true, null, workergroup)); } foreach (var resource in CapabilityToResourceDict.Single(x => x.Key == capability.Name).Value) { // With operators if (operators.Count > 0) { foreach (var op in operators) { if (workerToAssign.Any()) // with workers and setups { foreach (var worker in workerToAssign) { foreach (var subCapability in _capability.Capabilities .Single(x => x.Name == capability.Name) .ChildResourceCapabilities) { var capabilityProvider = new M_ResourceCapabilityProvider() { Name = $"Provides {subCapability.Name} {resource.Name} {worker.Name}", ResourceCapabilityId = subCapability.Id, }; var toolName = resource.Name + " " + subCapability.Name; var tool = tools.SingleOrDefault(x => x.Name.Equals(toolName)); if (tool == null) { tool = CreateNewResource($"{resource.Name} {subCapability.Name}", false, false); tools.Add(tool); } if (resourceToolsToAssign.Any()) { setups.Add(CreatePhysicalToolResource(resourceToolsToAssign, subCapability, setups, capabilityProvider)); } // CreateNewSetup(resource, capabilityProvider, usedInProcessing,usedInSetup, setupTime) setups.Add(CreateNewSetup(op, capabilityProvider, false, true, 0)); setups.Add(CreateNewSetup(tool, capabilityProvider, true, true, setupTime)); setups.Add(CreateNewSetup(resource, capabilityProvider, true, true, 0)); setups.Add(CreateNewSetup(worker, capabilityProvider, true, false, 0)); capabilityProviders.Add(capabilityProvider); } } } else { // no worker but setup foreach (var subCapability in _capability.Capabilities .Single(x => x.Name == capability.Name) .ChildResourceCapabilities) { var capabilityProvider = new M_ResourceCapabilityProvider() { Name = $"Provides {subCapability.Name} {resource.Name}", ResourceCapabilityId = subCapability.Id, }; var toolName = resource.Name + " " + subCapability.Name; var tool = tools.SingleOrDefault(x => x.Name.Equals(toolName)); if (tool == null) { tool = CreateNewResource($"{resource.Name} {subCapability.Name}", false, false); tools.Add(tool); } if (resourceToolsToAssign.Any()) { setups.Add(CreatePhysicalToolResource(resourceToolsToAssign, subCapability, setups, capabilityProvider)); } setups.Add(CreateNewSetup(op, capabilityProvider, false, true, 0)); setups.Add(CreateNewSetup(tool, capabilityProvider, true, true, setupTime)); setups.Add(CreateNewSetup(resource, capabilityProvider, true, true, 0)); capabilityProviders.Add(capabilityProvider); } } } } else // without operators { if (workerToAssign.Any()) { foreach (var worker in workerToAssign) { foreach (var subCapability in _capability.Capabilities .Single(x => x.Name == capability.Name) .ChildResourceCapabilities) { var capabilityProvider = new M_ResourceCapabilityProvider() { Name = $"Provides {subCapability.Name} {resource.Name} {worker.Name}", ResourceCapabilityId = subCapability.Id, }; // Tool var toolName = resource.Name + " " + subCapability.Name; var tool = tools.SingleOrDefault(x => x.Name.Equals(toolName)); if (tool == null) { tool = CreateNewResource($"{resource.Name} {subCapability.Name}", false, false); tools.Add(tool); } if (resourceToolsToAssign.Any()) { setups.Add(CreatePhysicalToolResource(resourceToolsToAssign, subCapability, setups, capabilityProvider)); } setups.Add(CreateNewSetup(tool, capabilityProvider, true, true, setupTime)); setups.Add(CreateNewSetup(resource, capabilityProvider, true, true, 0)); setups.Add(CreateNewSetup(worker, capabilityProvider, true, false, 0)); capabilityProviders.Add(capabilityProvider); } } } else { foreach (var subCapability in _capability.Capabilities .Single(x => x.Name == capability.Name) .ChildResourceCapabilities) { var capabilityProvider = new M_ResourceCapabilityProvider() { Name = $"Provides {subCapability.Name} {resource.Name}", ResourceCapabilityId = subCapability.Id, }; var toolName = resource.Name + " " + subCapability.Name; var tool = tools.SingleOrDefault(x => x.Name.Equals(toolName)); if (tool == null) { tool = CreateNewResource($"{resource.Name} {subCapability.Name}", false, false); tools.Add(tool); } if (resourceToolsToAssign.Any()) { setups.Add(CreatePhysicalToolResource(resourceToolsToAssign, subCapability, setups, capabilityProvider)); } setups.Add(CreateNewSetup(tool, capabilityProvider, true, true, setupTime)); setups.Add(CreateNewSetup(resource, capabilityProvider, true, true, 0)); capabilityProviders.Add(capabilityProvider); } } } CapabilityProviderDict.Add($"{resource.Name} Tooling", capabilityProviders); CapabilityToSetupDict.Add($"{resource.Name} Tooling", setups); CapabilityToResourceDict.Add($"{resource.Name} Tooling", tools); CapabilityToResourceDict.Add($"{resource.Name} Operators", operators); } }
public PossibleProcessingPosition(M_ResourceCapabilityProvider resourceCapabilityProvider) { ResourceCapabilityProvider = resourceCapabilityProvider; }
/// <summary> /// Start the SetupPhase with the tool and make a flag for currently in setupPhase /// </summary> /// <param name="resourceTool"></param> /// <returns></returns> public bool Mount(M_ResourceCapabilityProvider resourceCapabilityProvider) { ResourceCapabilityProvider = resourceCapabilityProvider; return(true); }
public static void PublishJob(Agent agent, IJob job, long duration, M_ResourceCapabilityProvider capabilityProvider) { PublishJob(agent, job, duration, capabilityProvider, String.Empty); }
//was sind operators? -> Personen, die Maschinen umrüsten private void CreateTools(M_ResourceCapability capability, long setupTime, int numberOfOperators) { List <M_Resource> tools = new List <M_Resource>(); List <M_ResourceSetup> setups = new List <M_ResourceSetup>(); List <M_ResourceCapabilityProvider> capabilityProviders = new List <M_ResourceCapabilityProvider>(); List <M_Resource> operators = new List <M_Resource>(); for (int i = 1; i < 1 + numberOfOperators; i++) { operators.Add(CreateNewResource(capability.Name + " Operator " + i, true)); } foreach (var resource in CapabilityToResourceDict.Single(x => x.Key == capability.Name).Value) { if (operators.Count > 0) { foreach (var op in operators) { foreach (var subCapability in _capability.Capabilities .Single(x => x.Name == capability.Name) .ChildResourceCapabilities) { var capabilityProvider = new M_ResourceCapabilityProvider() { Name = $"Provides {subCapability.Name} {resource.Name}", ResourceCapabilityId = subCapability.Id, }; var tool = CreateNewResource($"Tool {resource.Name} {subCapability.Name}", false); tools.Add(tool); setups.Add(CreateNewSetup(op, capabilityProvider, false, true, 0)); setups.Add(CreateNewSetup(tool, capabilityProvider, true, true, setupTime)); setups.Add(CreateNewSetup(resource, capabilityProvider, true, true, 0)); capabilityProviders.Add(capabilityProvider); } } } else { foreach (var subCapability in _capability.Capabilities .Single(x => x.Name == capability.Name) .ChildResourceCapabilities) { var capabilityProvider = new M_ResourceCapabilityProvider() { Name = $"Provides {subCapability.Name} {resource.Name}", ResourceCapabilityId = subCapability.Id, }; var tool = CreateNewResource($"Tool {resource.Name} {subCapability.Name}", false); tools.Add(tool); setups.Add(CreateNewSetup(tool, capabilityProvider, true, true, setupTime)); setups.Add(CreateNewSetup(resource, capabilityProvider, true, true, 0)); capabilityProviders.Add(capabilityProvider); } } CapabilityProviderDict.Add($"{resource.Name} Tooling", capabilityProviders); CapabilityToSetupDict.Add($"{resource.Name} Tooling", setups); CapabilityToResourceDict.Add($"{resource.Name} Tooling", tools); CapabilityToResourceDict.Add($"{resource.Name} Operators", operators); } }