Exemple #1
0
        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
            });
        }
Exemple #2
0
        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));
        }
Exemple #3
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);
 }
Exemple #5
0
        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);
        }
Exemple #6
0
        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);
        }
Exemple #7
0
 public ProposalForCapabilityProvider(M_ResourceCapabilityProvider capabilityProvider)
 {
     _capabilityProvider = capabilityProvider;
 }
Exemple #8
0
        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;
 }
Exemple #10
0
 /// <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);
 }
Exemple #11
0
 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);
            }
        }