{"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/llmopt-learning-to-define-and-solve-general","title":"LLMOPT: Learning to Define and Solve General Optimization Problems from Scratch","arxiv_id":"2410.13213","date":"2024-10-17","proceeding":null,"authors":["Caigao Jiang","Xiang Shu","Hong Qian","Xingyu Lu","Jun Zhou","Aimin Zhou","Yang Yu"],"abstract":"Optimization problems are prevalent across various scenarios. Formulating and then solving optimization problems described by natural language often requires highly specialized human expertise, which could block the widespread application of optimization-based decision making. To make problem formulating and solving automated, leveraging large language models (LLMs) has emerged as a potential way. However, this kind of way suffers from the issue of optimization generalization. Namely, the accuracy of most current LLM-based methods and the generality of optimization problem types that they can model are still limited. In this paper, we propose a unified learning-based framework called LLMOPT to boost optimization generalization. Starting from the natural language descriptions of optimization problems and a pre-trained LLM, LLMOPT constructs the introduced five-element formulation as a universal model for learning to define diverse optimization problem types. Then, LLMOPT employs the multi-instruction tuning to enhance both problem formalization and solver code generation accuracy and generality. After that, to prevent hallucinations in LLMs, such as sacrificing solving accuracy to avoid execution errors, model alignment and self-correction mechanism are adopted in LLMOPT. We evaluate the optimization generalization ability of LLMOPT and compared methods across six real-world datasets covering roughly 20 fields such as health, environment, energy and manufacturing, etc. Extensive experiment results show that LLMOPT is able to model various optimization problem types such as linear/nonlinear programming, mixed integer programming and combinatorial optimization, and achieves a notable 11.08% average solving accuracy improvement compared with the state-of-the-art methods. The code is available at https://github.com/caigaojiang/LLMOPT.","url_abs":"https://arxiv.org/abs/2410.13213v1","url_pdf":"https://arxiv.org/pdf/2410.13213v1.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":"llmopt-learning-to-define-and-solve-general","repo_url":"https://github.com/caigaojiang/llmopt","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"none","reach":{"status":"ok"}}],"tasks":[{"task_slug":"code-generation","task_name":"Code Generation"},{"task_slug":"combinatorial-optimization","task_name":"Combinatorial Optimization"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":"https://syntology.ai/paper/2410.13213","atlas_url":"https://app.syntology.ai/?focus=2410.13213","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2410.13213"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-25T09:33:49+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":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/caigaojiang/llmopt","reach":{"status":"ok"}}],"summary":{"ran":10},"by_repo_kind":{"official":{"samples":10,"ran":10,"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":10,"samples":[{"code_sha256_prefix":"11a20109d1d4cded","entry":"Q2C","repo":"caigaojiang/llmopt","repo_kind":"official","path":"prompts/generate_prompt.py","file_url":"https://github.com/caigaojiang/llmopt/blob/HEAD/prompts/generate_prompt.py","link_basis":"plan_row","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"11a20109d1d4cded"}},{"code_sha256_prefix":"424573ce442f730f","entry":"Q2F","repo":"caigaojiang/llmopt","repo_kind":"official","path":"prompts/generate_prompt.py","file_url":"https://github.com/caigaojiang/llmopt/blob/HEAD/prompts/generate_prompt.py","link_basis":"plan_row","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"424573ce442f730f"}},{"code_sha256_prefix":"c29fef2fb87e9fca","entry":"QF2C","repo":"caigaojiang/llmopt","repo_kind":"official","path":"prompts/generate_prompt.py","file_url":"https://github.com/caigaojiang/llmopt/blob/HEAD/prompts/generate_prompt.py","link_basis":"plan_row","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"c29fef2fb87e9fca"}},{"code_sha256_prefix":"41f9c49df2146d47","entry":"aug_0","repo":"caigaojiang/llmopt","repo_kind":"official","path":"prompts/augment_prompt.py","file_url":"https://github.com/caigaojiang/llmopt/blob/HEAD/prompts/augment_prompt.py","link_basis":"plan_row","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"41f9c49df2146d47"}},{"code_sha256_prefix":"ed125bc4a9ffd75d","entry":"aug_1","repo":"caigaojiang/llmopt","repo_kind":"official","path":"prompts/augment_prompt.py","file_url":"https://github.com/caigaojiang/llmopt/blob/HEAD/prompts/augment_prompt.py","link_basis":"plan_row","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"ed125bc4a9ffd75d"}},{"code_sha256_prefix":"d74190a8561fcb4d","entry":"aug_2","repo":"caigaojiang/llmopt","repo_kind":"official","path":"prompts/augment_prompt.py","file_url":"https://github.com/caigaojiang/llmopt/blob/HEAD/prompts/augment_prompt.py","link_basis":"plan_row","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"d74190a8561fcb4d"}},{"code_sha256_prefix":"6897470becf3bcf2","entry":"classification_background","repo":"caigaojiang/llmopt","repo_kind":"official","path":"prompts/classification_prompt.py","file_url":"https://github.com/caigaojiang/llmopt/blob/HEAD/prompts/classification_prompt.py","link_basis":"plan_row","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"6897470becf3bcf2"}},{"code_sha256_prefix":"1b8cb3d807bbac67","entry":"classification_type","repo":"caigaojiang/llmopt","repo_kind":"official","path":"prompts/classification_prompt.py","file_url":"https://github.com/caigaojiang/llmopt/blob/HEAD/prompts/classification_prompt.py","link_basis":"plan_row","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"1b8cb3d807bbac67"}},{"code_sha256_prefix":"d1b60aa8fe0416e6","entry":"preprocess","repo":"caigaojiang/llmopt","repo_kind":"official","path":"sft/sft.py","file_url":"https://github.com/caigaojiang/llmopt/blob/HEAD/sft/sft.py","link_basis":"plan_row","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"d1b60aa8fe0416e6"}},{"code_sha256_prefix":"763114f4e6850981","entry":"self_correction","repo":"caigaojiang/llmopt","repo_kind":"official","path":"prompts/self_correction_prompt.py","file_url":"https://github.com/caigaojiang/llmopt/blob/HEAD/prompts/self_correction_prompt.py","link_basis":"plan_row","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"763114f4e6850981"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}