{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/a-surrogate-objective-framework-for-1","title":"A Surrogate Objective Framework for Prediction+Optimization with Soft Constraints","arxiv_id":"2111.11358","date":"2021-11-22","proceeding":null,"authors":["Kai Yan","Jie Yan","Chuan Luo","Liting Chen","QIngwei Lin","Dongmei Zhang"],"abstract":"Prediction+optimization is a common real-world paradigm where we have to predict problem parameters before solving the optimization problem. However, the criteria by which the prediction model is trained are often inconsistent with the goal of the downstream optimization problem. Recently, decision-focused prediction approaches, such as SPO+ and direct optimization, have been proposed to fill this gap. However, they cannot directly handle the soft constraints with the $max$ operator required in many real-world objectives. This paper proposes a novel analytically differentiable surrogate objective framework for real-world linear and semi-definite negative quadratic programming problems with soft linear and non-negative hard constraints. This framework gives the theoretical bounds on constraints' multipliers, and derives the closed-form solution with respect to predictive parameters and thus gradients for any variable in the problem. We evaluate our method in three applications extended with soft constraints: synthetic linear programming, portfolio optimization, and resource provisioning, demonstrating that our method outperforms traditional two-staged methods and other decision-focused approaches.","url_abs":"https://arxiv.org/abs/2111.11358v1","url_pdf":"https://arxiv.org/pdf/2111.11358v1.pdf","source":{"archive":"pwc-archive (Hugging Face), CC BY-SA 4.0","snapshot":"2025-07-28","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","row_kind":"abstracts"},"code_links":[{"paper_slug":"a-surrogate-objective-framework-for-1","repo_url":"https://github.com/PredOptwithSoftConstraint/PredOptwithSoftConstraint","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"portfolio-optimization","task_name":"Portfolio Optimization"},{"task_slug":"prediction","task_name":"Prediction"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2111.11358","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2111.11358"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"provenance":"deterministic:regex_extraction","url":"https://github.com/PredOptwithSoftConstraint/PredOptwithSoftConstraint","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"unverified":4},"by_repo_kind":{"official":{"samples":4,"ran":0,"repositories":1}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":0,"samples":[{"code_sha256_prefix":"3671b1d0ef41e6eb","entry":"getopt_adapt","repo":"predoptwithsoftconstraint/predoptwithsoftconstraint","repo_kind":"official","path":"resource_provisioning/run_main_newnet.py","file_url":"https://github.com/predoptwithsoftconstraint/predoptwithsoftconstraint/blob/HEAD/resource_provisioning/run_main_newnet.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"3671b1d0ef41e6eb"}},{"code_sha256_prefix":"18ece51055e94503","entry":"getopt_adapt","repo":"predoptwithsoftconstraint/predoptwithsoftconstraint","repo_kind":"official","path":"synthetic_linear_programming/run_main_synth.py","file_url":"https://github.com/predoptwithsoftconstraint/predoptwithsoftconstraint/blob/HEAD/synthetic_linear_programming/run_main_synth.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"18ece51055e94503"}},{"code_sha256_prefix":"7ceacbae1c5ae469","entry":"getval_adapt","repo":"predoptwithsoftconstraint/predoptwithsoftconstraint","repo_kind":"official","path":"resource_provisioning/run_main_newnet.py","file_url":"https://github.com/predoptwithsoftconstraint/predoptwithsoftconstraint/blob/HEAD/resource_provisioning/run_main_newnet.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"7ceacbae1c5ae469"}},{"code_sha256_prefix":"efbad993a05da64a","entry":"getval_adapt","repo":"predoptwithsoftconstraint/predoptwithsoftconstraint","repo_kind":"official","path":"synthetic_linear_programming/run_main_synth.py","file_url":"https://github.com/predoptwithsoftconstraint/predoptwithsoftconstraint/blob/HEAD/synthetic_linear_programming/run_main_synth.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"efbad993a05da64a"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}