Skip to content

GitLab

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
dream dream
  • Project overview
    • Project overview
    • Details
    • Activity
    • Releases
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 1
    • Issues 1
    • List
    • Boards
    • Labels
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • Operations
    • Operations
    • Incidents
  • Analytics
    • Analytics
    • Repository
    • Value Stream
  • Wiki
    • Wiki
  • Members
    • Members
  • Activity
  • Graph
  • Create a new issue
  • Commits
  • Issue Boards
Collapse sidebar
  • nexedi
  • dreamdream
  • Issues
  • #4

Closed
Open
Created Jul 05, 2017 by Ghost User@ghost

Dynamic version of JobShop without specific routes

Hi, I am trying to model a JobShop similar system, where the jobs do not belong to a route, but to technologies. These technologies are implemented in a customized machine class (called FlexibleMachine in the code). The jobs are implemented through a class called CustomJob.

Before each machine, a (custom) queue is linked to the machine (so that a queue is always the predecessor of a machine). Now, all jobs are of type 'part', because the ManPy JobShop Jobs cannot be used for my purpose and I do not want to change something in the source code of ManPy to add a new type of objects. Every job has a list of technologies that the job needs and a list of remaining technologies. (See class CustomJob)

The main difference to the ManPy source code are the updateNext methods of the custom machine and the custom queue classes (class names: FlexibleMachine and FlexibleQueue). In the update next method, the custom machine is looking if the activeEntity (a job) needs to fulfill remaining technologies through the remainingTechnologies list. If yes, the current machine is looking for machines that can provide the needed technologies. If the machine has found one, the linked queue is appended to the next list. If not, all technologies were fulfilled and the Exit (realized through FlexibleExit) is appended to the next list. In the FlexibleQueues updateNext-method, only the machine that is linked to the preceding queue is appended to the next list.

Now my problem: If I change the capacity of a queue, so that it is "full" at a specific time, the system and the simulation stop working, when a job, which has just been created in the source, wants to get in this specific full queue. At this moment, the source falls into a continuous loop in the run method of the EntityGenerator until the maxSimTime is reached.

I attached the code, maybe you can find the error in my custom code.

CustomJobShop_v09_ms_wip_minimal.py

To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information
Assignee
Assign to
None
Milestone
None
Assign milestone
Time tracking
GitLab Nexedi Edition | About GitLab | About Nexedi | 沪ICP备2021021310号-2 | 沪ICP备2021021310号-7