These forums have been archived and are now read-only.

The new forums are live and can be found at https://forums.eveonline.com/

Science & Industry

 
  • Topic is locked indefinitely.
 

PI what happens if factory has multiple sources?

Author
Droidster
Center for Advanced Studies
Gallente Federation
#1 - 2013-12-31 01:42:04 UTC
In PI what happens if there are multiple source for a given factory's inputs?

Do they get split across the inputs, or is one randomly chosen? Is it the same one every time?
Steve Ronuken
Fuzzwork Enterprises
Vote Steve Ronuken for CSM
#2 - 2013-12-31 04:58:36 UTC
Don't. just don't. you're asking to lose materials if you do it that way.

Route everything via a launchpad (or other storage facility)

That way, everything works out properly timing wise.

Woo! CSM XI!

Fuzzwork Enterprises

Twitter: @fuzzysteve on Twitter

Boomhaur
#3 - 2013-12-31 06:58:10 UTC
Personally I just have everything dropped into a storage facility than to the factory and than the final product dropped into the launchpad.

Welcome to Eve. Everyone here is an Evil Sick Sadistic Bastard who is out to get you. Anyone who tells you otherwise is either trying to scam you or use you.

Krixtal Icefluxor
INLAND EMPIRE Galactic
#4 - 2013-12-31 13:59:49 UTC  |  Edited by: Krixtal Icefluxor
Steve Ronuken wrote:
Don't. just don't. you're asking to lose materials if you do it that way.



Absolutely wrong. "Accidentally" routing extra material to a processor makes no difference. The excess is rejected.......but not lost.

"Forgetting" to route the manufactured product to a final destination though, will indeed lose that finished product though.

"He has mounted his hind-legs, and blown crass vapidities through the bowel of his neck."  - Ambrose Bierce on Oscar Wilde's Lecture in San Francisco 1882

Steve Ronuken
Fuzzwork Enterprises
Vote Steve Ronuken for CSM
#5 - 2013-12-31 14:20:33 UTC
Krixtal Icefluxor wrote:
Steve Ronuken wrote:
Don't. just don't. you're asking to lose materials if you do it that way.



Absolutely wrong. "Accidentally" routing extra material to a processor makes no difference. The excess is rejected.......but not lost.

"Forgetting" to route the manufactured product to a final destination though, will indeed lose that finished product though.



If you're routing from an extractor, directly to a factory or a factory to another factory, as far as I'm aware, there's no storage to soak up an excess. Which includes when the timing of cycles is different.

So if your extractor is pulling more than your factory can handle, you'll lose materials, unless you route via a storage facility to buffer it.


If you have multiple storage facilities, and you route the same thing multiple times to a factory, then you're fine. But that's not what I was talking about.

Woo! CSM XI!

Fuzzwork Enterprises

Twitter: @fuzzysteve on Twitter

Krixtal Icefluxor
INLAND EMPIRE Galactic
#6 - 2013-12-31 14:53:44 UTC
Steve Ronuken wrote:
Krixtal Icefluxor wrote:
Steve Ronuken wrote:
Don't. just don't. you're asking to lose materials if you do it that way.



Absolutely wrong. "Accidentally" routing extra material to a processor makes no difference. The excess is rejected.......but not lost.

"Forgetting" to route the manufactured product to a final destination though, will indeed lose that finished product though.



If you're routing from an extractor, directly to a factory or a factory to another factory, as far as I'm aware, there's no storage to soak up an excess. Which includes when the timing of cycles is different.

So if your extractor is pulling more than your factory can handle, you'll lose materials, unless you route via a storage facility to buffer it.


If you have multiple storage facilities, and you route the same thing multiple times to a factory, then you're fine. But that's not what I was talking about.


That's fine, but OP did not specify if a Storage is even involved at all. I assumed there is.

"He has mounted his hind-legs, and blown crass vapidities through the bowel of his neck."  - Ambrose Bierce on Oscar Wilde's Lecture in San Francisco 1882

Katran Luftschreck
Royal Ammatar Engineering Corps
#7 - 2014-01-01 01:12:45 UTC
Harvester -> Storage -> Factory -> Storage -> Launchpad

That way you don't lose anything.

