Coder Social home page Coder Social logo

krockema / mate Goto Github PK

View Code? Open in Web Editor NEW
24.0 6.0 20.0 17.65 MB

Prove of Concept for aManufacturing on Actor Technology System in an Industrial 4.0 Environment

License: Apache License 2.0

C# 60.83% CSS 1.77% JavaScript 16.65% Shell 0.01% HTML 11.65% Batchfile 0.01% F# 1.80% Dockerfile 0.03% Less 3.61% SCSS 3.65%
selforganization production simulation agent-based-simulation planning scheduling

mate's Introduction

MATE - Manufacturing on Actor Technology

The Project build status Build Status and other details: GitHub forks GitHub stars GitHub issues Twitter

This project is part of a research project to evalutate self-organizing concepts in an industrial production planning and control application.

Short troduction into the topic of self-organizing production planning and controll and showcase of MATE. Comunity Standup of Akka.Net on youtube.com from 13.04.2021

#Project structure

  • Mate

    Provides basic webinterface on ASP.Net for showcase purpose

  • Mate.DataCore

    Provides database and initializer for basic schema and primary data, as it is build as "code-first" with Entity Framework

  • Mate.Production.CLI

    Provides a small CLI that acts as headless runtime, used for remote deployment that register themself as worker for the Hangfire module.

  • Mate.Production.Core

    Actor simulation runtime that can be initalized as self-irganized, distributed or central organized system to validate production planning algorithms using tertiary objectives

  • Mate.Production.Immutables

    Immutable message definitions for the actor system.

  • Mate.Test

    Provides online and offline test for the project. Be aware that some of them are not used as intended ;).

Mate Interface

How to Install

Setup:

  • Install Visual Studio (works with Visual Studio Community 2022 17.1) with default components and also make sure to have:
    • .NET 6.0 Runtime
    • F#
    • SQL Server Express 2019 LocalDB
    • ASP Web-Development
  1. Clone repository
  2. If localDb shall be used (which is the default case for Windows user) - set it via command line with: setx UseLocalDb true
  3. Open Visual Studio and go to Mate/libman.json. Left click and "Restore Client-Side Libraries"
  4. Done - Run the project

To reset database: run the unit test: Mate.Test.SimulationEnvironment.AgentSystem.ResetAllDatabase (Delete and Create all DBs)

Releated Papers

Releated Projects

  • Akka.Hive

    An Agent Simulation Framework based on Akka.Net

  • SEED - Sintesizer for Enterprise Experimentation Data

    An Framework to populate Primary-Data, like Material, BOM, Operations. . . based on statistical indicators

mate's People

Contributors

dependabot[bot] avatar krockema avatar marvinmat avatar pascalschumann avatar seiferts avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

mate's Issues

Transfer operations into single agents.

Transfer WorkItems from Production Agent into dedicated operation agents.

  • May required due to machine to skill to operation mapping based on recipies
    • could be crated when the operation is fix sheduled on one mashine
      • ensures correct processing
      • enables tracing on operational level
      • further specialisation for specific incidents prossible

opens problems:

  • syncing parallel processing
  • more than one agent per product

Feature calculate max bucket proportions

IDEA:

  • count arriving operations and their durations --> automatically calculate proportions of for max bucket size
  • forget operations older than 1 week

IMPLEMENTATION:

  • object with dictionary having (string) "Group technology" and (int) "totalduration"
  • new arriving operation --> "totalduration" += operation.duration

Generator for final product structures

Design and Implement Product-Generator, which can be feeded with manualy or auto generated subproducts and generate a given amount of final products. This products should have a variation in product structure.

Aimed behaviour:

  • manualy and auto create mediate products (including required machine-capabilities)

input: Amount of possible final products, interval of product structure,

output: auto generate boms for

Enable diverging product structure

  • Let StorageAgent create ProductionAgent for multiply orders
  • Use-Case i.e. Splitting raw material for multiply orders

show case procedure for dispo agents:
(1) create new DispoAgent with diverging product structure
(2) if no bucket for same raw material exits or all exiting buckets for same raw material are already at their limit --> the DispoAgent creates a new bucket at storageagent, else add to busket
(3) as soon as any dispo agent inside bucket reaches priority the bucket creates a production agent with all including dispoagents

assumptions:

  • spare capacties on raw material can be neglected

