"Smart" Furnace made dead simple

Post pictures and videos of your factories.
If possible, please post also the blueprints/maps of your creations!
For art/design etc. you can go to Fan Art.

Post Reply
mmmPI
Smart Inserter
Smart Inserter
Posts: 2743
Joined: Mon Jun 20, 2016 6:10 pm
Contact:

"Smart" Furnace made dead simple

Post by mmmPI »

Hello everyone ,

First of all here is a spoiler with all the pictures that will be joined to this post because a picture worth a thousand words. But I will add them again close to their corresponding part in the explanation because then you'll have pictures AND thousands of words which should worth more I hope ^^
I JUST WANT TO SEE PICS BEFORE I READ
Then to get a bit of context i must say i'm only playing this game for 2 weeks , 10 to 12 hours a day , so my " knowledge " is not old but i have a lot of time which allows me to watch lots and lots of videos on youtube and to read lots of explanations and discover many concepts that gave me inspiration , this also explain why I take a bit of my time to do a post like that gathering the thoughts from others and some of mine too . And also english is not my native langage , so if my mistakes bother you please correct them so you won't be bothered and I will learn :)

I will start soon by sharing a few reflexions and state of mind to explain with which assumptions i went into the topic to have a look at it as a concept , then I will explain some choices made to design a minimalist build and eventually i'll show how I used those simple ideas to scale , the build being very basic it can be used as a base for anyone to develop it's own implementation.


Well now let's enter the topic :


What is a smart furnace ?

It is a setup of furnace that can smelt iron ore and copper ore to produce iron plate, copper plate, and steel when you need them.

This definition is a basis, I'm not covering the case of stone or any ressources that can be find on mod mostly because I want to keep only the core to have something very simple.

In this definition there are two parts: smelting different things AND smelting when you need them.

That being said let's focus on the first part , how can we smelt different things ? we can divide this in 3 options :

the "not smart" : 1 furnace will only smelt 1 between Iron OR copper OR steel for the rest of its life but you have at least 1 of them for each ressource and you activate them when you need their ressource , or they can work simultaneously if you need different ressouces at the same time. ( I told you dead simple ! )

the " smart " : 1 furnace will smelt all 3 Iron AND copper AND steel , but obviouly not at the same time so they will change receipe.

the " probably smartest but let's pretend it doesn't exist so we don't complexify too much " : A mix between "Not smart" And "smart"

I'm calling them "smart" and "not smart" but they both have advantages and drawbacks here we just choose option " smart " because we want to build a smart furnace it is not related to the probably more fundamental question : what do i need ? why ? ect ...

This brings us to the second part of the previous made up definition : " When we need them "

At this point ( close the to 1rst picture I promise ) we define " need " by your factory need , your production line , or your different decentralised modules linked by train or whatever you use materials for, this is important it means the need is represented by a line who is not backed up or a train wagon that can't be loaded with enough goods or a requester chest that is not filled. Those are the way the smelting area will know it need to work and also on what. This will here be consider enough for the smelting area to be called smart , if it can produce the correct ressource , or two or the three of them if need be .

Now let's consider what I will call InstantNeed and GlobalNeed , If you produce Green Circuit , you need copper for wire and Iron plate , and you need a ratio of 3 copper for 2 iron , this is like instant need , if you have 5 furnace 3 for copper and 2 for iron that never switch you will always match the instant demand. If you have 10 furnace , 6 of them will work on copper , and 4 on iron , this is supposed to be the " not smart " way but in the case of a dedicated smelting area for green circuit it would an optimal choice I guess;

GlobalNeed is easy to understand if you imagine your area dedicated for green circuit isolated far from your smelting area and it is linked by train to carry the inputs ( copper and iron ) if you have 3 wagon of copper and 2 wagon of iron that arrive every 5 minutes it would be just the same for your green circuits assembler , as long as you have a BUFFER , but it means that you can fill the coppers wagon first and then the iron wagon which means that 100 % of the furnace could work on copper 3/5 of the time and switch to iron 2/5 of the time.

One quite obvious benefit of having your furnaces doing the switch is if your green circuit line is backed up , but not your ammo line, then your furnace can start operating 33% of time on iron plate 33% on copper and 33% on steel ( for piercing round magazines ! )

Note that we also could have treated that by having 40% of furnace working on iron and 60 % of furnace working on copper , and then have 33% of furnace on each ressource. But it is way harder to implement IMO

The build I came up with is a mix of the two way but closer to the time method to achieve ratio rather than a good distribution on the work at any time which has advantages and drawbacks ^^

I made some choices there that will give the build inheritent quality but also problems.

One benefit is its simplicity , one problem is we won't be able to choose in an elegant manner the production when facing more demand than furnaces can provide.