For more complex stuff ...

Harvester -> Storage -> Factory -> Storage -> Advanced Factory -> Storage -> Launchpad

If you place an actual spaceport thing it gives cheaper launches and plenty of storage space right there. The then it becomes ...

Harvester -> Spaceport -> Factory -> Spaceport

or

Harvester -> Spaceport -> Factory -> Spaceport -> Advanced Factory -> Spaceport

See? Very simple, and nothing is lost.

http://youtu.be/t0q2F8NsYQ0

Ty Frisco
Deep Core Mining Inc.
Caldari State
#8 - 2014-01-01 19:38:53 UTC  |  Edited by: Ty Frisco
Katran Luftschreck wrote:
Harvester -> Storage -> Factory -> Storage -> Launchpad

That way you don't lose anything.

For more complex stuff ...

Harvester -> Storage -> Factory -> Storage -> Advanced Factory -> Storage -> Launchpad

If you place an actual spaceport thing it gives cheaper launches and plenty of storage space right there. The then it becomes ...

Harvester -> Spaceport -> Factory -> Spaceport

or

Harvester -> Spaceport -> Factory -> Spaceport -> Advanced Factory -> Spaceport

See? Very simple, and nothing is lost.


Power and CPU are lost, using all of that storage.

Extracter, launh pad, factory, launch pad

Edit: oops I should have read your whole post
Droidster
Center for Advanced Studies
Gallente Federation
#9 - 2014-01-01 22:15:01 UTC
Ok, I answered this question myself. Here is the answer:

Internally, all of the facilities and routes on a planet are in a list IN THE ORDER IN WHICH THEY WERE CREATED

Each facility is checked one at a time, in the order in which it was created. If it needs inputs, each route is checked sequentially in the order in which the routes were created to attempt to fulfill the input.

What this means is that how close a source is from its destination or how much of a commodity it has is irrelevant. All that matters is when its routes were created.

There is consequently no way to draw from storage in a balanced way. The first storage that has any inputs will be tapped for as much as it can provide.

(Obviously, the EVE programmers need more expertise implementing resource allocation algorithms. LOL)
Lucas Kell
Solitude Trading
S.N.O.T.
#10 - 2014-01-02 09:40:00 UTC
Droidster wrote:
(Obviously, the EVE programmers need more expertise implementing resource allocation algorithms. LOL)
Or... It's working entirely as intended. It obviously isn't working the way you want it to, but that doesn't mean it's not working by design. It's entirely possible that when designing the current linear allocation method, they considered edge cases like yours and opted not to use a more complex method to cater for them.