extension:

  • storage can create new dummy dispoagents if raw material has spare capacities

Implement Bucket Processing

Batches For Workshedules with the same Tooling Setup. (Collect at Hubagent, and release them on a certain threshhold - First try with Min(RequiredDate) - (3x Item.duration).

Overall TODO:
[ ] Add swapping current tool on resource in "Default" behaviour depending on requierd tool for next running job
[ ] Add proposal times to resource depending on swap resource tool or not
[ ] Create the Bucket behaviour for Agents and run with default behaviour
[ ] Add a BucketManager at hub agent (handle all Buckets for a hub categorized by setup typs)
[ ] Implement functionality with lead time oriented bucket behaviour
[ ] at enqueue foperation - search for open buckets with: same setup tool && where bucket.start < currentOperation.start && bucket.end > currentOperation.end
[ ] Enhance machine utiliaziation with setup time to evalute work/setup ratio

Refactoring Agent Core

List of implementation

  • Parent/Child-Creation and Finishing for Dispo Agent / Production Agent
    • delete virtual Childs releation between Dispo and Prod (dont delete relation between Prod and Dispo)
      • finish Dispo Agents when MaterialsProvided
      • finish Prod Agents when all operations finished and all dispoagents (virtual childs) terminated
    • implement forward scheduling (Production Agent all Dispo Agent --> take the one with later ending time)
  • Implement Methods for Default Behaviour
    • Only allow top down changes for IJobItem properties
    • SPOT at Hub Agent
    • restructure handling with JobItems, only send them if necessary
  • Restructure and Implement Unit Tests
    • implement new unit tests for data structures
    • implement new unit tests for agents
    • restructure folder structure for unit tests
    • add unit test to Travis
  • Refactoring InitializeSimulation
    • loading analyzer
    • loading guards
    • initialize resources
    • initialize stocks
    • Refectoring DatabaseConnection by replace MasterDBConnection with DbConnection (seperate connections for each Agent/Object.)
  • take Properties from Agent.Properties to behaviour and use an Interface for behaviours to access the properties
    • check F# modules & types if necessary
  • Introduce Agent Behaviour for Contract, Directory, Storage, Dispo, Hub, Production, Resource
    • Implement Default
  • Refactoring F# Simulation Messages
    • IKey and IJob usable for any planning element (i.e. Operation or Bucket)
    • Remove ItemState AND introduce (bool) MaterialsProvided and (bool) PreconditionsProvided (own objects)

Implement Batches

Implement batch processing, i.e. Collection of Operations with the same set-up, processed all at once.

i.e. Backery baking rolls.

Creating batches dependent on Machine capabilities:

  • Possible solutions:
    • Machine dependencies telling max batch size on request,
      based on that, a bucket limit is created.
    • Machine splits the Bucket into batches and returns overflow.

Time coupled production processes

Sheduling of Products that have time dependencies betweeen consecutive operations.
i.E. Applying color -> drytime -> applying finish.

Cases:

  • min wait time
  • max wait time
  • exact wait time

Dynamic pegging

Implement the dynamic pegging

Aimed behaviour:
If new orders arrival with an earlier due, dynamic pegging should change the due for the existing production and instead create the dispo and production agents for the new order with the later due time of the replaced item.

Multiply HubAgents for Resources

  • FHubInformation with List
  • enable Resources to link with multiply HubAgents

expected behavior:

  • resource can contain to multiply HubAgents
  • resource can propose to multiply HubAgents

ResourceGuardian / change sequence for creating Resources and Hubs

create a ResourceGuardian for resources

Change the sequence of creating resources and hubs to:
[1] Create Resources that provides ResourcesSkills (with containing Setups)
[2] Register Resources at DirectoryAgent
[3] Create new HubAgents depending on the provide ResourceSkills

Additional:

  • make resources addable and deletable (note: dependencies to HubAgents)

Quality assurance

Track any single production unit through all maschines + setups to quaranty quality and track down issues.

PMT - Logistic Agent

Implement logistic agent for transportation of products between production units.
Possible solutions:

  • as own Operation with Resource requirement.
  • as additional Parameter on an Operation (external set-up time)
  • as indipendent logistic Agent

AI Data generation

@Krockema

Input/Changes:

  • use current feature KI branch
  • steps to ~1.000.000
  • change seed (?)

Output:

  • db dump of ResultDB (KPIs)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.