|
1 | 1 | # %%
|
2 | 2 | from dataclasses import dataclass
|
3 |
| -from importlib import reload |
4 |
| -from time import sleep, time |
| 3 | +from time import sleep |
5 | 4 |
|
6 |
| -import matplotlib.pyplot as plt |
7 | 5 | import numpy as np
|
8 | 6 | import pandas as pd
|
9 | 7 | import pyvista as pv
|
10 | 8 | import trimesh
|
11 |
| -from IPython.display import HTML, display |
12 | 9 | from pyvista import PolyData
|
13 | 10 | from scipy.optimize import minimize
|
14 | 11 | from tqdm.auto import tqdm
|
15 | 12 |
|
16 |
| -import irregular_object_packing.packing.plots as plots |
17 | 13 | from irregular_object_packing.mesh.collision import (
|
18 | 14 | compute_all_collisions,
|
19 | 15 | compute_container_violations,
|
|
37 | 33 | IterationData,
|
38 | 34 | OptimizerData,
|
39 | 35 | )
|
40 |
| -from irregular_object_packing.tools.profile import pprofile |
41 | 36 |
|
42 | 37 | # pv.set_jupyter_backend("panel")
|
43 | 38 | LOG_LVL_ERROR = 0
|
@@ -453,105 +448,105 @@ def simple_shapes_setup() -> "Optimizer":
|
453 | 448 | # optimizer.setup()s
|
454 | 449 | # %%
|
455 | 450 |
|
| 451 | +# # # %% |
| 452 | +# # optimizer = Optimizer.simple_shapes_setup() |
| 453 | +# optimizer = Optimizer.default_setup() |
| 454 | +# optimizer.setup() |
456 | 455 | # # %%
|
457 |
| -# optimizer = Optimizer.simple_shapes_setup() |
458 |
| -optimizer = Optimizer.default_setup() |
459 |
| -optimizer.setup() |
460 |
| -# %% |
461 |
| -optimizer.run() |
| 456 | +# optimizer.run() |
462 | 457 |
|
463 |
| -# %% |
| 458 | +# # %% |
464 | 459 |
|
465 |
| -reload(plots) |
466 |
| -save_path = f"../dump/collisions_{time()}" |
467 |
| -plots.generate_gif(optimizer , save_path + ".gif") |
468 |
| -# %% |
| 460 | +# reload(plots) |
| 461 | +# save_path = f"../dump/scale_fix_{time()}" |
| 462 | +# plots.generate_gif(optimizer , save_path + ".gif") |
| 463 | +# # %% |
469 | 464 |
|
470 |
| -display(HTML(f'<img src="{save_path}.gif"/>')) |
| 465 | +# display(HTML(f'<img src="{save_path}.gif"/>')) |
471 | 466 |
|
472 |
| -# %% |
| 467 | +# # %% |
473 | 468 |
|
474 |
| -reload(plots) |
| 469 | +# reload(plots) |
475 | 470 |
|
476 | 471 |
|
477 |
| -def plot_step(optimizer, step): |
478 |
| - plotter = pv.Plotter() |
479 |
| - meshes, cat_meshes, container = optimizer.recreate_scene(step) |
480 |
| - plots.plot_simulation_scene(plotter, meshes, cat_meshes, container, c_kwargs={"show_edges": True, "edge_color": "purple"}) |
481 |
| - plotter.add_text(optimizer.status(step).table_str, position="upper_left") |
| 472 | +# def plot_step(optimizer, step): |
| 473 | +# plotter = pv.Plotter() |
| 474 | +# meshes, cat_meshes, container = optimizer.recreate_scene(step) |
| 475 | +# plots.plot_simulation_scene(plotter, meshes, cat_meshes, container, c_kwargs={"show_edges": True, "edge_color": "purple"}) |
| 476 | +# plotter.add_text(optimizer.status(step).table_str, position="upper_left") |
482 | 477 |
|
483 |
| - plotter.show() |
484 |
| - return plotter |
| 478 | +# plotter.show() |
| 479 | +# return plotter |
485 | 480 |
|
486 | 481 |
|
487 |
| -plot_step(optimizer, 33) |
| 482 | +# plot_step(optimizer, 33) |
488 | 483 |
|
489 | 484 |
|
490 |
| -# %% |
491 |
| -obj_i, step = 6, 31 |
492 |
| -meshes_before, meshes_after, cat_meshes, container = optimizer.recreate_scene(step) |
493 |
| -# plots.plot_step_comparison( |
494 |
| -# optimizer.mesh_before, |
495 |
| -# optimizer.mesh_after(step, obj_i), |
496 |
| -# optimizer.cat_mesh(step, obj_i), |
497 |
| -# # other_meshes=optimizer.violating_meshes(step), |
| 485 | +# # %% |
| 486 | +# obj_i, step = 6, 31 |
| 487 | +# meshes_before, meshes_after, cat_meshes, container = optimizer.recreate_scene(step) |
| 488 | +# # plots.plot_step_comparison( |
| 489 | +# # optimizer.mesh_before, |
| 490 | +# # optimizer.mesh_after(step, obj_i), |
| 491 | +# # optimizer.cat_mesh(step, obj_i), |
| 492 | +# # # other_meshes=optimizer.violating_meshes(step), |
| 493 | +# # ) |
| 494 | +# # %% |
| 495 | +# reload(plots) |
| 496 | +# obj_i = 6 |
| 497 | +# plotter = plots.plot_step_single( |
| 498 | +# meshes_before[obj_i], cat_meshes[obj_i], container=container, cat_opacity=0.7, mesh_opacity=1 , clipped=True, title="cat overlap", |
| 499 | +# c_kwargs={"show_edges": True, "edge_color": "purple", "show_vertices": True, "point_size": 10}, |
| 500 | +# m_kwargs={"show_edges": True, "show_vertices": True, "point_size": 10, }, |
| 501 | +# cat_kwargs={"show_edges": True, "show_vertices": True, "point_size": 5, }, |
498 | 502 | # )
|
499 |
| -# %% |
500 |
| -reload(plots) |
501 |
| -obj_i = 6 |
502 |
| -plotter = plots.plot_step_single( |
503 |
| - meshes_before[obj_i], cat_meshes[obj_i], container=container, cat_opacity=0.7, mesh_opacity=1 , clipped=True, title="cat overlap", |
504 |
| - c_kwargs={"show_edges": True, "edge_color": "purple", "show_vertices": True, "point_size": 10}, |
505 |
| - m_kwargs={"show_edges": True, "show_vertices": True, "point_size": 10, }, |
506 |
| - cat_kwargs={"show_edges": True, "show_vertices": True, "point_size": 5, }, |
507 |
| -) |
508 | 503 |
|
509 |
| -# %% |
510 |
| -# store cat mesh in file |
511 |
| -obj_i, step = 10, 5 |
512 |
| -issue_name = f"cat_penetrate_{int(time())}" |
513 |
| -cat_mesh = optimizer.cat_mesh(step, obj_i) |
514 |
| -cat_filename = f"cat[o{obj_i}i{step}].stl" |
515 |
| -obj_filename = f"obj[o{obj_i}i{step}].stl" |
516 |
| -mkdir(f"../dump/issue_reports/{issue_name}") |
517 |
| -folder_dir = f"../dump/issue_reports/{issue_name}/" |
518 |
| -cat_mesh.save(folder_dir + cat_filename) |
519 |
| -meshes[obj_i].save(folder_dir + obj_filename) |
520 |
| -# %% |
| 504 | +# # %% |
| 505 | +# # store cat mesh in file |
| 506 | +# obj_i, step = 10, 5 |
| 507 | +# issue_name = f"cat_penetrate_{int(time())}" |
| 508 | +# cat_mesh = optimizer.cat_mesh(step, obj_i) |
| 509 | +# cat_filename = f"cat[o{obj_i}i{step}].stl" |
| 510 | +# obj_filename = f"obj[o{obj_i}i{step}].stl" |
| 511 | +# mkdir(f"../dump/issue_reports/{issue_name}") |
| 512 | +# folder_dir = f"../dump/issue_reports/{issue_name}/" |
| 513 | +# cat_mesh.save(folder_dir + cat_filename) |
| 514 | +# meshes[obj_i].save(folder_dir + obj_filename) |
| 515 | +# # %% |
521 | 516 |
|
522 |
| -# %% |
| 517 | +# # %% |
523 | 518 |
|
524 |
| -tetmesh, filtered_tetmesh, _ = optimizer.reconstruct_delaunay(step) |
525 |
| -tetmesh.save(folder_dir + f"tetmesh[i{step}].vtk") |
526 |
| -filtered_tetmesh.save(folder_dir + f"filtered_tetmesh[i{step}].vtk") |
| 519 | +# tetmesh, filtered_tetmesh, _ = optimizer.reconstruct_delaunay(step) |
| 520 | +# tetmesh.save(folder_dir + f"tetmesh[i{step}].vtk") |
| 521 | +# filtered_tetmesh.save(folder_dir + f"filtered_tetmesh[i{step}].vtk") |
527 | 522 |
|
528 | 523 |
|
529 |
| -# %% |
| 524 | +# # %% |
530 | 525 |
|
531 | 526 |
|
532 |
| -@pprofile |
533 |
| -def profile_optimizer(): |
534 |
| - optimizer.run() |
| 527 | +# @pprofile |
| 528 | +# def profile_optimizer(): |
| 529 | +# optimizer.run() |
535 | 530 |
|
536 | 531 |
|
537 |
| -profile_optimizer() |
538 |
| -# # %% |
| 532 | +# profile_optimizer() |
| 533 | +# # # %% |
539 | 534 |
|
540 | 535 |
|
541 |
| -# %% |
| 536 | +# # %% |
542 | 537 |
|
543 | 538 |
|
544 |
| -fig, ax = plt.subplots() |
| 539 | +# fig, ax = plt.subplots() |
545 | 540 |
|
546 |
| -a = [0.05, 0.15, 0.25] |
547 |
| -b = [0.1, 0.2, 0.3, 0.5] |
| 541 | +# a = [0.05, 0.15, 0.25] |
| 542 | +# b = [0.1, 0.2, 0.3, 0.5] |
548 | 543 |
|
549 |
| -x = np.linspace(0, 1, 100) |
| 544 | +# x = np.linspace(0, 1, 100) |
550 | 545 |
|
551 |
| -for ai in a: |
552 |
| - for bi in b: |
553 |
| - print(f"{ai} {bi}`") |
554 |
| - ax.plot(mesh_simplification_condition(x, ai, bi), label=f"a:{ai:.2f}, b:{bi:.2f}") |
555 |
| -ax.legend() |
| 546 | +# for ai in a: |
| 547 | +# for bi in b: |
| 548 | +# print(f"{ai} {bi}`") |
| 549 | +# ax.plot(mesh_simplification_condition(x, ai, bi), label=f"a:{ai:.2f}, b:{bi:.2f}") |
| 550 | +# ax.legend() |
556 | 551 |
|
557 |
| -# %% |
| 552 | +# # %% |
0 commit comments