That said, When you route materials, you select an amount (40/40 for example). If you set this to 20/40 for both storage units, does it perform a 50/50 split or does it still route all available from the first storage unit? (it's potentially possible that it does multiple passes through the list moving over only the amount stated for each pass until the destination is full).

The Indecisive Noob - EVE fan blog.

Wholesale Trading - The new bulk trading mailing list.

Droidster
Center for Advanced Studies
Gallente Federation
#11 - 2014-01-02 12:59:40 UTC
Lucas Kell wrote:
Droidster wrote:
(Obviously, the EVE programmers need more expertise implementing resource allocation algorithms. LOL)
Or... It's working entirely as intended. It obviously isn't working the way you want it to, but that doesn't mean it's not working by design. It's entirely possible that when designing the current linear allocation method, they considered edge cases like yours and opted not to use a more complex method to cater for them.

That said, When you route materials, you select an amount (40/40 for example). If you set this to 20/40 for both storage units, does it perform a 50/50 split or does it still route all available from the first storage unit? (it's potentially possible that it does multiple passes through the list moving over only the amount stated for each pass until the destination is full).


Well, just to state the obvious (or at least the obvious to a skilled programmer) , if multiple sources feed a factory, then the factory should draw from them equally to the extent the inputs are divisible. For example, if the cycle requires 30 units and you have 3 input storage areas then each should provide 10. Progamming this is, however, complicated when there is a complicated network.

Lucas Kell
Solitude Trading
S.N.O.T.
#12 - 2014-01-02 13:31:44 UTC
Droidster wrote:
Lucas Kell wrote:
Droidster wrote:
(Obviously, the EVE programmers need more expertise implementing resource allocation algorithms. LOL)
Or... It's working entirely as intended. It obviously isn't working the way you want it to, but that doesn't mean it's not working by design. It's entirely possible that when designing the current linear allocation method, they considered edge cases like yours and opted not to use a more complex method to cater for them.

That said, When you route materials, you select an amount (40/40 for example). If you set this to 20/40 for both storage units, does it perform a 50/50 split or does it still route all available from the first storage unit? (it's potentially possible that it does multiple passes through the list moving over only the amount stated for each pass until the destination is full).


Well, just to state the obvious (or at least the obvious to a skilled programmer) , if multiple sources feed a factory, then the factory should draw from them equally to the extent the inputs are divisible. For example, if the cycle requires 30 units and you have 3 input storage areas then each should provide 10. Progamming this is, however, complicated when there is a complicated network.
Well what is "should" do is a matter of design. It could take from equally from all, it could take only from one, it could take from the first built, it could take from the one with the highest amount. It could even take from every other storage ordered by the y coordinate of the unit on the planet.
I simply wouldn't presume that the CCP devs were simply incompetent.

Equally from every storage unit also become more complex when some units only have some of the amount to fill, etc. I'm not at a client to test, but it could be that the 20/40 thing is the method by which you split inputs and other that that it uses a plain linear list.

The Indecisive Noob - EVE fan blog.

Wholesale Trading - The new bulk trading mailing list.

Droidster
Center for Advanced Studies
Gallente Federation
#13 - 2014-01-02 13:56:47 UTC
Lucas Kell wrote:
Droidster wrote:
Lucas Kell wrote:
Droidster wrote:
(Obviously, the EVE programmers need more expertise implementing resource allocation algorithms. LOL)
Or... It's working entirely as intended. It obviously isn't working the way you want it to, but that doesn't mean it's not working by design. It's entirely possible that when designing the current linear allocation method, they considered edge cases like yours and opted not to use a more complex method to cater for them.

That said, When you route materials, you select an amount (40/40 for example). If you set this to 20/40 for both storage units, does it perform a 50/50 split or does it still route all available from the first storage unit? (it's potentially possible that it does multiple passes through the list moving over only the amount stated for each pass until the destination is full).


Well, just to state the obvious (or at least the obvious to a skilled programmer) , if multiple sources feed a factory, then the factory should draw from them equally to the extent the inputs are divisible. For example, if the cycle requires 30 units and you have 3 input storage areas then each should provide 10. Progamming this is, however, complicated when there is a complicated network.
Well what is "should" do is a matter of design. It could take from equally from all, it could take only from one, it could take from the first built, it could take from the one with the highest amount. It could even take from every other storage ordered by the y coordinate of the unit on the planet.
I simply wouldn't presume that the CCP devs were simply incompetent.

Equally from every storage unit also become more complex when some units only have some of the amount to fill, etc. I'm not at a client to test, but it could be that the 20/40 thing is the method by which you split inputs and other that that it uses a plain linear list.


I didn't say incompetent. I just pointed out they used the policy that was easiest to program, but from a player perspective what amounts to essentially a random policy. For example, there is no way you can simply look at a planet layout and tell how the inputs will be fulfilled. In fact, unless you write down the order in which you made your routes, it is impossible to know in-game what will happen. Obviously this is a highly non-optimal approach that was only taken because it was easy to program. Let's consider the possibilities for a more skillful programmer:

- Balanced Fulfillment, (as already described above). This would be hardest to program but the best solution. Intelligent routers use algorithms like this which are very complicated

- User-specified ordering. BGP and other gateway protocols use a negotiated best first algorithm, easier to program than automatically balanced, but still pretty hard

- Nearest first. Third choice might be a nearest first, with the secondary policy that if two inputs are equally near then it comes from the one with the most resources, and in clockwise fashion for inputs with identical counts. Easier to program than the first two, but still pretty hard.

- Most first. Easiest of all the good strategies would be most first. In this scheme inputs are ordered by total storage, and then alphabetically in the case of ties. Destinations are ordered alphabetically. The fulfillment then proceeds in those orders. This is pretty easy to program and gives a predictable result which case be determined from the client interface. Even a pretty weak programmer could figure this one out.

Then finally we have the strategy actually chosen: ordering by route creation time. I suppose this is even easier than the last mentioned algorithm to program, but is, from a systems perspective unacceptable because it is opaque, ie you can't tell what will happen from the client, other than by experimentation. In other words it is not a deterministic algorithm from the user perspective.

Claiming that this was a "design choice" is nonsense, because the results are effectively random and clearly inferior to pretty much every other possible algorithm. It was not a design choice, it was some individual programmers choice who was trying to figure out how to get the PI to work before a deadline.




Steve Ronuken
Fuzzwork Enterprises
Vote Steve Ronuken for CSM
#14 - 2014-01-02 14:06:29 UTC
'Do something complicated, which really only matters for a couple of edge cases'
'Do something simple, which covers the vast majority of cases'

Which is the right option?

That is a design choice.
The Best is the enemy of the Good.

Woo! CSM XI!

Fuzzwork Enterprises

Twitter: @fuzzysteve on Twitter

Lucas Kell
Solitude Trading
S.N.O.T.
#15 - 2014-01-02 14:17:59 UTC
Droidster wrote:
I didn't say incompetent. I just pointed out they used the policy that was easiest to program, but from a player perspective what amounts to essentially a random policy. For example, there is no way you can simply look at a planet layout and tell how the inputs will be fulfilled. In fact, unless you write down the order in which you made your routes, it is impossible to know in-game what will happen. Obviously this is a highly non-optimal approach that was only taken because it was easy to program. Let's consider the possibilities for a more skillful programmer:
You suggested they need more expertise, and before you even begin, exactly what is it that tells you these weren't their possibilities and they simply chose to go with the straight list. Bearing in mind it's not just about how complicated it is to design, it's also about how fast it can tick through the process across all of the PI installations across the universe. Considering how tiny the gain would be for using your "best" solution (I honestly can;t think of many situations it would benefit where the PI layout wouldn't be disastrously bad anyway, feel free to shed light on this) it wimply wouldn't be worth the extra cycles to build a different system. The way it is works and it works well.

Droidster wrote:
- Balanced Fulfillment, (as already described above). This would be hardest to program but the best solution. Intelligent routers use algorithms like this which are very complicated

- User-specified ordering. BGP and other gateway protocols use a negotiated best first algorithm, easier to program than automatically balanced, but still pretty hard

- Nearest first. Third choice might be a nearest first, with the secondary policy that if two inputs are equally near then it comes from the one with the most resources, and in clockwise fashion for inputs with identical counts. Easier to program than the first two, but still pretty hard.

- Most first. Easiest of all the good strategies would be most first. In this scheme inputs are ordered by total storage, and then alphabetically in the case of ties. Destinations are ordered alphabetically. The fulfillment then proceeds in those orders. This is pretty easy to program and gives a predictable result which case be determined from the client interface. Even a pretty weak programmer could figure this one out.

Then finally we have the strategy actually chosen: ordering by route creation time. I suppose this is even easier than the last mentioned algorithm to program, but is, from a systems perspective unacceptable because it is opaque, ie you can't tell what will happen from the client, other than by experimentation. In other words it is not a deterministic algorithm from the user perspective.
Those are certainly some of the options. I would consider the bottom to potentially be "unordered" though. So they don't particularly worry about what order it is in, as long as the PI keeps ticking, which it does. There's no need to specifically state any order.

Droidster wrote:
Claiming that this was a "design choice" is nonsense, because the results are effectively random and clearly inferior to pretty much every other possible algorithm. It was not a design choice, it was some individual programmers choice who was trying to figure out how to get the PI to work before a deadline.
It's only inferior by your measurements though. I personally think it works fine as is. And you have to remember that you are talking from your point of view, where you don't know the inner workings around it. It's very possible that there were several reasons why the way it works now was chosen. You are making an awful lot of ungrounded assumptions.

Do you have any professional programming experience? Not to be mean or anything like that, but it does sound like you technically know what you are talking about, but have no actual experience on the job. There's a lot of time when design considerations come from outside the specific task at hand.

The Indecisive Noob - EVE fan blog.

Wholesale Trading - The new bulk trading mailing list.