{"id":1289,"date":"2018-09-17T12:54:30","date_gmt":"2018-09-17T11:54:30","guid":{"rendered":"https:\/\/rosetta.vn\/short\/?p=1289"},"modified":"2019-04-01T11:58:00","modified_gmt":"2019-04-01T10:58:00","slug":"pyomo-for-modeling-optimization-problems","status":"publish","type":"post","link":"https:\/\/rosetta.vn\/short\/2018\/09\/17\/pyomo-for-modeling-optimization-problems\/","title":{"rendered":"Pyomo for modeling optimization problems"},"content":{"rendered":"<blockquote><p>Pyomo is a Python-based open-source software package that supports a diverse set of optimization capabilities for formulating, solving, and analyzing optimization models.<\/p>\n<p>A core capability of Pyomo is modeling structured optimization applications. Pyomo can be used to define general symbolic problems, create specific problem instances, and solve these instances using commercial and open-source solvers. Pyomo&#8217;s modeling objects are embedded within a full-featured high-level programming language providing a rich set of supporting libraries, which distinguishes Pyomo from other algebraic modeling languages like AMPL, AIMMS and GAMS.<\/p>\n<p>Link to website:<a class=\"external free\" href=\"http:\/\/www.pyomo.org\/\" rel=\"nofollow\">http:\/\/www.pyomo.org\/<\/a><\/p><\/blockquote>\n<p>Source:\u00a0<a href=\"http:\/\/ifors.org\/developing_countries\/index.php?title=Pyomo\">http:\/\/ifors.org\/developing_countries\/index.php?title=Pyomo<\/a><\/p>\n<p>Pyomo code for formulating an optimal control problem for a system with Differential Algebratic Equations:<\/p>\n<blockquote>\n<pre><span class=\"gp\">&gt;&gt;&gt; <\/span><span class=\"n\">model<\/span> <span class=\"o\">=<\/span> <span class=\"n\">ConcreteModel<\/span><span class=\"p\">()<\/span>\r\n<span class=\"gp\">&gt;&gt;&gt; <\/span><span class=\"n\">model<\/span><span class=\"o\">.<\/span><span class=\"n\">t1<\/span> <span class=\"o\">=<\/span> <span class=\"n\">ContinuousSet<\/span><span class=\"p\">(<\/span><span class=\"n\">bounds<\/span><span class=\"o\">=<\/span><span class=\"p\">(<\/span><span class=\"mi\">0<\/span><span class=\"p\">,<\/span> <span class=\"mi\">10<\/span><span class=\"p\">))<\/span>\r\n<span class=\"gp\">&gt;&gt;&gt; <\/span><span class=\"n\">model<\/span><span class=\"o\">.<\/span><span class=\"n\">t2<\/span> <span class=\"o\">=<\/span> <span class=\"n\">ContinuousSet<\/span><span class=\"p\">(<\/span><span class=\"n\">bounds<\/span><span class=\"o\">=<\/span><span class=\"p\">(<\/span><span class=\"o\">-<\/span><span class=\"mi\">1<\/span><span class=\"p\">,<\/span> <span class=\"mi\">1<\/span><span class=\"p\">))<\/span>\r\n<span class=\"gp\">&gt;&gt;&gt; <\/span><span class=\"n\">model<\/span><span class=\"o\">.<\/span><span class=\"n\">s<\/span> <span class=\"o\">=<\/span> <span class=\"n\">Set<\/span><span class=\"p\">(<\/span><span class=\"n\">initialize<\/span><span class=\"o\">=<\/span><span class=\"p\">[<\/span><span class=\"s1\">'A'<\/span><span class=\"p\">,<\/span> <span class=\"s1\">'B'<\/span><span class=\"p\">,<\/span> <span class=\"s1\">'C'<\/span><span class=\"p\">])<\/span>\r\n\r\n<span class=\"gp\">&gt;&gt;&gt; <\/span><span class=\"n\">model<\/span><span class=\"o\">.<\/span><span class=\"n\">X<\/span> <span class=\"o\">=<\/span> <span class=\"n\">Var<\/span><span class=\"p\">(<\/span><span class=\"n\">model<\/span><span class=\"o\">.<\/span><span class=\"n\">t1<\/span><span class=\"p\">,<\/span> <span class=\"n\">model<\/span><span class=\"o\">.<\/span><span class=\"n\">t2<\/span><span class=\"p\">,<\/span> <span class=\"n\">model<\/span><span class=\"o\">.<\/span><span class=\"n\">s<\/span><span class=\"p\">)<\/span>\r\n\r\n<span class=\"gp\">&gt;&gt;&gt; <\/span><span class=\"k\">def<\/span> <span class=\"nf\">_intX1<\/span><span class=\"p\">(<\/span><span class=\"n\">m<\/span><span class=\"p\">,<\/span> <span class=\"n\">t1<\/span><span class=\"p\">,<\/span> <span class=\"n\">t2<\/span><span class=\"p\">,<\/span> <span class=\"n\">s<\/span><span class=\"p\">):<\/span>\r\n<span class=\"gp\">... <\/span>   <span class=\"k\">return<\/span> <span class=\"n\">m<\/span><span class=\"o\">.<\/span><span class=\"n\">X<\/span><span class=\"p\">[<\/span><span class=\"n\">t1<\/span><span class=\"p\">,<\/span> <span class=\"n\">t2<\/span><span class=\"p\">,<\/span> <span class=\"n\">s<\/span><span class=\"p\">]<\/span>\r\n<span class=\"gp\">&gt;&gt;&gt; <\/span><span class=\"n\">model<\/span><span class=\"o\">.<\/span><span class=\"n\">intX1<\/span> <span class=\"o\">=<\/span> <span class=\"n\">Integral<\/span><span class=\"p\">(<\/span><span class=\"n\">model<\/span><span class=\"o\">.<\/span><span class=\"n\">t1<\/span><span class=\"p\">,<\/span> <span class=\"n\">model<\/span><span class=\"o\">.<\/span><span class=\"n\">t2<\/span><span class=\"p\">,<\/span> <span class=\"n\">model<\/span><span class=\"o\">.<\/span><span class=\"n\">s<\/span><span class=\"p\">,<\/span> <span class=\"n\">wrt<\/span><span class=\"o\">=<\/span><span class=\"n\">model<\/span><span class=\"o\">.<\/span><span class=\"n\">t1<\/span><span class=\"p\">,<\/span>\r\n<span class=\"gp\">... <\/span>                       <span class=\"n\">rule<\/span><span class=\"o\">=<\/span><span class=\"n\">_intX1<\/span><span class=\"p\">)<\/span>\r\n\r\n<span class=\"gp\">&gt;&gt;&gt; <\/span><span class=\"k\">def<\/span> <span class=\"nf\">_intX2<\/span><span class=\"p\">(<\/span><span class=\"n\">m<\/span><span class=\"p\">,<\/span> <span class=\"n\">t2<\/span><span class=\"p\">,<\/span> <span class=\"n\">s<\/span><span class=\"p\">):<\/span>\r\n<span class=\"gp\">... <\/span>   <span class=\"k\">return<\/span> <span class=\"n\">m<\/span><span class=\"o\">.<\/span><span class=\"n\">intX1<\/span><span class=\"p\">[<\/span><span class=\"n\">t2<\/span><span class=\"p\">,<\/span> <span class=\"n\">s<\/span><span class=\"p\">]<\/span>\r\n<span class=\"gp\">&gt;&gt;&gt; <\/span><span class=\"n\">model<\/span><span class=\"o\">.<\/span><span class=\"n\">intX2<\/span> <span class=\"o\">=<\/span> <span class=\"n\">Integral<\/span><span class=\"p\">(<\/span><span class=\"n\">model<\/span><span class=\"o\">.<\/span><span class=\"n\">t2<\/span><span class=\"p\">,<\/span> <span class=\"n\">model<\/span><span class=\"o\">.<\/span><span class=\"n\">s<\/span><span class=\"p\">,<\/span> <span class=\"n\">wrt<\/span><span class=\"o\">=<\/span><span class=\"n\">model<\/span><span class=\"o\">.<\/span><span class=\"n\">t2<\/span><span class=\"p\">,<\/span> <span class=\"n\">rule<\/span><span class=\"o\">=<\/span><span class=\"n\">_intX2<\/span><span class=\"p\">)<\/span>\r\n\r\n<span class=\"gp\">&gt;&gt;&gt; <\/span><span class=\"k\">def<\/span> <span class=\"nf\">_obj<\/span><span class=\"p\">(<\/span><span class=\"n\">m<\/span><span class=\"p\">):<\/span>\r\n<span class=\"gp\">... <\/span>   <span class=\"k\">return<\/span> <span class=\"nb\">sum<\/span><span class=\"p\">(<\/span><span class=\"n\">m<\/span><span class=\"o\">.<\/span><span class=\"n\">intX2<\/span><span class=\"p\">[<\/span><span class=\"n\">k<\/span><span class=\"p\">]<\/span> <span class=\"k\">for<\/span> <span class=\"n\">k<\/span> <span class=\"ow\">in<\/span> <span class=\"n\">m<\/span><span class=\"o\">.<\/span><span class=\"n\">s<\/span><span class=\"p\">)<\/span>\r\n<span class=\"gp\">&gt;&gt;&gt; <\/span><span class=\"n\">model<\/span><span class=\"o\">.<\/span><span class=\"n\">obj<\/span> <span class=\"o\">=<\/span> <span class=\"n\">Objective<\/span><span class=\"p\">(<\/span><span class=\"n\">rule<\/span><span class=\"o\">=<\/span><span class=\"n\">_obj<\/span><span class=\"p\">)<\/span><\/pre>\n<\/blockquote>\n<p><a href=\"https:\/\/pyomo.readthedocs.io\/en\/latest\/modeling_extensions\/dae.html\">https:\/\/pyomo.readthedocs.io\/en\/latest\/modeling_extensions\/dae.html<\/a><\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Pyomo is a Python-based open-source software package that supports a diverse set of optimization capabilities for formulating, solving, and analyzing optimization models. A core capability of Pyomo is modeling structured optimization applications. Pyomo can be used to define general symbolic<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_mi_skip_tracking":false},"categories":[30,215],"tags":[882,881,880,222],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p8jhJx-kN","_links":{"self":[{"href":"https:\/\/rosetta.vn\/short\/wp-json\/wp\/v2\/posts\/1289"}],"collection":[{"href":"https:\/\/rosetta.vn\/short\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/rosetta.vn\/short\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/rosetta.vn\/short\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/rosetta.vn\/short\/wp-json\/wp\/v2\/comments?post=1289"}],"version-history":[{"count":3,"href":"https:\/\/rosetta.vn\/short\/wp-json\/wp\/v2\/posts\/1289\/revisions"}],"predecessor-version":[{"id":1789,"href":"https:\/\/rosetta.vn\/short\/wp-json\/wp\/v2\/posts\/1289\/revisions\/1789"}],"wp:attachment":[{"href":"https:\/\/rosetta.vn\/short\/wp-json\/wp\/v2\/media?parent=1289"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rosetta.vn\/short\/wp-json\/wp\/v2\/categories?post=1289"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rosetta.vn\/short\/wp-json\/wp\/v2\/tags?post=1289"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}