Here is a sadly ugly schema made just before the post summing up the 4 main things that can become problem and giving a spatial dimension to all this talking.
PICTURE SCHEMA
And here is a picture of the proof of concept to make things easier to explain.
SmartFurnaceProofBaseV2 - Copy - Copy.png
SmartFurnaceProofBaseV2 - Copy - Copy.png (3.72 MiB) Viewed 3773 times
The most important element of the picture is the roboport ^^.
''
The most important element of the schema is the location of the filter and the buffer, everything appears way more simple when you control the output by controlling the input.


we'll come back to this after the first disclaimer :

1) Steel Problem ALL WHAT FOLLOW WILL WORK ONLY WITH THE MAX INSERTER STACK BONUS ( 5 item at a time from chest to chest )

Why ? because if you insert 1 Iron plate in the furnace because you need steel , but just after you only need copper plate, some furnaces will still have that 1 iron plate inside but 1 steel requires 5 iron plate therefore all furnace with 1 iron plate inside will be waiting for the receipe to be complete, blocking all other insertion , which is not a problem if you need steel often but is a big problem if you only needed steel for rail , when your chest is full of rail let say you won't need steel for 20 or 30 minutes , that's a long time for furnace to be idle , especially if it represent 20% or 40% or 60 % of your total smelting area ^^

This is what I dislike about it , I couldn't found a way to deal with the problem without combinators or many wires or inserting stuff on the floor to destack.

The smart inserter grab the iron plate 5 by 5, only when there is more than 5 which ensure no leftover in the furnace he can have 5 or 10 or 15 iron plate inside but only a multiple of 5 which is very handy and explain why stone would make things more complex ( unless you didn't research inserter stack size , or use combinator , or synchronize 2 inserter ect )

This trick is not from me ^^

this explain the Circuit Network condition of the smart insert in the middle of the picture only when iron plate are superior to 10 ( it could have been 5 ) , 10 is safer and even mandadory if you use 1 requester chest for Iron plate for 2 furnace ( if you have 7 plate in this chest 2 inserter can grab at the same time , one will have 5 but the other only 2 this I figured out myself :'( )



2) Back pressure
: This problem typically occured to me when I was thinkink something like " oh it's so sad my furnace sometimes stop working when i don't need anything , maybie they could prepare some advance for later if I have a random peak of demand "
YES they can but they need to know when to stop , and you need that excess production NOT TO BLOCK the other ressources, on this build , if the ACTIVE provider chest at the furnace's exit get full of Iron plate for exemple , but then we need copper plate , then furnace will smelt copper but won't be able to eject it , so it will build a stack inside it, and now let say we need steel , then PROBLEM , need to manually purge , naah not good.

This nicely introduce the 3) Working for no reason

Furnaces can work even if your factory don't need anything , but then you will have to specify when they need to stop, they smelt to fill a chest , to reach predefined amount , they need a way to be stopped before they build a stack inside them.

Remember the most important part of the schema ? The Filter exactly !

Those Big inserter bottom of the picture , here is the explanation of the Logistic network condition "Work only if there is less than 15 copper" (in logistic network).

Well the logistic network is represented by the square of concrete + stone brick , THIS OPERATE IN A ISOLATED LOGISTIC NETWORK, in which only the quantity of ressources in storage / passive provider / active provider BUT NOT REQUESTER CHEST is taken in account .

So the smart inserter will not add Iron ore ore Copper or into the smelting area if THE ACTIVE PROVIDER chest right at the exit of the furnace ( or the sum of all your iron plate in all the active provider chest of the smelting area) is above 15 for copper and 30 for iron, ( with 128 furnace in a block I use 4K for copper and 1K for iron )

This ensure that no raw ore will be entering the logistic network if the buffer level is reached.

Back Pressure and Working for no reason problem solved ! !

With minmum wiring thank to the automatic sum made by the logistic network
Easy to parameter buffer level , only in the input entry zone no matter the size of the zone.

Last problem to solve is " Flood" or the pressure problem , this is related to the CIRCUIT network condition of the smart inserter, the same ones that does all the job. It's easy to explain what would happen without this condition.

It works as an AND , the inserter will throw raw ore into the system if the buffer level is not reached but let say we want 100 iron plate , we have that one furnace ,then the inserter will kindly fill up the active provider chest of 3 K iron ore during the time our poor lonely furnace make his way to the level required , letting no room for copper ore problem 1 , leaving the furnace with a 100 year quantity of work that he will have no way to determine priority over the copper that migh on day enter the logistic network.

With the parameter set to 30 it will not count the 20 iron that might be standing in the requester chest next to the furnace, so it is 50 iron ore that can be in the system MAXIMUM when the level or iron plate is reached , so the furnace will still have some work on iron plate to do , it will go above the set level , but if demand on iron plate stops , and only copper is needed , he will eventually finish the iron ore and start working onto copper plate .

