{"id":1056,"date":"2023-05-25T08:50:49","date_gmt":"2023-05-25T08:50:49","guid":{"rendered":"https:\/\/nag.com\/?page_id=1056"},"modified":"2023-07-07T14:56:50","modified_gmt":"2023-07-07T14:56:50","slug":"solving-quadratically-constrained-quadratic-programming-qcqp-problems","status":"publish","type":"page","link":"https:\/\/nag.com\/solving-quadratically-constrained-quadratic-programming-qcqp-problems\/","title":{"rendered":"Solving quadratically constrained quadratic programming (QCQP) problems"},"content":{"rendered":"\n<div class=\"gbc-title-banner ta ta-lg ta-xl\" style='background-color: #082d48ff; color: #ffffffff; border-radius: 0px; '>\n    <div class=\"container\" style='border-radius: 0px; '>\n        <div class=\"row justify-content--center\" style='color: #ffffffff;'>\n            <div class=\"col-12\"  >\n                <div class=\"wrap pv-4 \" style=\"0px\">\n                                <div class=\"col-12 col-md-12 col-lg-10 col-xl-8  banner-content\"  >\n    \n                                             <h1>Solving quadratically constrained quadratic programming (QCQP) problems<\/h1>\n                    \n                    <div class=\"mt-1 mb-1 content\"><\/div>\n\n                    \n                                    <\/div>\n                <\/div>\n            <\/div>\n        <\/div>\n    <\/div>\n<\/div>\n\n\n\n\n<div class=\"content-split-three pv-4 \" >\n    <div class=\"container\">\n        <div class=\"row justify-content--center content-area-default\">\n            \n \n                <div class=\"col-4                            col-lg-4 \n                            col-xl-4                             ta ta-lg ta-xl                            content-split-three__wrap\n                            order-1 order-lg-1                            mb-2                            \">\n                    <div class=\"content-split-three__col\">\n                        <p>Quadratic functions are a powerful modelling construct in mathematical programming and appear in various disciplines such as statistics, machine learning (Lasso regression), finance (portfolio optimization), engineering (OPF) and control theory. At Mark 27.1 of the <span class=\"nag-n-override\" style=\"margin-left: 0 !important;\"><i>n<\/i><\/span>AG Library, <span class=\"nag-n-override\" style=\"margin-left: 0 !important;\"><i>n<\/i><\/span>AG introduced two new additions to the <span class=\"nag-n-override\" style=\"margin-left: 0 !important;\"><i>n<\/i><\/span>AG Optimization Modelling Suite to help users easily define quadratic objective functions and\/or constraints, seamlessly integrate them with other constraints and solve the resulting problems using compatible solvers without the need of a reformulation or any extra effort.<\/p>\n<p>Formally, a QCQP problem can be written in its pure form with only quadratic functions in both objective and constraints as follows:<\/p>\n                    <\/div>\n                <\/div>\n\n            \n \n                <div class=\"col-4                            col-lg-4 \n                            col-xl-4                             ta ta-lg ta-xl                            content-split-three__wrap\n                            order-2 order-lg-2                            mb-2                            \">\n                    <div class=\"content-split-three__col\">\n                        <p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1057\" src=\"https:\/\/nag.com\/wp-content\/uploads\/2023\/05\/quad3.png\" alt=\"\" width=\"780\" height=\"600\" \/><\/p>\n                    <\/div>\n                <\/div>\n\n            \n            \n        <\/div>\n    <\/div>\n<\/div>\n\n\n<math class=\"equation\" display=\"block\" xmlns=\"http:\/\/www.w3.org\/1998\/Math\/MathML\"> <mtable align=\"axis\" class=\"array\" columnlines=\"none\" equalcolumns=\"false\" equalrows=\"false\" style=\"\"> <mtr><mtd class=\"array\" columnalign=\"left\"><munder><mrow><mstyle class=\"mbox\"><mtext>minimize<\/mtext><\/mstyle><\/mrow><mrow><mi>x<\/mi> <mo class=\"MathClass-rel\">\u2208<\/mo><msup><mrow><mi>\u211c<\/mi><\/mrow><mrow><mi>n<\/mi><\/mrow><\/msup><\/mrow><\/munder><\/mtd><mtd class=\"array\" columnalign=\"left\"><mfrac><mrow><mn>1<\/mn><\/mrow> <mrow><mn>2<\/mn><\/mrow><\/mfrac><msup><mrow><mi>x<\/mi><\/mrow><mrow><mi>T<\/mi><\/mrow><\/msup><msub><mrow><mi>Q<\/mi><\/mrow><mrow> <mn>0<\/mn><\/mrow><\/msub><mi>x<\/mi> <mo class=\"MathClass-bin\">+<\/mo> <msubsup><mrow><mi>r<\/mi><\/mrow><mrow><mn>0<\/mn><\/mrow><mrow><mi>T<\/mi><\/mrow><\/msubsup><mi>x<\/mi> <mo class=\"MathClass-bin\">+<\/mo> <msub><mrow><mi>s<\/mi><\/mrow><mrow> <mn>0<\/mn><\/mrow><\/msub> <\/mtd> <\/mtr> <mtr class=\"vspace\" style=\"font-size:2.58334pt\"><mtd><\/mtd><mtd><\/mtd><\/mtr> <mtr><mtd class=\"array\" columnalign=\"left\"><mstyle class=\"mbox\"><mtext>subject to<\/mtext><\/mstyle> <\/mtd><mtd class=\"array\" columnalign=\"left\"><mfrac><mrow><mn>1<\/mn><\/mrow> <mrow><mn>2<\/mn><\/mrow><\/mfrac><msup><mrow><mi>x<\/mi><\/mrow><mrow><mi>T<\/mi><\/mrow><\/msup><msub><mrow><mi>Q<\/mi><\/mrow><mrow> <mi>i<\/mi><\/mrow><\/msub><mi>x<\/mi> <mo class=\"MathClass-bin\">+<\/mo> <msubsup><mrow><mi>r<\/mi><\/mrow><mrow><mi>i<\/mi><\/mrow><mrow><mi>T<\/mi><\/mrow><\/msubsup><mi>x<\/mi> <mo class=\"MathClass-bin\">+<\/mo> <msub><mrow><mi>s<\/mi><\/mrow><mrow> <mi>i<\/mi><\/mrow><\/msub> <mo class=\"MathClass-rel\">\u2264<\/mo> <mn>0<\/mn><mo class=\"MathClass-punc\">,<\/mo><mspace class=\"quad\" width=\"1em\"><\/mspace><mi>i<\/mi> <mo class=\"MathClass-rel\">=<\/mo> <mn>1<\/mn><mo class=\"MathClass-punc\">,<\/mo><mo class=\"MathClass-op\">\u2026<\/mo><mo class=\"MathClass-punc\">,<\/mo><mi>p<\/mi><mo class=\"MathClass-punc\">,<\/mo><\/mtd><\/mtr><!--ll--><\/mtable> <\/math>\n\n\n<!-- Spacer -->\n<div class=\"pt-4 pt-lg-4 pt-xl-4\" ><\/div>\n\n<div class=\"container content-area-default \">\n    <div class=\"row justify-content--center\">\n        <div class=\"col-12 col-md-12 col-lg-10 col-xl-8\">\n            <p>where \\(Q_{i} \\in \\mathbb{R}^{n \\times n}, i = 0, \\ldots, p\\) are symmetric matrices, \\( r_{i} \\in \\mathbb{R}^{n}, i = 0, \\ldots, p \\) are vectors and \\(s_i\\) scalars. However, in practice it will often be stated with linear constraints and simple bounds as well. The two new routines are\u00a0<span style=\"color: #ff7d21;\"><a style=\"color: #ff7d21;\" href=\"https:\/\/www.nag.com\/numeric\/nl\/nagdoc_latest\/clhtml\/e04\/e04rsc.html\"><span class=\"cmtt-10\">handle<\/span><span class=\"cmtt-10\">_set<\/span><span class=\"cmtt-10\">_qconstr<\/span><\/a>\u00a0<\/span>(<span style=\"color: #ff7d21;\"><a style=\"color: #ff7d21;\" href=\"https:\/\/www.nag.com\/numeric\/nl\/nagdoc_latest\/flhtml\/e04\/e04rsf.html\">e04rs<\/a><\/span>) which defines quadratic functions in\u00a0<span class=\"cmti-10\">assembled form\u00a0<\/span>as above and <span style=\"color: #ff7d21;\"><a style=\"color: #ff7d21;\" href=\"https:\/\/www.nag.com\/numeric\/nl\/nagdoc_latest\/clhtml\/e04\/e04rtc.html\"><span class=\"cmtt-10\">handle<\/span><span class=\"cmtt-10\">_set<\/span><span class=\"cmtt-10\">_qconstr<\/span><span class=\"cmtt-10\">_fac<\/span><\/a>\u00a0<\/span>(<span style=\"color: #ff7d21;\"><a style=\"color: #ff7d21;\" href=\"https:\/\/www.nag.com\/numeric\/nl\/nagdoc_latest\/flhtml\/e04\/e04rtf.html\">e04rt<\/a><\/span>) which uses\u00a0<span class=\"cmti-10\">factored form \\( \\frac{1}{2} x^{T} F_{i}^{T} F_{i} x + r_{i}^{T} x + s_{i} \\). The latter form is useful in many applications where the factors \\(F_i\\) appear naturally, such as in data fitting \\( \\| Fx &#8211; b \\|_{2} \\).<br \/><\/span><\/p>\n        <\/div>\n    <\/div>\n<\/div>\n\n<!-- Spacer -->\n<div class=\"pt-4 pt-lg-4 pt-xl-4\" ><\/div>\n\n\n\n<div class=\"content-split-three pv-4 \" >\n    <div class=\"container\">\n        <div class=\"row justify-content--center content-area-default\">\n            \n \n                <div class=\"col-4                            col-lg-4 \n                            col-xl-4                             ta ta-lg ta-xl                            content-split-three__wrap\n                            order-1 order-lg-1                            mb-2                            \">\n                    <div class=\"content-split-three__col\">\n                        <p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1057\" src=\"https:\/\/nag.com\/wp-content\/uploads\/2023\/05\/quad3.png\" alt=\"\" width=\"780\" height=\"600\" \/><\/p>\n                    <\/div>\n                <\/div>\n\n            \n \n                <div class=\"col-4                            col-lg-4 \n                            col-xl-4                             ta ta-lg ta-xl                            content-split-three__wrap\n                            order-2 order-lg-2                            mb-2                            \">\n                    <div class=\"content-split-three__col\">\n                        <p>The key question is if the problem is\u00a0<span class=\"cmti-10\">convex\u00a0<\/span>or\u00a0<span class=\"cmti-10\">non-convex\u00a0<\/span>as it determines if the problem can be solved via conic optimization (second-order cone programming, SOCP) or only by generic nonlinear programming (NLP). The problem is convex if all \\( Q_{i}, i = 0, \\ldots, p \\) are positive semidefinite (the factored form is positive semidefinite by definition).<\/p>\n                    <\/div>\n                <\/div>\n\n            \n            \n        <\/div>\n    <\/div>\n<\/div>\n\n<!-- Spacer -->\n<div class=\"pt-4 pt-lg-4 pt-xl-4\" ><\/div>\n\n<div class=\"container content-area-default \">\n    <div class=\"row justify-content--center\">\n        <div class=\"col-12 col-md-12 col-lg-10 col-xl-8\">\n            <p><span class=\"cmti-10\">QCQP problems were solvable even without the new additions in this release but a nontrivial knowledge of\u00a0<span style=\"color: #ff7d21;\"><a style=\"color: #ff7d21;\" href=\"https:\/\/www.nag.com\/numeric\/nl\/nagdoc_latest\/clhtml\/e04\/e04ptc.html#fc_form\">reformulation techniques<\/a><\/span>\u00a0was required if an SOCP solver was to be used or callbacks covering the quadratic functions had to be introduced in the general case. To remove the unnecessary burden from practitioners, the new routines provide the quadratic data directly to the solvers with an appropriate automatic reformulation as is required by the chosen solver from the Suite.<\/span><\/p>\n<p>\u00a0<\/p>\n<ul class=\"itemize1\">\n<li class=\"itemize\">For\u00a0<span class=\"cmbx-10\">non-convex QCQP<\/span>, <span class=\"nag-n-override\" style=\"margin-left: 0 !important;\"><i>n<\/i><\/span>AG will use the input data to automatically assembly first and second derivatives that are used by the nonlinear programming solver (such as\u00a0<span style=\"color: #ff7d21;\"><a style=\"color: #ff7d21;\" href=\"https:\/\/www.nag.com\/numeric\/nl\/nagdoc_latest\/clhtml\/e04\/e04stc.html\"><span class=\"cmtt-10\">handle<\/span><span class=\"cmtt-10\">_solve<\/span><span class=\"cmtt-10\">_ipopt<\/span><\/a>\u00a0<\/span>(<span style=\"color: #ff7d21;\"><a style=\"color: #ff7d21;\" href=\"https:\/\/www.nag.com\/numeric\/nl\/nagdoc_latest\/flhtml\/e04\/e04stf.html\">e04st<\/a><\/span>)).<\/li>\n<li class=\"itemize\">Even though\u00a0<span class=\"cmbx-10\">convex QCQP\u00a0<\/span>problems can also be solved via nonlinear programming, we generally recommend the second-order cone programming solver (<span style=\"color: #ff7d21;\"><a style=\"color: #ff7d21;\" href=\"https:\/\/www.nag.com\/numeric\/nl\/nagdoc_latest\/clhtml\/e04\/e04ptc.html\"><span class=\"cmtt-10\">handle<\/span><span class=\"cmtt-10\">_solve<\/span><span class=\"cmtt-10\">_socp<\/span><span class=\"cmtt-10\">_ipm<\/span><\/a>\u00a0<\/span>(<span style=\"color: #ff7d21;\"><a style=\"color: #ff7d21;\" href=\"https:\/\/www.nag.com\/numeric\/nl\/nagdoc_latest\/flhtml\/e04\/e04ptf.html\">e04pt<\/a><\/span>)) due to its computational efficiency and ability to detect infeasibility. In that case, <span class=\"nag-n-override\" style=\"margin-left: 0 !important;\"><i>n<\/i><\/span>AG will take care of the reformulation of quadratic functions to cones, including the factorization of all \\(<span id=\"MathJax-Element-9-Frame\" class=\"MathJax\" style=\"box-sizing: border-box; display: inline; font-style: normal; font-weight: normal; line-height: normal; font-size: 16px; text-indent: 0px; text-align: left; text-transform: none; letter-spacing: normal; word-spacing: normal; overflow-wrap: normal; white-space: nowrap; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; border: 0px; padding: 0px; margin: 0px; position: relative;\" tabindex=\"0\" role=\"presentation\" data-mathml=\"&lt;math xmlns=&quot;http:\/\/www.w3.org\/1998\/Math\/MathML&quot; display=&quot;inline&quot;&gt;&lt;msub&gt;&lt;mrow&gt;&lt;mi&gt;Q&lt;\/mi&gt;&lt;\/mrow&gt;&lt;mrow&gt;&lt;mi&gt;i&lt;\/mi&gt;&lt;\/mrow&gt;&lt;\/msub&gt;&lt;\/math&gt;\"><span id=\"MathJax-Span-231\" class=\"math\"><span id=\"MathJax-Span-232\" class=\"mrow\"><span id=\"MathJax-Span-233\" class=\"msub\"><span id=\"MathJax-Span-234\" class=\"mrow\"><span id=\"MathJax-Span-235\" class=\"mi\">Q_<\/span><\/span><span id=\"MathJax-Span-236\" class=\"mrow\"><span id=\"MathJax-Span-237\" class=\"mi\">i<\/span><\/span><\/span><\/span><\/span><\/span>\\)<span id=\"MathJax-Element-9-Frame\" class=\"MathJax\" style=\"box-sizing: border-box; display: inline; font-style: normal; font-weight: normal; line-height: normal; font-size: 16px; text-indent: 0px; text-align: left; text-transform: none; letter-spacing: normal; word-spacing: normal; overflow-wrap: normal; white-space: nowrap; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; border: 0px; padding: 0px; margin: 0px; position: relative;\" tabindex=\"0\" role=\"presentation\" data-mathml=\"&lt;math xmlns=&quot;http:\/\/www.w3.org\/1998\/Math\/MathML&quot; display=&quot;inline&quot;&gt;&lt;msub&gt;&lt;mrow&gt;&lt;mi&gt;Q&lt;\/mi&gt;&lt;\/mrow&gt;&lt;mrow&gt;&lt;mi&gt;i&lt;\/mi&gt;&lt;\/mrow&gt;&lt;\/msub&gt;&lt;\/math&gt;\"><span class=\"MJX_Assistive_MathML\" role=\"presentation\"><math xmlns=\"http:\/\/www.w3.org\/1998\/Math\/MathML\" display=\"inline\"><msub><mrow><mi><br \/><\/mi><\/mrow><\/msub><\/math><\/span><\/span>\u00a0matrices in an efficient and numerically robust way. This is particularly helpful in the case of singular or close-to-singular matrices.<\/li>\n<\/ul>\n<p>\u00a0<\/p>\n<p>By maintaining the consistency of the interface of the solvers within the\u00a0<span class=\"cmti-10\"><span class=\"nag-n-override\" style=\"margin-left: 0 !important;\"><i>n<\/i><\/span>AG Optimization Modelling Suite<\/span>, e04rs and e04rt become part of the suite that simplifies building models and enhances <span class=\"nag-n-override\" style=\"margin-left: 0 !important;\"><i>n<\/i><\/span>AG\u2019s offering in mathematical optimization. For examples and further reading visit our\u00a0<span style=\"color: #ff7d21;\"><a style=\"color: #ff7d21;\" href=\"https:\/\/github.com\/numericalalgorithmsgroup\/NAGPythonExamples\/tree\/master\/local_optimization\" target=\"_blank\" rel=\"noopener\">GitHub Local optimisation<\/a><\/span>\u00a0page.<\/p>\n        <\/div>\n    <\/div>\n<\/div>\n\n\n<div class=\"gbc-title-banner ta ta-lg ta-xl\" style='border-radius: 0px; '>\n    <div class=\"container\" style='border-radius: 0px; '>\n        <div class=\"row justify-content--center\" >\n            <div class=\"col-12\"  >\n                <div class=\"wrap pv-4 \" style=\"0pxbackground-color: \">\n                                <div class=\"col-12 col-md-12 col-lg-10 col-xl-8  banner-content\"  >\n    \n                    \n                    <div class=\"mt-1 mb-1 content\"><\/div>\n\n                    \n                    <a href='https:\/\/nag.com\/nag-library#KeyContent' style='background-color: #ff7d21ff; color: #ffffffff; border-radius: 30px; font-weight: 600; ' class='btn mr-1  ' ><span class=\"nag-n-override\" style=\"margin-left: 0 !important;\"><i>n<\/i><\/span>AG Library Key Content <i class='fas fa-angle-right'><\/i><\/a>                <\/div>\n                <\/div>\n            <\/div>\n        <\/div>\n    <\/div>\n<\/div>\n\n\n<!-- Spacer -->\n<div class=\"pt-4 pt-lg-4 pt-xl-4\" ><\/div>","protected":false},"excerpt":{"rendered":"<p>Quadratic functions are a powerful modelling construct in mathematical programming and appear in various disciplines such as statistics, machine learning (Lasso regression), finance (portfolio optimization), engineering (OPF) and control theory. At Mark 27.1 of the <span class=\"nag-n-override\" style=\"margin-left: 0 !important;\"><i>n<\/i><\/span>AG Library, <span class=\"nag-n-override\" style=\"margin-left: 0 !important;\"><i>n<\/i><\/span>AG introduced two new additions to the <span class=\"nag-n-override\" style=\"margin-left: 0 !important;\"><i>n<\/i><\/span>AG Optimization Modelling Suite to help users easily define quadratic objective functions and\/or constraints, seamlessly integrate them with other constraints and solve the resulting problems using compatible solvers without the need of a reformulation or any extra effort.<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"content-type":"","footnotes":""},"class_list":["post-1056","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.8 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Solving quadratically constrained quadratic programming (QCQP) problems - nAG<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/nag.com\/solving-quadratically-constrained-quadratic-programming-qcqp-problems\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Solving quadratically constrained quadratic programming (QCQP) problems - nAG\" \/>\n<meta property=\"og:description\" content=\"Quadratic functions are a powerful modelling construct in mathematical programming and appear in various disciplines such as statistics, machine learning (Lasso regression), finance (portfolio optimization), engineering (OPF) and control theory. At Mark 27.1 of the NAG Library, NAG introduced two new additions to the NAG Optimization Modelling Suite to help users easily define quadratic objective functions and\/or constraints, seamlessly integrate them with other constraints and solve the resulting problems using compatible solvers without the need of a reformulation or any extra effort.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/nag.com\/solving-quadratically-constrained-quadratic-programming-qcqp-problems\/\" \/>\n<meta property=\"og:site_name\" content=\"nAG\" \/>\n<meta property=\"article:modified_time\" content=\"2023-07-07T14:56:50+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/nag.com\/wp-content\/uploads\/2024\/02\/NAG-Logo-White-On-Blue.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"12770\" \/>\n\t<meta property=\"og:image:height\" content=\"4353\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:site\" content=\"@NAGTalk\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/nag.com\/solving-quadratically-constrained-quadratic-programming-qcqp-problems\/\",\"url\":\"https:\/\/nag.com\/solving-quadratically-constrained-quadratic-programming-qcqp-problems\/\",\"name\":\"Solving quadratically constrained quadratic programming (QCQP) problems - nAG\",\"isPartOf\":{\"@id\":\"https:\/\/nag.com\/#website\"},\"datePublished\":\"2023-05-25T08:50:49+00:00\",\"dateModified\":\"2023-07-07T14:56:50+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/nag.com\/solving-quadratically-constrained-quadratic-programming-qcqp-problems\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/nag.com\/solving-quadratically-constrained-quadratic-programming-qcqp-problems\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/nag.com\/solving-quadratically-constrained-quadratic-programming-qcqp-problems\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/nag.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Solving quadratically constrained quadratic programming (QCQP) problems\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/nag.com\/#website\",\"url\":\"https:\/\/nag.com\/\",\"name\":\"NAG\",\"description\":\"Robust, trusted numerical software and computational expertise.\",\"publisher\":{\"@id\":\"https:\/\/nag.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/nag.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/nag.com\/#organization\",\"name\":\"Numerical Algorithms Group\",\"alternateName\":\"NAG\",\"url\":\"https:\/\/nag.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/nag.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/nag.com\/wp-content\/uploads\/2023\/11\/NAG-Logo.png\",\"contentUrl\":\"https:\/\/nag.com\/wp-content\/uploads\/2023\/11\/NAG-Logo.png\",\"width\":1244,\"height\":397,\"caption\":\"Numerical Algorithms Group\"},\"image\":{\"@id\":\"https:\/\/nag.com\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/x.com\/NAGTalk\",\"https:\/\/www.linkedin.com\/company\/nag\/\",\"https:\/\/www.youtube.com\/user\/NumericalAlgorithms\",\"https:\/\/github.com\/numericalalgorithmsgroup\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Solving quadratically constrained quadratic programming (QCQP) problems - nAG","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/nag.com\/solving-quadratically-constrained-quadratic-programming-qcqp-problems\/","og_locale":"en_US","og_type":"article","og_title":"Solving quadratically constrained quadratic programming (QCQP) problems - nAG","og_description":"Quadratic functions are a powerful modelling construct in mathematical programming and appear in various disciplines such as statistics, machine learning (Lasso regression), finance (portfolio optimization), engineering (OPF) and control theory. At Mark 27.1 of the NAG Library, NAG introduced two new additions to the NAG Optimization Modelling Suite to help users easily define quadratic objective functions and\/or constraints, seamlessly integrate them with other constraints and solve the resulting problems using compatible solvers without the need of a reformulation or any extra effort.","og_url":"https:\/\/nag.com\/solving-quadratically-constrained-quadratic-programming-qcqp-problems\/","og_site_name":"nAG","article_modified_time":"2023-07-07T14:56:50+00:00","og_image":[{"width":12770,"height":4353,"url":"https:\/\/nag.com\/wp-content\/uploads\/2024\/02\/NAG-Logo-White-On-Blue.jpg","type":"image\/jpeg"}],"twitter_card":"summary_large_image","twitter_site":"@NAGTalk","twitter_misc":{"Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/nag.com\/solving-quadratically-constrained-quadratic-programming-qcqp-problems\/","url":"https:\/\/nag.com\/solving-quadratically-constrained-quadratic-programming-qcqp-problems\/","name":"Solving quadratically constrained quadratic programming (QCQP) problems - nAG","isPartOf":{"@id":"https:\/\/nag.com\/#website"},"datePublished":"2023-05-25T08:50:49+00:00","dateModified":"2023-07-07T14:56:50+00:00","breadcrumb":{"@id":"https:\/\/nag.com\/solving-quadratically-constrained-quadratic-programming-qcqp-problems\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/nag.com\/solving-quadratically-constrained-quadratic-programming-qcqp-problems\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/nag.com\/solving-quadratically-constrained-quadratic-programming-qcqp-problems\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/nag.com\/"},{"@type":"ListItem","position":2,"name":"Solving quadratically constrained quadratic programming (QCQP) problems"}]},{"@type":"WebSite","@id":"https:\/\/nag.com\/#website","url":"https:\/\/nag.com\/","name":"NAG","description":"Robust, trusted numerical software and computational expertise.","publisher":{"@id":"https:\/\/nag.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/nag.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/nag.com\/#organization","name":"Numerical Algorithms Group","alternateName":"NAG","url":"https:\/\/nag.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/nag.com\/#\/schema\/logo\/image\/","url":"https:\/\/nag.com\/wp-content\/uploads\/2023\/11\/NAG-Logo.png","contentUrl":"https:\/\/nag.com\/wp-content\/uploads\/2023\/11\/NAG-Logo.png","width":1244,"height":397,"caption":"Numerical Algorithms Group"},"image":{"@id":"https:\/\/nag.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/NAGTalk","https:\/\/www.linkedin.com\/company\/nag\/","https:\/\/www.youtube.com\/user\/NumericalAlgorithms","https:\/\/github.com\/numericalalgorithmsgroup"]}]}},"_links":{"self":[{"href":"https:\/\/nag.com\/wp-json\/wp\/v2\/pages\/1056","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nag.com\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/nag.com\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/nag.com\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/nag.com\/wp-json\/wp\/v2\/comments?post=1056"}],"version-history":[{"count":4,"href":"https:\/\/nag.com\/wp-json\/wp\/v2\/pages\/1056\/revisions"}],"predecessor-version":[{"id":3197,"href":"https:\/\/nag.com\/wp-json\/wp\/v2\/pages\/1056\/revisions\/3197"}],"wp:attachment":[{"href":"https:\/\/nag.com\/wp-json\/wp\/v2\/media?parent=1056"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}