import%20marimo%0A%0A__generated_with%20%3D%20%220.14.17%22%0Aapp%20%3D%20marimo.App()%0A%0A%0A%40app.cell%0Adef%20_()%3A%0A%20%20%20%20import%20marimo%20as%20mo%0A%20%20%20%20import%20numpy%20as%20np%0A%0A%20%20%20%20import%20gc%0A%0A%20%20%20%20from%20robosandbox.performance.workspace%20import%20WorkSpace%0A%20%20%20%20from%20robosandbox.optimization.problem%20import%20DesignProblem%0A%20%20%20%20from%20robosandbox.models.DH.Generic.Generic%20import%20Generic%0A%20%20%20%20from%20pymoo.algorithms.soo.nonconvex.de%20import%20DE%0A%20%20%20%20from%20pymoo.optimize%20import%20minimize%0A%20%20%20%20from%20pymoo.termination%20import%20get_termination%0A%20%20%20%20from%20ansitable%20import%20ANSITable%2C%20Column%0A%20%20%20%20from%20optimization_p2%20import%20compute_%CE%B4%0A%0A%20%20%20%20np.random.seed(42)%0A%20%20%20%20return%20ANSITable%2C%20Column%2C%20Generic%2C%20WorkSpace%2C%20compute_%CE%B4%2C%20np%0A%0A%0A%40app.cell%0Adef%20_(WorkSpace%2C%20compute_%CE%B4)%3A%0A%20%20%20%20def%20analysis_ur5()%3A%0A%20%20%20%20%20%20%20%20from%20robosandbox.models.DH.UR5%20import%20UR5%0A%0A%20%20%20%20%20%20%20%20ur5%20%3D%20UR5()%0A%20%20%20%20%20%20%20%20ws_ur5%20%3D%20WorkSpace(robot%3Dur5)%0A%0A%20%20%20%20%20%20%20%20Gn_ur5%20%3D%20ws_ur5.global_indice(%0A%20%20%20%20%20%20%20%20%20%20%20%20initial_samples%3D3000%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20batch_ratio%3D0.1%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20error_tolerance_percentage%3D1e-4%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20method%3D%22yoshikawa%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20axes%3D%22all%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20max_samples%3D50000%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20is_normalized%3DTrue%2C%0A%20%20%20%20%20%20%20%20)%0A%20%20%20%20%20%20%20%20%CE%B4%2C%20%CE%B4_x%2C%20%CE%B4_y%2C%20%CE%B4_z%20%3D%20compute_%CE%B4(%0A%20%20%20%20%20%20%20%20%20%20%20%20R_target%3D%7B%22x%22%3A%201.2%2C%20%22y%22%3A%201.2%2C%20%22z%22%3A%201.2%7D%2C%20workspace%3Dws_ur5%0A%20%20%20%20%20%20%20%20)%0A%20%20%20%20%20%20%20%20return%20(Gn_ur5%2C%20%CE%B4%2C%20%CE%B4_x%2C%20%CE%B4_y%2C%20%CE%B4_z%2C%20ur5%2C%20ws_ur5)%0A%20%20%20%20return%20(analysis_ur5%2C)%0A%0A%0A%40app.cell%0Adef%20_(Generic%2C%20WorkSpace%2C%20compute_%CE%B4%2C%20np)%3A%0A%20%20%20%20def%20analysis_p1()%3A%0A%20%20%20%20%20%20%20%20best_x_for_p1%20%3D%20np.load(%22.%2Fdata%2Fuse_case_b%2Fbest_x_for_p1.npy%22)%0A%20%20%20%20%20%20%20%20d0%2C%20a1%2C%20a2%2C%20d3%2C%20d4%2C%20d5%20%3D%20best_x_for_p1%0A%0A%20%20%20%20%20%20%20%20d%20%3D%20%5Bd0%2C%200%2C%200%2C%20d3%2C%20d4%2C%20d5%5D%20%20%23%20d1%2C%20d2%20are%200%0A%20%20%20%20%20%20%20%20a%20%3D%20%5B0%2C%20a1%2C%20a2%2C%200%2C%200%2C%200%5D%20%20%23%20a0%2C%20a3%2C%20a4%2C%20a5%20are%200%0A%20%20%20%20%20%20%20%20alpha%20%3D%20%5Bnp.pi%20%2F%202%2C%200%2C%200%2C%20np.pi%20%2F%202%2C%20-np.pi%20%2F%202%2C%200%5D%20%20%23%20same%20as%20UR5%0A%20%20%20%20%20%20%20%20p1%20%3D%20Generic(dofs%3D6%2C%20a%3Da%2C%20alpha%3Dalpha%2C%20d%3Dd)%0A%20%20%20%20%20%20%20%20ws%20%3D%20WorkSpace(robot%3Dp1)%0A%0A%20%20%20%20%20%20%20%20Gn_p1%20%3D%20ws.global_indice(%0A%20%20%20%20%20%20%20%20%20%20%20%20initial_samples%3D3000%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20batch_ratio%3D0.1%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20error_tolerance_percentage%3D1e-4%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20method%3D%22yoshikawa%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20axes%3D%22all%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20max_samples%3D50000%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20is_normalized%3DTrue%2C%0A%20%20%20%20%20%20%20%20)%0A%20%20%20%20%20%20%20%20%CE%B4%2C%20%CE%B4_x%2C%20%CE%B4_y%2C%20%CE%B4_z%20%3D%20compute_%CE%B4(%0A%20%20%20%20%20%20%20%20%20%20%20%20R_target%3D%7B%22x%22%3A%201.2%2C%20%22y%22%3A%201.2%2C%20%22z%22%3A%201.2%7D%2C%20workspace%3Dws%0A%20%20%20%20%20%20%20%20)%0A%20%20%20%20%20%20%20%20return%20(Gn_p1%2C%20%CE%B4%2C%20%CE%B4_x%2C%20%CE%B4_y%2C%20%CE%B4_z%2C%20p1%2C%20ws)%0A%20%20%20%20return%20(analysis_p1%2C)%0A%0A%0A%40app.cell%0Adef%20_(Generic%2C%20WorkSpace%2C%20compute_%CE%B4%2C%20np)%3A%0A%20%20%20%20def%20analysis_p2()%3A%0A%20%20%20%20%20%20%20%20best_x_for_p2%20%3D%20np.load(%22.%2Fdata%2Fuse_case_b%2Fbest_x_for_p2.npy%22)%0A%20%20%20%20%20%20%20%20d0%2C%20a1%2C%20a2%2C%20d3%2C%20d4%2C%20d5%20%3D%20best_x_for_p2%0A%0A%20%20%20%20%20%20%20%20d%20%3D%20%5Bd0%2C%200%2C%200%2C%20d3%2C%20d4%2C%20d5%5D%20%20%23%20d1%2C%20d2%20are%200%0A%20%20%20%20%20%20%20%20a%20%3D%20%5B0%2C%20a1%2C%20a2%2C%200%2C%200%2C%200%5D%20%20%23%20a0%2C%20a3%2C%20a4%2C%20a5%20are%200%0A%20%20%20%20%20%20%20%20alpha%20%3D%20%5Bnp.pi%20%2F%202%2C%200%2C%200%2C%20np.pi%20%2F%202%2C%20-np.pi%20%2F%202%2C%200%5D%20%20%23%20same%20as%20UR5%0A%20%20%20%20%20%20%20%20p2%20%3D%20Generic(dofs%3D6%2C%20a%3Da%2C%20alpha%3Dalpha%2C%20d%3Dd)%0A%20%20%20%20%20%20%20%20ws%20%3D%20WorkSpace(robot%3Dp2)%0A%0A%20%20%20%20%20%20%20%20Gn_p2%20%3D%20ws.global_indice(%0A%20%20%20%20%20%20%20%20%20%20%20%20initial_samples%3D3000%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20batch_ratio%3D0.1%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20error_tolerance_percentage%3D1e-4%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20method%3D%22yoshikawa%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20axes%3D%22all%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20max_samples%3D50000%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20is_normalized%3DTrue%2C%0A%20%20%20%20%20%20%20%20)%0A%20%20%20%20%20%20%20%20%CE%B4%2C%20%CE%B4_x%2C%20%CE%B4_y%2C%20%CE%B4_z%20%3D%20compute_%CE%B4(%0A%20%20%20%20%20%20%20%20%20%20%20%20R_target%3D%7B%22x%22%3A%201.2%2C%20%22y%22%3A%201.2%2C%20%22z%22%3A%201.2%7D%2C%20workspace%3Dws%0A%20%20%20%20%20%20%20%20)%0A%20%20%20%20%20%20%20%20return%20(Gn_p2%2C%20%CE%B4%2C%20%CE%B4_x%2C%20%CE%B4_y%2C%20%CE%B4_z%2C%20p2%2C%20ws)%0A%20%20%20%20return%20(analysis_p2%2C)%0A%0A%0A%40app.cell%0Adef%20_(analysis_p1%2C%20np)%3A%0A%20%20%20%20np.random.seed(42)%0A%20%20%20%20Gn_p1%2C%20%CE%B4_p1%2C%20%CE%B4_x_p1%2C%20%CE%B4_y_p1%2C%20%CE%B4_z_p1%2C%20p1%2C%20ws_p1%20%3D%20analysis_p1()%0A%20%20%20%20return%20Gn_p1%2C%20%CE%B4_p1%2C%20%CE%B4_x_p1%2C%20%CE%B4_y_p1%2C%20%CE%B4_z_p1%0A%0A%0A%40app.cell%0Adef%20_(analysis_p2%2C%20np)%3A%0A%20%20%20%20np.random.seed(42)%0A%20%20%20%20Gn_p2%2C%20%CE%B4_p2%2C%20%CE%B4_x_p2%2C%20%CE%B4_y_p2%2C%20%CE%B4_z_p2%2C%20p2%2C%20ws_p2%20%3D%20analysis_p2()%0A%20%20%20%20return%20Gn_p2%2C%20%CE%B4_p2%2C%20%CE%B4_x_p2%2C%20%CE%B4_y_p2%2C%20%CE%B4_z_p2%0A%0A%0A%40app.cell%0Adef%20_(analysis_ur5%2C%20np)%3A%0A%20%20%20%20np.random.seed(42)%0A%20%20%20%20Gn_ur5%2C%20%CE%B4_ur5%2C%20%CE%B4_x_ur5%2C%20%CE%B4_y_ur5%2C%20%CE%B4_z_ur5%2C%20ur5%2C%20ws_ur5%20%3D%20analysis_ur5()%0A%20%20%20%20return%20Gn_ur5%2C%20%CE%B4_ur5%2C%20%CE%B4_x_ur5%2C%20%CE%B4_y_ur5%2C%20%CE%B4_z_ur5%0A%0A%0A%40app.cell%0Adef%20_(%0A%20%20%20%20ANSITable%2C%0A%20%20%20%20Column%2C%0A%20%20%20%20Gn_p1%2C%0A%20%20%20%20Gn_p2%2C%0A%20%20%20%20Gn_ur5%2C%0A%20%20%20%20%CE%B4_p1%2C%0A%20%20%20%20%CE%B4_p2%2C%0A%20%20%20%20%CE%B4_ur5%2C%0A%20%20%20%20%CE%B4_x_p1%2C%0A%20%20%20%20%CE%B4_x_p2%2C%0A%20%20%20%20%CE%B4_x_ur5%2C%0A%20%20%20%20%CE%B4_y_p1%2C%0A%20%20%20%20%CE%B4_y_p2%2C%0A%20%20%20%20%CE%B4_y_ur5%2C%0A%20%20%20%20%CE%B4_z_p1%2C%0A%20%20%20%20%CE%B4_z_p2%2C%0A%20%20%20%20%CE%B4_z_ur5%2C%0A)%3A%0A%20%20%20%20table%20%3D%20ANSITable(%0A%20%20%20%20%20%20%20%20Column(%22Robot%22)%2C%0A%20%20%20%20%20%20%20%20Column(%22Gn%22)%2C%0A%20%20%20%20%20%20%20%20Column(%22%CE%B4%22)%2C%0A%20%20%20%20%20%20%20%20Column(%22%CE%B4_x%22)%2C%0A%20%20%20%20%20%20%20%20Column(%22%CE%B4_y%22)%2C%0A%20%20%20%20%20%20%20%20Column(%22%CE%B4_z%22)%2C%0A%20%20%20%20%20%20%20%20border%3D%22thin%22%2C%0A%20%20%20%20)%0A%20%20%20%20table.row(%0A%20%20%20%20%20%20%20%20%22UR5%22%2C%0A%20%20%20%20%20%20%20%20f%22%7BGn_ur5%3A.2f%7D%22%2C%0A%20%20%20%20%20%20%20%20f%22%7B%CE%B4_ur5%3A.2f%7D%22%2C%0A%20%20%20%20%20%20%20%20f%22%7B%CE%B4_x_ur5%3A.2f%7D%22%2C%0A%20%20%20%20%20%20%20%20f%22%7B%CE%B4_y_ur5%3A.2f%7D%22%2C%0A%20%20%20%20%20%20%20%20f%22%7B%CE%B4_z_ur5%3A.2f%7D%22%2C%0A%20%20%20%20)%0A%20%20%20%20table.row(%0A%20%20%20%20%20%20%20%20%22p1%22%2C%0A%20%20%20%20%20%20%20%20f%22%7BGn_p1%3A.2f%7D%22%2C%0A%20%20%20%20%20%20%20%20f%22%7B%CE%B4_p1%3A.2f%7D%22%2C%0A%20%20%20%20%20%20%20%20f%22%7B%CE%B4_x_p1%3A.2f%7D%22%2C%0A%20%20%20%20%20%20%20%20f%22%7B%CE%B4_y_p1%3A.2f%7D%22%2C%0A%20%20%20%20%20%20%20%20f%22%7B%CE%B4_z_p1%3A.2f%7D%22%2C%0A%20%20%20%20)%0A%20%20%20%20table.row(%0A%20%20%20%20%20%20%20%20%22p2%22%2C%0A%20%20%20%20%20%20%20%20f%22%7BGn_p2%3A.2f%7D%22%2C%0A%20%20%20%20%20%20%20%20f%22%7B%CE%B4_p2%3A.2f%7D%22%2C%0A%20%20%20%20%20%20%20%20f%22%7B%CE%B4_x_p2%3A.2f%7D%22%2C%0A%20%20%20%20%20%20%20%20f%22%7B%CE%B4_y_p2%3A.2f%7D%22%2C%0A%20%20%20%20%20%20%20%20f%22%7B%CE%B4_z_p2%3A.2f%7D%22%2C%0A%20%20%20%20)%0A%0A%20%20%20%20table.print()%0A%20%20%20%20return%0A%0A%0Aif%20__name__%20%3D%3D%20%22__main__%22%3A%0A%20%20%20%20app.run()%0A
ef2fd2ef8e56df9769bd74755aefaec46ad1725c5e0fada42a77d1d1a3cb79ad