{"id":1863,"date":"2023-06-27T03:31:56","date_gmt":"2023-06-27T10:31:56","guid":{"rendered":"https:\/\/gantovnik.com\/bio-tips\/?p=1863"},"modified":"2023-06-27T04:13:16","modified_gmt":"2023-06-27T11:13:16","slug":"350-optimization-with-gekko-in-python","status":"publish","type":"post","link":"https:\/\/gantovnik.com\/bio-tips\/2023\/06\/350-optimization-with-gekko-in-python\/","title":{"rendered":"#350 Optimization with GEKKO in Python"},"content":{"rendered":"<p><img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=max+%5C%3B+2x+%2B+5y&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002\" alt=\"max &#92;; 2x + 5y\" class=\"latex\" \/><br \/>\n<img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=s.t.&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002\" alt=\"s.t.\" class=\"latex\" \/><br \/>\n<img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=5x+%2B+3y+%5Cle+10&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002\" alt=\"5x + 3y &#92;le 10\" class=\"latex\" \/><br \/>\n<img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=2x+%2B+7y+%5Cle+9&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002\" alt=\"2x + 7y &#92;le 9\" class=\"latex\" \/><\/p>\n<pre class=\"brush: python; title: ; notranslate\" title=\"\">\r\n# Modeling language for large-scale linear, quadratic, nonlinear, \r\n# and mixed-integer programming.\r\n# Supported solvers: APOPT, BPOPT, IPOPT, SNOPT, and MINOS\r\n#pip install gekko in conda window\r\nfrom gekko import GEKKO\r\n# Define environment\r\nprob = GEKKO(remote=False)\r\n# Design variables\r\nx = prob.Var(lb=0,ub=None,integer=True)\r\ny = prob.Var(lb=0,ub=None)\r\n# Objective function\r\nprob.Obj(-(2*x+5*y))\r\n# Add constraints to the environment\r\nprob.Equation(5*x+3*y&lt;=10)\r\nprob.Equation(2*x+7*y&lt;=9)\r\n# Solve the problem (1 = MINLP solver, 2,3: Other Solvers)\r\nprob.options.SOLVER=1  \r\nprob.solve(disp=False) \r\nprint('Results:')\r\nprint('x = ' + str(x.value))\r\nprint('y = ' + str(y.value))\r\nprint('Optimal value of obj = ' + str(-prob.options.objfcnval))\r\n#Results:\r\n#x = &#x5B;1.0]\r\n#y = &#x5B;1.0]\r\n#Optimal value of obj = 7.0\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p># Modeling language for large-scale linear, quadratic, nonlinear, # and mixed-integer programming. # Supported solvers: APOPT, BPOPT, IPOPT, SNOPT, and MINOS #pip install gekko in conda window from gekko import GEKKO # Define environment prob = GEKKO(remote=False) # Design variables x = prob.Var(lb=0,ub=None,integer=True) y = prob.Var(lb=0,ub=None) # Objective function prob.Obj(-(2*x+5*y)) # Add constraints to the [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"nf_dc_page":"","_et_pb_use_builder":"off","_et_pb_old_content":"","_et_gb_content_width":"","_lmt_disableupdate":"yes","_lmt_disable":"","jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[9,2],"tags":[85,25],"class_list":["post-1863","post","type-post","status-publish","format-standard","hentry","category-optimization","category-python","tag-gekko","tag-optimization"],"modified_by":"gantovnik","jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p8bH0k-u3","jetpack_likes_enabled":true,"jetpack-related-posts":[{"id":847,"url":"https:\/\/gantovnik.com\/bio-tips\/2021\/01\/150-optimization-with-a-module-in-python\/","url_meta":{"origin":1863,"position":0},"title":"#150 Optimization with a module in python","author":"gantovnik","date":"2021-01-24","format":false,"excerpt":"#150 Optimization with a module in python ex150.py [code language=\"python\"] import os import numpy as np from scipy.optimize import minimize, Bounds from structure import structure os.chdir(r'D:\\projects\\wordpress\\ex150') os.getcwd() def runoptimization(params,stressmax): objhist=[] def objcon(x): mass,stress=structure(x,params) f=mass g=stressmax-stress objhist.append(mass) return f,g xlast=[] flast=[] glast=[] def obj(x): nonlocal xlast,flast,glast if not np.array_equal(x,xlast): flast,glast =\u2026","rel":"","context":"In &quot;optimization&quot;","block_context":{"text":"optimization","link":"https:\/\/gantovnik.com\/bio-tips\/category\/optimization\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/gantovnik.com\/bio-tips\/wp-content\/uploads\/2021\/01\/ex150-300x200.png?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":1867,"url":"https:\/\/gantovnik.com\/bio-tips\/2023\/06\/351-optimization-using-scipy\/","url_meta":{"origin":1863,"position":1},"title":"#351 Optimization using SciPy","author":"gantovnik","date":"2023-06-28","format":false,"excerpt":"[code language=\"python\"] from scipy.optimize import linprog # set up cost list with cost function coefficient values c = [-2,-3] # set up constraint coefficient matrix A A_ub = [[1,1],[2,1]] # constraint list for upper bounds (less than or equal constraints) b_ub =[10,15] # in addition, i need to prepare a\u2026","rel":"","context":"In &quot;python&quot;","block_context":{"text":"python","link":"https:\/\/gantovnik.com\/bio-tips\/category\/python\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1872,"url":"https:\/\/gantovnik.com\/bio-tips\/2023\/06\/352-optimization-using-genetic-algorithm-in-python\/","url_meta":{"origin":1863,"position":2},"title":"#352 Optimization using Genetic Algorithm in python","author":"gantovnik","date":"2023-06-28","format":false,"excerpt":"[code language=\"python\"] #pip install geneticalgorithm import numpy as np from geneticalgorithm import geneticalgorithm as ga # Define charateristics of variables: varbound=np.array([[0,1],[0,1]]) vartype=np.array([['real'],['real']]) # Define settings of the algorithm: algorithm_param = {'max_num_iteration': 100,\\ 'population_size':60,\\ 'mutation_probability':0.1,\\ 'elit_ratio': 0.01,\\ 'crossover_probability': 0.5,\\ 'parents_portion': 0.3,\\ 'crossover_type':'uniform',\\ 'max_iteration_without_improv':None} # Define your optimization model: def MyOptProb(X): y\u2026","rel":"","context":"In &quot;genetic algorithm&quot;","block_context":{"text":"genetic algorithm","link":"https:\/\/gantovnik.com\/bio-tips\/category\/genetic-algorithm\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/gantovnik.com\/bio-tips\/wp-content\/uploads\/2023\/06\/ga_history.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":1758,"url":"https:\/\/gantovnik.com\/bio-tips\/2023\/01\/335-solution-of-nonlinear-equation-using-brent-method-in-python\/","url_meta":{"origin":1863,"position":3},"title":"#335 Solution of nonlinear equation by Brent&#8217;s method in python","author":"gantovnik","date":"2023-01-06","format":false,"excerpt":"Brent's method is a hybrid root-finding algorithm combining the bisection method, the secant method, and inverse quadratic interpolation. ex335.py [code language=\"python\"] import numpy as np import matplotlib.pyplot as plt import scipy.optimize as optimize def f(x): return 2*x - 1 + 2*np.cos(np.pi*x) x = np.linspace(0.0,2.0,201) y=f(x) plt.plot(x,y,label='$2x - 1 + 2\\\\cos(\\\\pi\u2026","rel":"","context":"In &quot;optimization&quot;","block_context":{"text":"optimization","link":"https:\/\/gantovnik.com\/bio-tips\/category\/optimization\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/gantovnik.com\/bio-tips\/wp-content\/uploads\/2023\/01\/ex335.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":845,"url":"https:\/\/gantovnik.com\/bio-tips\/2021\/01\/149-optimization-in-python\/","url_meta":{"origin":1863,"position":4},"title":"#149 Optimization in python","author":"gantovnik","date":"2021-01-24","format":false,"excerpt":"#149 Optimization in python [code language=\"python\"] import os import numpy as np from scipy.optimize import minimize os.chdir(r'D:\\projects\\wordpress\\ex149') os.getcwd() def obj(x): return (1-x[0])**2 + 100*(x[1]-x[0]**2)**2 def con(x): g=np.zeros(2) g[0]=1-x[0]**2-x[1]**2 g[1]=5-x[0]-3*x[1] return g x0=[5.0,5.0] constraints = {'type': 'ineq','fun': con} options={'disp':True} res = minimize(obj,x0,constraints=constraints,options=options) print('x =',res.x) print('f =',res.fun) print(res.success) [\/code] Output: [code language=\"python\"]\u2026","rel":"","context":"In &quot;optimization&quot;","block_context":{"text":"optimization","link":"https:\/\/gantovnik.com\/bio-tips\/category\/optimization\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1874,"url":"https:\/\/gantovnik.com\/bio-tips\/2023\/06\/353-particle-swarm-optimization-using-python\/","url_meta":{"origin":1863,"position":5},"title":"#353 Particle swarm optimization using python","author":"gantovnik","date":"2023-06-28","format":false,"excerpt":"[code language=\"python\"] # pip install pyswarms from pyswarms.single.global_best import GlobalBestPSO import numpy as np # Define characteristics of variables: x_min = [0, 0] x_max = [1, 1] bounds = (x_min, x_max) dim = len(x_min) # Define settings of the algorithm: pop = 100 iterations = 250 options = {'c1': 0.5,\u2026","rel":"","context":"In &quot;optimization&quot;","block_context":{"text":"optimization","link":"https:\/\/gantovnik.com\/bio-tips\/category\/optimization\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"_links":{"self":[{"href":"https:\/\/gantovnik.com\/bio-tips\/wp-json\/wp\/v2\/posts\/1863","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/gantovnik.com\/bio-tips\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/gantovnik.com\/bio-tips\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/gantovnik.com\/bio-tips\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/gantovnik.com\/bio-tips\/wp-json\/wp\/v2\/comments?post=1863"}],"version-history":[{"count":0,"href":"https:\/\/gantovnik.com\/bio-tips\/wp-json\/wp\/v2\/posts\/1863\/revisions"}],"wp:attachment":[{"href":"https:\/\/gantovnik.com\/bio-tips\/wp-json\/wp\/v2\/media?parent=1863"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/gantovnik.com\/bio-tips\/wp-json\/wp\/v2\/categories?post=1863"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/gantovnik.com\/bio-tips\/wp-json\/wp\/v2\/tags?post=1863"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}