This parameter appears to me the most important to tweak to adapt gameplay and scale of the smelting area , this is the frenquency at which the furnaces will switch , if set very low , the furnace will act " on demand " with a bit of delay , low parameter here ensure you don't go too much over your buffer lvl before the raw ore of that ressources stop being inserted in the logistic network , this means when said ressources is required it will trigger almost immediatly the need for more ore inserted.

In my personnal case I set this parameter quite high , my buffer lvl is something like multiplied by 3 , logistic condition set to <1000 if i'm under it i have 32 inserters per block of 128 furnace that will insert iron ore to the logistic network and by the time I have 1000 iron plate , they were given enough time to stockpile 3000 iron ore in the active provider chest , if I need copper right after they will not be fully efficient because most of them will still be smelting iron , which means inserter insert lots and lots of copper ore , roughly enough to multiply by 3 the buffer lvl i set ^^ it fits my gameplay when i decide let's make rail , like 20 K rail just in case , then i spend 2 hours playing with them , and I decide I need 131231 laser turrets, and so on.

But as I tried to explained I would not recommand too high parameter here if you want something that react softly , if you set a very low parameter the system will actknowledge the instantneed faster , rather than switching once an hour for the Globalneed ;)


If you manage to read to this point you probably already understand how it works but there is more ^^ , I call that the initialisation , it is the time before the system can be active , the system understand Globalneed if the buffer level you set in the smart inserter at the entry point of the input decrease too much , but when you first build your thing , usually everything is empty , this tell the system to do everything at the same time , and especially , since he start from 0 it will take quite a bit of time before he reach a buffer level remotely close to what was set , during this period it will not react as expected , in the following picture I did a brutal initialisation , both ore are sent at the same time, he decided to start with iron, but switch almost immediately to copper
runnin.png
runnin.png (3.77 MiB) Viewed 3773 times
This is why we see iron plate on the requester chest for steel, and the line of copper is backed up
runnin3.png
runnin3.png (2.59 MiB) Viewed 3773 times
5 or 6 minute later the furnace decide to switch receipe on his own, very nice of him
runnin4.png
runnin4.png (2.68 MiB) Viewed 3773 times
and around 10 minutes later the steel production start
runnin7.png
runnin7.png (3.33 MiB) Viewed 3773 times
Steel production is consuming the excess iron plate we had , but not touching the copper we can see 60 copper plate in the logistic network which is 4 times the level set as a buffer , this is due to the brutal init and also to parameter not well rounded for this setup , I did hundreds of test on my 128 furnace block , it always amaze me to see how it will affect the system
initdone.png
initdone.png (3.57 MiB) Viewed 3773 times


This step I consider init is done , the system reached the lvl set for every ressources , it now turns off by himself , at this point it will react much faster to new demand than before init , it is time to tweak parameter to adapt the frequency of switch with your setup ^^

So i could resist grabbing a bit of everything at the end of the line
initplus1.png
initplus1.png (3.59 MiB) Viewed 3773 times
The copper grabbed didn't make the system goes under buffer lvl , so no copper ore were inserted , it only triggered Steel , which means Iron plated in the requester chest were consumed , leading robots to grab the iron plate in the active provider chest ,until it goes under the threshold of iron plate , which will trigger the inserting of Iron Ore .

This is all i can think about for this Build for now but i'll gladly precise anything if necessery with edits or in comment sections.

Here are some pictures of a bigger block working on those principle as exemple , with a bit more buffer boxes everywhere so i can monitor better the answer of the furnace and some combinator I used to accelerate the iron ore insertion to the system when it is not for steel , and to slow it a bit when it is for steel.
furnacex128.png
furnacex128.png (4.72 MiB) Viewed 3773 times
factorio prod5.png
factorio prod5.png (2.37 MiB) Viewed 3773 times




What I forgot : => Why the train and Why it is important to have 2 separate lane of input for Copper and Iron with this build, I'll probably Add that tomorrow when i'll check again for typo and try to improve presentation.

Initialisation is better when you send only copper to begin with , just to test if everthing is ok , when buffer level is reached then sending only iron ore to meet the required level , and finish by steel , this will consume the excesse iron plate , and retrigger iron ore , so you will have an overview of a the answer time of your build.



Isn't it simple now ? :D
Last edited by mmmPI on Tue Jun 21, 2016 1:03 am, edited 1 time in total.

daniel34
Global Moderator
Global Moderator
Posts: 2761
Joined: Thu Dec 25, 2014 7:30 am
Contact:

Re: "Smart" Furnace made dead simple

Post by daniel34 »

Moved to Show your Creations.
quick links: log file | graphical issues | wiki

mmmPI
Smart Inserter
Smart Inserter
Posts: 2743
Joined: Mon Jun 20, 2016 6:10 pm
Contact:

Re: "Smart" Furnace made dead simple

Post by mmmPI »

Oh ok i was wondering where was post x)

not sure if it is really a creation thought , pictures are more here to support explanation rather than being the thing shown

anyway glad to see i don't have to redo the whole thing :)

Post Reply

Return to “Show your Creations”