cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
  • Instantly extract effect sizes, F-ratios, and FDR-adjusted p-values from your models with the Calculate Effects Sizes extension, available now in the JMP Marketplace!
  • New to JMP? Join us Sept. 23-24 for the Early User Edition of Discovery Summit, tailor-made for new users. Register now for free!
  • Your voice matters! Tell us how you prefer to receive JMP updates, so we can tailor our communication to your needs. Take short survey.

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