cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
  • DownloadSemiconductor Toolkit: Tools to create wafer maps, add wafer geometry to graphics, explore die defects & compare wafers.
  • Discovery Summit 2026: Early User Edition - September 23-24.Register. It's free.
  • See how to design an experiment, explore factor-response relationships, assess tradeoffs, and ID best settings. Register for Sep. 11 Mastering JMP.

Discussions

Solve problems, and share tips and tricks with other JMP users.
Choose Language Hide Translation Bar
eldad_galili
Level III

Repairable Systems Simulation

hi all,

 

can you help me with a script that takes a jmp table like this

eldad_galili_0-1740138142366.png

and automatic generate RBD in the Repairable Systems Simulation like this:

eldad_galili_1-1740138230201.png

When the MTBF values ​​are inserted into the Theta value under the exponential distribution

 

thank you very much!

 

 

 

 

 

 

5 REPLIES 5
jthi
Super User

Re: Repairable Systems Simulation

Have you checked what the script looks like which is used in the example? https://www.jmp.com/support/help/en/18.1/#page/jmp/example-using-the-repairable-systems-simulation-p... or what the scripts looks like if you save your version?

-Jarmo
jthi
Super User

Re: Repairable Systems Simulation

This is still most likely somewhat broken, but with small modifications it most likely can be improved and made more robust

View more...
Names Default To Here(1);

dt = New Table("My system",
	Add Rows(2),
	Compress File When Saved(1),
	New Column("Column 1",
		Numeric,
		"Ordinal",
		Format("Best", 12),
		Set Values([1, 2, 3, 4])
	),
	New Column("Column 2", Character, "Nominal", Set Values({"A", "B", "C", "D"})),
	New Column("Column 3",
		Numeric,
		"Continuous",
		Format("Best", 12),
		Set Values([7500, 13000, 333, 2357])
	)
);

rss_expr = Expr(Repairable Systems Simulation());
system_item_expr = EvalExpr(System Item(Expr(dt << get name)));

Insert Into(system_item_expr, NameExpr(Reliability Block("Start", Position(0, 5))));
end_block = Expr(Reliability Block("End"));
position_expr = EvalExpr(Position(Expr(N Rows(dt) + 1),5));
Insert Into(end_block, Name Expr(position_expr), 2);
Insert Into(system_item_expr, NameExpr(end_block));

create_reliabilty_block = function({name, pos, theta}, {Default Local},
	block_expr = EvalExpr(Reliability Block(Expr(name)));
	position_expr = EvalExpr(Position(Expr(pos),5));
	configuration_expr = EvalExpr(Configuration(Basic(Exponential(Expr(theta)), Time Unit(Hour))));
	Insert Into(block_expr, Name Expr(position_expr));
	Insert Into(block_expr, Name Expr(configuration_expr));
	
	return(Name Expr(block_expr));
);

For Each Row(dt,
	r_block = create_reliabilty_block(:Column 2, Row(), :Column 3);
	Insert Into(system_item_expr, Name Expr(r_block));
);

connections = :Column 2 << get values;
Insert Into(connections, "Start", 1);
Insert Into(connections, "End");
connections_list = {};
For(i = 1, i < N Items(connections), i++,
	Insert Into(connections_list, Eval List({Eval List({connections[i], connections[i+1]})}));
);

block_connections_expr = EvalExpr(Block Connections(Expr(connections_list)));

Insert Into(system_item_expr, NameExpr(block_connections_expr));


For Each Row(dt,
	event_expr = EvalExpr(Add Event(
		Block Name(Expr(:Column 2)),
		Event Name("Block Failure"),
		Configuration(Block Failure)
	));
	process_expr = EvalExpr(Add Process(
		Block Name(Expr(:Column 2)),
		Process Name("Turn Off System"),
		Configuration(Turn Off System, Completion Time(Immediate))
	));
	link_expr = EvalExpr(Link Event and Process(
		Event(Block Name(Expr(:Column 2)), Event Name("Block Failure")),
		Process(Block Name(Expr(:Column 2)), Process Name("Turn Off System"))
	));
	Insert Into(system_item_expr, Name Expr(event_expr));
	Insert Into(system_item_expr, Name Expr(process_expr));
	Insert Into(system_item_expr, Name Expr(link_expr));
);

Insert Into(system_item_expr, NameExpr(Simulation Settings(
	Duration(100),
	Time Unit(Hour),
	N Simulations(1),
	Seed(0)
)));


Insert Into(rss_expr, Name Expr(system_item_expr));
system_item_expr = EvalExpr(Open System Item(Expr(dt << get name)));
Insert Into(rss_expr, Name Expr(system_item_expr));

rss = Eval(rss_expr);

wait(0);
/*
// Comments at the start of file do not seem to be necessary, but if you wish to have a "simulation" file, then you could add these
sb = Script Box("//!
//!STANDALONEPLATFORM
//WARNING: DO NOT CHANGE THE FIRST TWO LINES OF THIS FILE.
" ||
Char(NameExpr(rss_expr)), 800, 800);
sb << Reformat;
rss_script = sb << Get Text;
Save Text File("$TEMP/demo.jsl", rss_script);
Open("$TEMP/demo.jsl");
*/
-Jarmo
eldad_galili
Level III

Re: Repairable Systems Simulation

Thank you very much for your response, but what I meant is that I want to take a similar table to this example, of course with different values, and use it to build an RBD table in the RSS module.

jthi
Super User

Re: Repairable Systems Simulation

You did not provide a table so I did create example which follows similar structure. You can go through the provided script and make the required changes.

-Jarmo
bfoulkes
Level IV

Re: Repairable Systems Simulation

Hi,

I actually wrote a script to automate just what you're suggesting. I presented it at the 2021 JMP Discovery event and you can find the JMP journal and all the scripts here,

https://community.jmp.com/t5/Abstracts/But-Now-What-Do-I-Do-Using-a-Reliability-Model-to-Make-Event/...

Recommended Articles