{"id":845,"date":"2021-01-24T00:45:32","date_gmt":"2021-01-24T08:45:32","guid":{"rendered":"http:\/\/gantovnik.com\/bio-tips\/?p=845"},"modified":"2021-01-24T00:45:32","modified_gmt":"2021-01-24T08:45:32","slug":"149-optimization-in-python","status":"publish","type":"post","link":"https:\/\/gantovnik.com\/bio-tips\/2021\/01\/149-optimization-in-python\/","title":{"rendered":"#149 Optimization in python"},"content":{"rendered":"<p>#149 Optimization in python<\/p>\n<pre class=\"brush: python; title: ; notranslate\" title=\"\">\r\nimport os\r\nimport numpy as np\r\nfrom scipy.optimize import minimize\r\n\r\nos.chdir(r'D:\\projects\\wordpress\\ex149')\r\nos.getcwd()\r\n\r\ndef obj(x):\r\n    return (1-x&#x5B;0])**2 + 100*(x&#x5B;1]-x&#x5B;0]**2)**2\r\n\r\ndef con(x):\r\n    g=np.zeros(2)\r\n    g&#x5B;0]=1-x&#x5B;0]**2-x&#x5B;1]**2\r\n    g&#x5B;1]=5-x&#x5B;0]-3*x&#x5B;1]\r\n    return g\r\n\r\nx0=&#x5B;5.0,5.0]\r\nconstraints = {'type': 'ineq','fun': con}\r\noptions={'disp':True}\r\nres = minimize(obj,x0,constraints=constraints,options=options)\r\nprint('x =',res.x)\r\nprint('f =',res.fun)\r\nprint(res.success)\r\n<\/pre>\n<p>Output:<\/p>\n<pre class=\"brush: python; title: ; notranslate\" title=\"\">\r\nOptimization terminated successfully    (Exit mode 0)\r\n            Current function value: 0.04567481620594842\r\n            Iterations: 21\r\n            Function evaluations: 73\r\n            Gradient evaluations: 21\r\nx = &#x5B;0.78641211 0.61770218]\r\nf = 0.04567481620594842\r\nTrue\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>#149 Optimization in python import os import numpy as np from scipy.optimize import minimize os.chdir(r&#8217;D:\\projects\\wordpress\\ex149&#8242;) os.getcwd() def obj(x): return (1-x&#x5B;0])**2 + 100*(x&#x5B;1]-x&#x5B;0]**2)**2 def con(x): g=np.zeros(2) g&#x5B;0]=1-x&#x5B;0]**2-x&#x5B;1]**2 g&#x5B;1]=5-x&#x5B;0]-3*x&#x5B;1] return g x0=&#x5B;5.0,5.0] constraints = {&#8216;type&#8217;: &#8216;ineq&#8217;,&#8217;fun&#8217;: con} options={&#8216;disp&#8217;:True} res = minimize(obj,x0,constraints=constraints,options=options) print(&#8216;x =&#8217;,res.x) print(&#8216;f =&#8217;,res.fun) print(res.success) Output: Optimization terminated successfully (Exit mode 0) Current function value: 0.04567481620594842 [&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":"","_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":[],"class_list":["post-845","post","type-post","status-publish","format-standard","hentry","category-optimization","category-python"],"modified_by":"gantovnik","jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p8bH0k-dD","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":845,"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":117,"url":"https:\/\/gantovnik.com\/bio-tips\/2019\/01\/optimization-with-contraints\/","url_meta":{"origin":845,"position":1},"title":"#22: Optimization with constraints using SciPy in python","author":"gantovnik","date":"2019-01-03","format":false,"excerpt":"[code language=\"python\"] import os import matplotlib.pyplot as plt import numpy as np from scipy.optimize import minimize os.chdir(r'D:\\data\\scripts\\web1\\ex22') os.getcwd() def f(X): return (X[0]-1)2 + (X[1]-1)2 def g(X): return X[1]-1.75-(X[0]-0.75)**4 def func_X_Y_to_XY(f, X, Y): s = np.shape(X) return f(np.vstack([X.ravel(), Y.ravel()])).reshape(*s) x_opt=minimize(f,(0,0),method='BFGS').x print(x_opt) constraints = [dict(type='ineq', fun=g)] x_cons_opt = minimize(f, (0, 0), method='SLSQP',\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\/2019\/01\/example22.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/gantovnik.com\/bio-tips\/wp-content\/uploads\/2019\/01\/example22.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/gantovnik.com\/bio-tips\/wp-content\/uploads\/2019\/01\/example22.png?resize=525%2C300&ssl=1 1.5x"},"classes":[]},{"id":1758,"url":"https:\/\/gantovnik.com\/bio-tips\/2023\/01\/335-solution-of-nonlinear-equation-using-brent-method-in-python\/","url_meta":{"origin":845,"position":2},"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":1874,"url":"https:\/\/gantovnik.com\/bio-tips\/2023\/06\/353-particle-swarm-optimization-using-python\/","url_meta":{"origin":845,"position":3},"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":[]},{"id":1863,"url":"https:\/\/gantovnik.com\/bio-tips\/2023\/06\/350-optimization-with-gekko-in-python\/","url_meta":{"origin":845,"position":4},"title":"#350 Optimization with GEKKO in Python","author":"gantovnik","date":"2023-06-27","format":false,"excerpt":"$latex max \\; 2x + 5y$ $latex s.t.$ $latex 5x + 3y \\le 10$ $latex 2x + 7y \\le 9$ [code language=\"python\"] # 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\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":1872,"url":"https:\/\/gantovnik.com\/bio-tips\/2023\/06\/352-optimization-using-genetic-algorithm-in-python\/","url_meta":{"origin":845,"position":5},"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":[]}],"_links":{"self":[{"href":"https:\/\/gantovnik.com\/bio-tips\/wp-json\/wp\/v2\/posts\/845","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=845"}],"version-history":[{"count":0,"href":"https:\/\/gantovnik.com\/bio-tips\/wp-json\/wp\/v2\/posts\/845\/revisions"}],"wp:attachment":[{"href":"https:\/\/gantovnik.com\/bio-tips\/wp-json\/wp\/v2\/media?parent=845"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/gantovnik.com\/bio-tips\/wp-json\/wp\/v2\/categories?post=845"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/gantovnik.com\/bio-tips\/wp-json\/wp\/v2\/tags?post=845"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}