#!/usr/bin/env python ''' Solves Constrained Toy Problem Using Variable Groups. min x1^2 + x2^2 s.t.: 3 - x1 <= 0 2 - x2 <= 0 -10 <= x1 <= 10 -10 <= x2 <= 10 ''' # ============================================================================= # Standard Python modules # ============================================================================= import os, sys, time import numpy # ============================================================================= # Extension modules # ============================================================================= from pyOpt import Optimization from pyOpt import SLSQP # ============================================================================= # # ============================================================================= def objfunc(xn): x0 = xn['x'] x1 = xn['z'] f = x0**2 + x1**2 g = [0.0]*2 g[0] = 3 - x0 g[1] = 2 - x1 fail = 0 return f,g,fail # ============================================================================= # # ============================================================================= # Instantiate Optimization Problem opt_prob = Optimization('TOY Constrained Problem',objfunc,use_groups=True) opt_prob.addVarGroup('a',2,'c',value=1.0, lower=0.0, upper=10) opt_prob.delVarGroup('a') opt_prob.addVar('x','c',value=1.0, lower=0.0, upper=10) opt_prob.addVarGroup('y',2,'c',value=1.0, lower=0.0, upper=10) opt_prob.delVarGroup('y') opt_prob.addVarGroup('z',1,'c',value=1.0, lower=0.0, upper=10) opt_prob.addVarGroup('b',5,'c',value=3.0, lower=0.0, upper=10) opt_prob.delVarGroup('b') opt_prob.addObj('f') opt_prob.addCon('g1','i') opt_prob.addCon('g2','i') print opt_prob # Instantiate Optimizer (SLSQP) & Solve Problem slsqp = SLSQP() slsqp(opt_prob) print opt_prob.solution(0)