Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

How to test bigger instance and irregular instance #18

Open
edwardzcl opened this issue Dec 15, 2023 · 5 comments
Open

How to test bigger instance and irregular instance #18

edwardzcl opened this issue Dec 15, 2023 · 5 comments

Comments

@edwardzcl
Copy link

Why your models trained on small instances can be tested on bigger instances, how to solve the difference of size.
Why each operation of your instance need different machines, no repetition in a job.
How to test on some irregular instances, i.e. some jobs have different amount of operations.

@zcaicaros
Copy link
Owner

  1. GNN is a type of NN that is size-agnostic and generalizable to different sizes of disjunctive graphs.
  2. You can change the adjacent matrix to accommodate the varied number of operations of jobs.

@edwardzcl
Copy link
Author

  1. GNN is a type of NN that is size-agnostic and generalizable to different sizes of disjunctive graphs.
  2. You can change the adjacent matrix to accommodate the varied number of operations of jobs.

For the question2, I think we can change the adjacent matrix i.e. conjunctions arcs and the last candidate operation of each job. Besides, I think there may be another way: we can make up the jobs with fewer operations to the longest one and set the processing time of these extra operations to be 0.
For another question: the required machines of a job with 15 operations may be [1, 2, 1, 3, 10, 12, 10, 8, 2, 3, 12, 15, 4, 6, 12], which means some operations occupy the same machines, so is there some effects on your algorithm?

@zcaicaros
Copy link
Owner

For question 2, you don't need fictitious nodes like the ones with 0 processing time. You can directly remove the operations by constructing a modified adjacent matrix (i.e., the new adjacent matrix does not contain those operations, it only encodes the connectivity of the existing operation nodes). Of course, you need to provide the node raw feature tensor accordingly.

For the new question, this is a job shop problem with re-entry cases, i.e., a job must be processed by a machine multiple times. For now, I didn't see any barriers preventing applying my method to this problem. But you need to be careful in examining the state transition mechanism, especially for next-state disjunctive graph construction.

@edwardzcl
Copy link
Author

For question 2, you don't need fictitious nodes like the ones with 0 processing time. You can directly remove the operations by constructing a modified adjacent matrix (i.e., the new adjacent matrix does not contain those operations, it only encodes the connectivity of the existing operation nodes). Of course, you need to provide the node raw feature tensor accordingly.

For the new question, this is a job shop problem with re-entry cases, i.e., a job must be processed by a machine multiple times. For now, I didn't see any barriers preventing applying my method to this problem. But you need to be careful in examining the state transition mechanism, especially for next-state disjunctive graph construction.

For the disjunctive graph of job shop problem with re-entry cases, there may be another issue: how to describe two adjacent operations which belongs to the same job, while they must be processed by a machine. In this case, whether a conjunctions arc or a disjunctive arc or both of them are required, and how to define the adjacent matrix becase these two arcs overlap.

@zcaicaros
Copy link
Owner

For question 2, you don't need fictitious nodes like the ones with 0 processing time. You can directly remove the operations by constructing a modified adjacent matrix (i.e., the new adjacent matrix does not contain those operations, it only encodes the connectivity of the existing operation nodes). Of course, you need to provide the node raw feature tensor accordingly.
For the new question, this is a job shop problem with re-entry cases, i.e., a job must be processed by a machine multiple times. For now, I didn't see any barriers preventing applying my method to this problem. But you need to be careful in examining the state transition mechanism, especially for next-state disjunctive graph construction.

For the disjunctive graph of job shop problem with re-entry cases, there may be another issue: how to describe two adjacent operations which belongs to the same job, while they must be processed by a machine. In this case, whether a conjunctions arc or a disjunctive arc or both of them are required, and how to define the adjacent matrix becase these two arcs overlap.

Agree, this is a problem. But if you use modern library like PyG, it can handle it properly:

pyg-team/pytorch_geometric#7427 (comment)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants