-
Notifications
You must be signed in to change notification settings - Fork 485
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
A couple of enhacement suggestions #246
Comments
Hi, thanks for the suggestions, let me address them in same order:
I'm not totally opposed to implementing something like this but usability issues need to be considered thoroughly. If you'd like to help then the proximity thing will be in python but autozoom feature will be entirely in javascript. |
Thanks for your quick and detailed response
|
Regarding spatial ordering, first of all: awesome discussion. You never know when some hardcore CS stuff will pop into relevance even in something so utilitarian in function as bom generation. Second, I like your ideas and BVH graph looks a lot better than random. I also pondered on your MST idea with BFS and I think it can be improved quite a bit:
This should be pretty good and maybe some more optimization can be added if we visualize it. |
Another thing we can do for any algorithm as post optimization: Say the path we found is Repeat the operation reasonable amount of times thus continually reducing overall length. Each optimization attempt for an edge should be O(n) so for n<300 we can try about n^2 optimizations. There won't be too many large groups on any board anyway. What do you think? |
That's right, I didn't think of that, but unfortunately unlike N these shortcuts do not advance the selection. One little thing, though - in Firefox Alt+1...9 are used to switch between tabs by default and it seems that you forgot to override the default behavior with
That's exactly what I though too! I never thought I would ever have to write a BVH tree to optimize component placement :) As for the MST method, you're right - DFS will probably be better. Initially I thought it would be more "jumpy" than BFS, but if you start at the end of the longest path in the tree, it should be better. I like the idea of sorting the nodes by relative angle too. I might implement that later and see how it performs. Right now, I'm still playing around with the BVH and I think I can improve it by a lot by changing the order in which the nodes are visited at the end. Maybe the MST-based algorithm will come useful here? We'll see...
Sounds like something worth trying, but I have to admit that it's hard for me to visualize in my head how effective that will be. Still, definitely a something to keep in mind :) |
I think this approach can be generalized a bit and replaced with a genetic algorithm (for approximating TSP solution). Maybe then we could determine the optimal order in three passes:
What do you think about that? |
I don't think it will work too well because
TSP heuristics page has a MST based algorithm and it even has decent upper bound on solution deviation from optimum. Unsurprisingly someone thought of the edge replacement optimization long before me, it is described on the same page, see "Pairwise exchange" section. I vote for not treading a new path in this well researched problem. |
One advantage of following BVH path is that it may generate a route that feels more "natural" even if other algorithm provides a shorter path. We may have to build the alternative and compare the results visually to make a call on that. |
Okay, I'll try out the k-opt technique and maybe the BVH+TSP combo too if I have some time this week. I'll let you know when I have some results. |
Hi,
First of all, thank you for this great project - it's really helpful and helps to save a lot of time.
Today I used the interactive BOM during assembly of two rather large PCBs (~350 BOM entries each). Based on my first impressions, I came up with a list of suggestions that could make manual assembly process a bit smoother. I just wanted to know if there's any chance that these could be implemented in the future versions:
120
all the1206
footprints will be selected too. Searching only the values is especially useful if you don't follow any strict placement order and just grab one bag of parts after another in random order and then just search the BOM for whatever fell into your hands.This was my first time using this tool, so I suppose some of the features I mentioned might already exist, but I could have just missed them. In any case, if you think that any of these are worth having, I could try (I'm not very good with Python) to implement some of them and open a PR.
Thanks
The text was updated successfully, but these errors were encountered: