{"id":2467,"date":"2023-06-27T15:14:06","date_gmt":"2023-06-27T15:14:06","guid":{"rendered":"https:\/\/nag.com\/?page_id=2467"},"modified":"2023-06-27T15:14:51","modified_gmt":"2023-06-27T15:14:51","slug":"active-set-method-for-nonlinear-optimization","status":"publish","type":"page","link":"https:\/\/nag.com\/active-set-method-for-nonlinear-optimization\/","title":{"rendered":"Active-set Method for Nonlinear Optimization"},"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>Active-set Method for Nonlinear Optimization<\/h1>\n                    \n                    <div class=\"mt-1 mb-1 content\"><p><span class=\"nag-n-override\" style=\"margin-left: 0 !important;\"><i>n<\/i><\/span>AG Library mini-article<\/p>\n<\/div>\n\n                    \n                                    <\/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>\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>One of the key algorithms to address general constrained nonlinear optimization problems is an active-set sequential quadratic programming (SQP) method. It is a workhorse for many commercial and open-source solvers. The <span class=\"nag-n-override\" style=\"margin-left: 0 !important;\"><i>n<\/i><\/span>AG\u00ae Library offers a state-of-the-art version within the\u00a0<a title=\"Optimization Modelling Suite\" href=\"https:\/\/nag.com\/mathematical-optimization\/\" target=\"_blank\" rel=\"noopener\">Optimization Modelling Suite<\/a>. It complements <span class=\"nag-n-override\" style=\"margin-left: 0 !important;\"><i>n<\/i><\/span>AG&#8217;s\u00a0<a title=\"Interior Point Method\" href=\"https:\/\/support.nag.com\/industryarticles\/nlp_ipm_mk26_v1.1.2.pdf\" target=\"_blank\" rel=\"noopener\" data-lf-fd-inspected-lynor8xka1oawqjz=\"true\">interior point method (IPM)<\/a>\u00a0and other specialized methods for nonlinear optimization such as\u00a0<a title=\"Derivative-free Optimization\" href=\"https:\/\/nag.com\/derivative-free-optimization-dfo\/\" target=\"_blank\" rel=\"noopener\">Derivative Free Optimization (DFO)<\/a>\u00a0or\u00a0<a title=\"First Order Method\" href=\"https:\/\/nag.com\/limited-memory-nonlinear-conjugate-gradient-solver\/\" target=\"_blank\" rel=\"noopener\">first order method<\/a>.<\/p>\n<p>\u00a0<\/p>\n<h3 class=\"field field--name-field-paragraph-title field--type-string field--label-hidden field--item\">Applications<\/h3>\n<div class=\"field field--name-field-paragraph-text field--type-text-long field--label-hidden field--item\">\n<p>NLP is commonplace across many industries and is used within real-world applications, such as optimal control, for example, trajectory optimization, robotics and other optimization of processes described by differential equations, engineering, finance or manufacturing amongst many myriads of examples.<\/p>\n<\/div>\n<p>\u00a0<\/p>\n<h3 class=\"field field--name-field-paragraph-title field--type-string field--label-hidden field--item\">How the Active-Set Method Works<\/h3>\n<div class=\"field field--name-field-paragraph-text field--type-text-long field--label-hidden field--item\">\n<div class=\"tex2jax_process\">\n<p>Our active-set nonlinear solver solves at each iteration a quadratic approximation of the original problem and it tries to estimate which constraints need to be kept (are active) and which can be ignored. A practical consequence is that the algorithm partly \u201cwalks along the boundary\u201d of the feasible region given by the constraints. The iterates are thus early on feasible with regard to all linear constraints (and a local linearization of the nonlinear constraints) which is preserved through the iterations. The complementarity is satisfied by default and once the active set is determined correctly and optimality is within the tolerance, the solver finishes. The number of iterations might be high, but each is relatively cheap.<\/p>\n<p>\u00a0<\/p>\n<\/div>\n<h3 class=\"field field--name-field-paragraph-title field--type-string field--label-hidden field--item\">Important Update of the Sparse SQP Solver at Mark 28.4<\/h3>\n<div class=\"field field--name-field-paragraph-text field--type-text-long field--label-hidden field--item\">\n<p><strong>Performance and stability improvements<\/strong>\u00a0\u2013 Benchmark studies on 826 NLP (CUTEst) problems show that the new\u00a0<a href=\"http:\/\/support.nag.com\/numeric\/nl\/nagdoc_latest\/clhtml\/e04\/e04src.html\" target=\"_blank\" rel=\"noopener\">handle_solve_ssqp<\/a>\u00a0(<a href=\"https:\/\/www.nag.com\/numeric\/nl\/nagdoc_latest\/flhtml\/e04\/e04srf.html\">e04sr<\/a>) is faster than the solver it replaces\u00a0<a href=\"http:\/\/support.nag.com\/numeric\/nl\/nagdoc_latest\/clhtml\/e04\/e04vhc.html\" target=\"_blank\" rel=\"noopener\">nlp2_sparse_solve<\/a>\u00a0(<a href=\"https:\/\/www.nag.com\/numeric\/nl\/nagdoc_latest\/flhtml\/e04\/e04vhf.html\">e04vh<\/a>) in at least 10% of problems. It also revealed that e04sr is more robust that e04vh, solving 6.7% more problems. Specifically, it reveals that it is 25% faster in 13% of the problems and twice as fast on 5.7% of the problems. For the hardest 10% of the problems, e04sr is 1.25 times faster in 33% of those.<\/p>\n<\/div>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-2472 size-full\" src=\"https:\/\/nag.com\/wp-content\/uploads\/2023\/06\/sparse-sqp-solver.png\" alt=\"\" width=\"714\" height=\"589\" \/><\/p>\n<\/div>\n<p><strong>New intuitive interface<\/strong>\u00a0\u2013 the <span class=\"nag-n-override\" style=\"margin-left: 0 !important;\"><i>n<\/i><\/span>AG\u00ae\u00a0<a title=\"Optimization Modelling Suite\" href=\"https:\/\/nag.com\/mathematical-optimization\/\" target=\"_blank\" rel=\"noopener\">Optimization Modelling Suite<\/a>\u00a0provides an easy to use interface for the solver including an extended modelling feature with a rich API to define problems and allowing for easy switching between different algorithms as and when required.<\/p>\n<p>\u00a0<\/p>\n<p>\u00a0<\/p>\n        <\/div>\n    <\/div>\n<\/div>\n\n\n<div class=\"gbc-title-banner tac tac-lg tac-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-10 col-lg-8 col-xl-6  banner-content\"  >\n    \n                                             <h1>Try The <span class=\"nag-n-override\" style=\"margin-left: 0 !important;\"><i>n<\/i><\/span>AG Library Now<\/h1>\n                    \n                    <div class=\"mt-1 mb-1 content\"><\/div>\n\n                    \n                    <a href='https:\/\/support.nag.com\/content\/getting-started-nag-library' style='background-color: #ff7d21ff; color: #ffffffff; border-radius: 30px; font-weight: 600; ' class='btn mr-1  ' >Trial Now <i class='fas fa-angle-right'><\/i><\/a>                <\/div>\n                <\/div>\n            <\/div>\n        <\/div>\n    <\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":3,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"content-type":"","footnotes":""},"class_list":["post-2467","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>Active-set Method for Nonlinear Optimization - 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\/active-set-method-for-nonlinear-optimization\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Active-set Method for Nonlinear Optimization - nAG\" \/>\n<meta property=\"og:url\" content=\"https:\/\/nag.com\/active-set-method-for-nonlinear-optimization\/\" \/>\n<meta property=\"og:site_name\" content=\"nAG\" \/>\n<meta property=\"article:modified_time\" content=\"2023-06-27T15:14:51+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<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/nag.com\/active-set-method-for-nonlinear-optimization\/\",\"url\":\"https:\/\/nag.com\/active-set-method-for-nonlinear-optimization\/\",\"name\":\"Active-set Method for Nonlinear Optimization - nAG\",\"isPartOf\":{\"@id\":\"https:\/\/nag.com\/#website\"},\"datePublished\":\"2023-06-27T15:14:06+00:00\",\"dateModified\":\"2023-06-27T15:14:51+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/nag.com\/active-set-method-for-nonlinear-optimization\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/nag.com\/active-set-method-for-nonlinear-optimization\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/nag.com\/active-set-method-for-nonlinear-optimization\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/nag.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Active-set Method for Nonlinear Optimization\"}]},{\"@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":"Active-set Method for Nonlinear Optimization - 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\/active-set-method-for-nonlinear-optimization\/","og_locale":"en_US","og_type":"article","og_title":"Active-set Method for Nonlinear Optimization - nAG","og_url":"https:\/\/nag.com\/active-set-method-for-nonlinear-optimization\/","og_site_name":"nAG","article_modified_time":"2023-06-27T15:14:51+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","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/nag.com\/active-set-method-for-nonlinear-optimization\/","url":"https:\/\/nag.com\/active-set-method-for-nonlinear-optimization\/","name":"Active-set Method for Nonlinear Optimization - nAG","isPartOf":{"@id":"https:\/\/nag.com\/#website"},"datePublished":"2023-06-27T15:14:06+00:00","dateModified":"2023-06-27T15:14:51+00:00","breadcrumb":{"@id":"https:\/\/nag.com\/active-set-method-for-nonlinear-optimization\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/nag.com\/active-set-method-for-nonlinear-optimization\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/nag.com\/active-set-method-for-nonlinear-optimization\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/nag.com\/"},{"@type":"ListItem","position":2,"name":"Active-set Method for Nonlinear Optimization"}]},{"@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\/2467","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\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/nag.com\/wp-json\/wp\/v2\/comments?post=2467"}],"version-history":[{"count":9,"href":"https:\/\/nag.com\/wp-json\/wp\/v2\/pages\/2467\/revisions"}],"predecessor-version":[{"id":2482,"href":"https:\/\/nag.com\/wp-json\/wp\/v2\/pages\/2467\/revisions\/2482"}],"wp:attachment":[{"href":"https:\/\/nag.com\/wp-json\/wp\/v2\/media?parent=2467"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}