[package]
edition = "2024"
name = "pounce-cli"
version = "0.11.0"
authors = ["John Kitchin <jkitchin@andrew.cmu.edu>"]
build = "build.rs"
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Command-line driver for POUNCE — solves built-in TNLPs and AMPL .nl files."
readme = "README.md"
keywords = [
"ipopt",
"cli",
"ampl",
"nlp",
"optimization",
]
categories = [
"mathematics",
"command-line-utilities",
"science",
]
license = "EPL-2.0"
repository = "https://github.com/jkitchin/pounce"
[features]
default = []
ma57 = [
"dep:pounce-hsl",
"pounce-algorithm/ma57",
]
[lib]
name = "pounce_cli"
path = "src/lib.rs"
[[bin]]
name = "pounce"
path = "src/main.rs"
[[bin]]
name = "pounce_cblib"
path = "src/bin/pounce_cblib.rs"
[[bin]]
name = "pounce_sens"
path = "src/bin/pounce_sens.rs"
[[test]]
name = "ampl_driver_conventions"
path = "tests/ampl_driver_conventions.rs"
[[test]]
name = "auxiliary_presolve"
path = "tests/auxiliary_presolve.rs"
[[test]]
name = "cblib_cbf"
path = "tests/cblib_cbf.rs"
[[test]]
name = "cblib_vs_nlp"
path = "tests/cblib_vs_nlp.rs"
[[test]]
name = "check_x0_subcommand"
path = "tests/check_x0_subcommand.rs"
[[test]]
name = "cite_hint_flag"
path = "tests/cite_hint_flag.rs"
[[test]]
name = "constant_derivative_proofs"
path = "tests/constant_derivative_proofs.rs"
[[test]]
name = "convex_option_readers_match_the_registry"
path = "tests/convex_option_readers_match_the_registry.rs"
[[test]]
name = "convex_route_objective_sense"
path = "tests/convex_route_objective_sense.rs"
[[test]]
name = "convex_time_limit"
path = "tests/convex_time_limit.rs"
[[test]]
name = "crossed_variable_bounds"
path = "tests/crossed_variable_bounds.rs"
[[test]]
name = "curvature_scaling"
path = "tests/curvature_scaling.rs"
[[test]]
name = "declared_model_violation_is_reported"
path = "tests/declared_model_violation_is_reported.rs"
[[test]]
name = "declared_optimum_sentinel"
path = "tests/declared_optimum_sentinel.rs"
[[test]]
name = "degenerate_start_ladder"
path = "tests/degenerate_start_ladder.rs"
[[test]]
name = "derivative_test_option"
path = "tests/derivative_test_option.rs"
[[test]]
name = "dispatch_routing"
path = "tests/dispatch_routing.rs"
[[test]]
name = "exp_cone_vs_nlp"
path = "tests/exp_cone_vs_nlp.rs"
[[test]]
name = "false_local_infeasibility"
path = "tests/false_local_infeasibility.rs"
[[test]]
name = "honor_original_bounds"
path = "tests/honor_original_bounds.rs"
[[test]]
name = "infeasible_status_tol_invariance"
path = "tests/infeasible_status_tol_invariance.rs"
[[test]]
name = "issue848_nonconvex_qp_verdict"
path = "tests/issue848_nonconvex_qp_verdict.rs"
[[test]]
name = "issue848_sqp_second_order_option"
path = "tests/issue848_sqp_second_order_option.rs"
[[test]]
name = "issue850_increase_quality_regression"
path = "tests/issue850_increase_quality_regression.rs"
[[test]]
name = "issue850_second_opinion_is_recorded"
path = "tests/issue850_second_opinion_is_recorded.rs"
[[test]]
name = "issue855_sqp_retry_reaches_the_fallback"
path = "tests/issue855_sqp_retry_reaches_the_fallback.rs"
[[test]]
name = "issue856_sqp_second_order"
path = "tests/issue856_sqp_second_order.rs"
[[test]]
name = "issue857_escalation_gated_quality_rung"
path = "tests/issue857_escalation_gated_quality_rung.rs"
[[test]]
name = "issue857_quality_escalations_are_reported"
path = "tests/issue857_quality_escalations_are_reported.rs"
[[test]]
name = "issue871_nonconvex_qp_equality_row"
path = "tests/issue871_nonconvex_qp_equality_row.rs"
[[test]]
name = "issue872_qp_second_order_scale"
path = "tests/issue872_qp_second_order_scale.rs"
[[test]]
name = "issue873_sqp_second_order_exhibition"
path = "tests/issue873_sqp_second_order_exhibition.rs"
[[test]]
name = "issue876_sqp_nan_kkt_false_optimal"
path = "tests/issue876_sqp_nan_kkt_false_optimal.rs"
[[test]]
name = "issue880_sigma_demotion_reroutes"
path = "tests/issue880_sigma_demotion_reroutes.rs"
[[test]]
name = "issue884_promotion_gate_reads_the_answer"
path = "tests/issue884_promotion_gate_reads_the_answer.rs"
[[test]]
name = "issue892_debugger_does_not_change_the_solve"
path = "tests/issue892_debugger_does_not_change_the_solve.rs"
[[test]]
name = "issue_103_mlsl_terminates"
path = "tests/issue_103_mlsl_terminates.rs"
[[test]]
name = "issue_209_qcqp_socp_status"
path = "tests/issue_209_qcqp_socp_status.rs"
[[test]]
name = "issue_248_jit1_not_unbounded"
path = "tests/issue_248_jit1_not_unbounded.rs"
[[test]]
name = "issue_250_dual_guard_never_worse"
path = "tests/issue_250_dual_guard_never_worse.rs"
[[test]]
name = "issue_257_jit1_node_certificate"
path = "tests/issue_257_jit1_node_certificate.rs"
[[test]]
name = "issue_266_mu_min_scaled_floor"
path = "tests/issue_266_mu_min_scaled_floor.rs"
[[test]]
name = "issue_274_unbounded_not_solved"
path = "tests/issue_274_unbounded_not_solved.rs"
[[test]]
name = "issue_294_dual_sign_regression"
path = "tests/issue_294_dual_sign_regression.rs"
[[test]]
name = "issue_296_bound_multiplier_suffixes"
path = "tests/issue_296_bound_multiplier_suffixes.rs"
[[test]]
name = "issue_313_active_set_rankdef"
path = "tests/issue_313_active_set_rankdef.rs"
[[test]]
name = "issue_314_unbounded_cubic_not_solved"
path = "tests/issue_314_unbounded_cubic_not_solved.rs"
[[test]]
name = "issue_326_active_set_rankdef_triple"
path = "tests/issue_326_active_set_rankdef_triple.rs"
[[test]]
name = "issue_372_infeasible_bounds_status"
path = "tests/issue_372_infeasible_bounds_status.rs"
[[test]]
name = "issue_387_overdetermined_infeasible"
path = "tests/issue_387_overdetermined_infeasible.rs"
[[test]]
name = "issue_438_resto_layer2_verdict"
path = "tests/issue_438_resto_layer2_verdict.rs"
[[test]]
name = "issue_439_required_infeasibility_reduction"
path = "tests/issue_439_required_infeasibility_reduction.rs"
[[test]]
name = "issue_462_convex_capability_errors"
path = "tests/issue_462_convex_capability_errors.rs"
[[test]]
name = "issue_483_user_scaling"
path = "tests/issue_483_user_scaling.rs"
[[test]]
name = "issue_492_row_constant_fold"
path = "tests/issue_492_row_constant_fold.rs"
[[test]]
name = "issue_49_external_funcs"
path = "tests/issue_49_external_funcs.rs"
[[test]]
name = "issue_508_infeasibility_gap_status"
path = "tests/issue_508_infeasibility_gap_status.rs"
[[test]]
name = "issue_508_square_feasible_point_scale"
path = "tests/issue_508_square_feasible_point_scale.rs"
[[test]]
name = "issue_512_adaptive_tiny_step"
path = "tests/issue_512_adaptive_tiny_step.rs"
[[test]]
name = "issue_518_option_files"
path = "tests/issue_518_option_files.rs"
[[test]]
name = "issue_534_resto_decline_progress"
path = "tests/issue_534_resto_decline_progress.rs"
[[test]]
name = "issue_535_lp_falls_back_to_nlp"
path = "tests/issue_535_lp_falls_back_to_nlp.rs"
[[test]]
name = "issue_540_eigena2_superlinear_tail"
path = "tests/issue_540_eigena2_superlinear_tail.rs"
[[test]]
name = "issue_541_eigenb2_degenerate_hessian"
path = "tests/issue_541_eigenb2_degenerate_hessian.rs"
[[test]]
name = "issue_557_shared_cse_hessian"
path = "tests/issue_557_shared_cse_hessian.rs"
[[test]]
name = "issue_588_conic_presolve"
path = "tests/issue_588_conic_presolve.rs"
[[test]]
name = "issue_588_gondzio_correctors"
path = "tests/issue_588_gondzio_correctors.rs"
[[test]]
name = "issue_591_acceptable_level_solved_band"
path = "tests/issue_591_acceptable_level_solved_band.rs"
[[test]]
name = "issue_592_delta_c_walkback"
path = "tests/issue_592_delta_c_walkback.rs"
[[test]]
name = "issue_616_ls_init_downgrades"
path = "tests/issue_616_ls_init_downgrades.rs"
[[test]]
name = "issue_655_subnormal_slack_sigma"
path = "tests/issue_655_subnormal_slack_sigma.rs"
[[test]]
name = "issue_661_resto_divergence_guard"
path = "tests/issue_661_resto_divergence_guard.rs"
[[test]]
name = "issue_678_alpha_red_factor"
path = "tests/issue_678_alpha_red_factor.rs"
[[test]]
name = "issue_683_cancelled_quadratic_degree"
path = "tests/issue_683_cancelled_quadratic_degree.rs"
[[test]]
name = "issue_685_cancelled_quadratic_evaluation"
path = "tests/issue_685_cancelled_quadratic_evaluation.rs"
[[test]]
name = "issue_685_cancelled_quadratic_routing"
path = "tests/issue_685_cancelled_quadratic_routing.rs"
[[test]]
name = "issue_689_direct_driver_scaled_feasible"
path = "tests/issue_689_direct_driver_scaled_feasible.rs"
[[test]]
name = "issue_690_convex_corpus_scale"
path = "tests/issue_690_convex_corpus_scale.rs"
[[test]]
name = "issue_693_relative_infeasibility_stash"
path = "tests/issue_693_relative_infeasibility_stash.rs"
[[test]]
name = "issue_744_convex_bound_relax"
path = "tests/issue_744_convex_bound_relax.rs"
[[test]]
name = "issue_745_postsolve_dual_residual"
path = "tests/issue_745_postsolve_dual_residual.rs"
[[test]]
name = "issue_748_fallback_trigger"
path = "tests/issue_748_fallback_trigger.rs"
[[test]]
name = "issue_757_acceptable_retry"
path = "tests/issue_757_acceptable_retry.rs"
[[test]]
name = "issue_760_convex_bound_relax_magnitude"
path = "tests/issue_760_convex_bound_relax_magnitude.rs"
[[test]]
name = "issue_767_convex_path_reports_like_nlp"
path = "tests/issue_767_convex_path_reports_like_nlp.rs"
[[test]]
name = "issue_785_truncated_nl_rejected"
path = "tests/issue_785_truncated_nl_rejected.rs"
[[test]]
name = "issue_797_neg_curvature_escape"
path = "tests/issue_797_neg_curvature_escape.rs"
[[test]]
name = "issue_797_probe_finds_axis_aligned_curvature"
path = "tests/issue_797_probe_finds_axis_aligned_curvature.rs"
[[test]]
name = "issue_805_neg_curv_floor_ranking"
path = "tests/issue_805_neg_curv_floor_ranking.rs"
[[test]]
name = "issue_815_restoration_ladder"
path = "tests/issue_815_restoration_ladder.rs"
[[test]]
name = "issue_818_reanchor_before_restoration"
path = "tests/issue_818_reanchor_before_restoration.rs"
[[test]]
name = "issue_819_restoration_iteration_count"
path = "tests/issue_819_restoration_iteration_count.rs"
[[test]]
name = "issue_870_mu_fallback_solution_floor"
path = "tests/issue_870_mu_fallback_solution_floor.rs"
[[test]]
name = "issue_884_biactive_dual_divergence"
path = "tests/issue_884_biactive_dual_divergence.rs"
[[test]]
name = "issue_900_variable_bound_violation_row"
path = "tests/issue_900_variable_bound_violation_row.rs"
[[test]]
name = "json_report"
path = "tests/json_report.rs"
[[test]]
name = "l1_fallback_no_panic"
path = "tests/l1_fallback_no_panic.rs"
[[test]]
name = "linear_eq_collapsed_box_duals"
path = "tests/linear_eq_collapsed_box_duals.rs"
[[test]]
name = "linear_eq_reduction"
path = "tests/linear_eq_reduction.rs"
[[test]]
name = "linear_solver_selection"
path = "tests/linear_solver_selection.rs"
[[test]]
name = "linear_system_scaling"
path = "tests/linear_system_scaling.rs"
[[test]]
name = "ma57_binary_starts"
path = "tests/ma57_binary_starts.rs"
[[test]]
name = "minima_sol_duals"
path = "tests/minima_sol_duals.rs"
[[test]]
name = "neg_curv_test_options"
path = "tests/neg_curv_test_options.rs"
[[test]]
name = "nl_header_counts"
path = "tests/nl_header_counts.rs"
[[test]]
name = "nlp_batch"
path = "tests/nlp_batch.rs"
[[test]]
name = "pounce_sens_end_to_end"
path = "tests/pounce_sens_end_to_end.rs"
[[test]]
name = "presolve_certified_infeasibility"
path = "tests/presolve_certified_infeasibility.rs"
[[test]]
name = "presolve_dual_length"
path = "tests/presolve_dual_length.rs"
[[test]]
name = "qp_dispatch_end_to_end"
path = "tests/qp_dispatch_end_to_end.rs"
[[test]]
name = "qp_sens_dispatch"
path = "tests/qp_sens_dispatch.rs"
[[test]]
name = "qp_vs_nlp_iterations"
path = "tests/qp_vs_nlp_iterations.rs"
[[test]]
name = "quad_evaluator_differential"
path = "tests/quad_evaluator_differential.rs"
[[test]]
name = "quad_parse_differential"
path = "tests/quad_parse_differential.rs"
[[test]]
name = "quad_recognizer_differential"
path = "tests/quad_recognizer_differential.rs"
[[test]]
name = "resto_layer1_square_arm"
path = "tests/resto_layer1_square_arm.rs"
[[test]]
name = "scaled_feasible_not_infeasible"
path = "tests/scaled_feasible_not_infeasible.rs"
[[test]]
name = "sens_options_end_to_end"
path = "tests/sens_options_end_to_end.rs"
[[test]]
name = "socp_unverified_falls_back_to_nlp"
path = "tests/socp_unverified_falls_back_to_nlp.rs"
[[test]]
name = "unimplemented_options"
path = "tests/unimplemented_options.rs"
[[test]]
name = "verify_subcommand"
path = "tests/verify_subcommand.rs"
[dependencies.anstream]
version = "0.6"
[dependencies.anstyle]
version = "1"
[dependencies.nix]
version = "0.28"
features = ["signal"]
[dependencies.pounce-algorithm]
version = "0.11.0"
[dependencies.pounce-common]
version = "0.11.0"
[dependencies.pounce-convex]
version = "0.11.0"
[dependencies.pounce-feral]
version = "0.11.0"
[dependencies.pounce-hsl]
version = "0.11.0"
optional = true
[dependencies.pounce-linalg]
version = "0.11.0"
[dependencies.pounce-linsol]
version = "0.11.0"
[dependencies.pounce-nl]
version = "0.11.0"
[dependencies.pounce-nlp]
version = "0.11.0"
features = ["serde"]
[dependencies.pounce-observability]
version = "0.11.0"
[dependencies.pounce-presolve]
version = "0.11.0"
[dependencies.pounce-restoration]
version = "0.11.0"
[dependencies.pounce-sensitivity]
version = "0.11.0"
[dependencies.pounce-solve-report]
version = "0.11.0"
[dependencies.pounce-studio-core]
version = "0.11.0"
[dependencies.rand]
version = "0.8"
[dependencies.rand_chacha]
version = "0.3"
[dependencies.rustyline]
version = "14"
features = ["derive"]
[dependencies.serde]
version = "1"
features = ["derive"]
[dependencies.serde_json]
version = "1"
[dependencies.sobol_burley]
version = "0.5"
[dependencies.tracing]
version = "0.1"
[lints.clippy]
expect_used = "warn"
unwrap_used = "warn"
[lints.clippy.all]
level = "warn"
priority = -1
[lints.rust]
unsafe_op_in_unsafe_fn = "warn"