.. example2 Example #2 ========== Minimize A Constrained Function ------------------------------- This is problem 6 in Chapter 10 of the book "Numerical Methods in Engineering with Python" by Jaan Kiusalaas. The task is to minimize the function F(x,y) where x+y <= 1 and x >= 0.6 .. code:: python f(x,y) = (x-1)2 + (y-1)2 where: x+y <= 1 and: x >= 0.6 The parasol file begins very much as in Example 1, except that there is a new, second result variable called "sumXY" with a limit placed on it. The setResultVariableLimits statement sets a high limit of 1.0 on "sumXY" in order to satisfy the x+y <= 1 constraint. The parasol file begins as shown below, by importing parasol and defining the problem. :download:`download func_opt_b.py <./_static/func_opt_b.py>` .. code:: python from parasol import * PS = ParametricSoln(taskName="Minimize F(x,y) with x>=0.6 and x+y<=1", subtaskName="F(x,y)=(x-1)^2 + (y-1)^2", author="Charlie Taylor", constraintTolerance=0.001) # design vars have: # name, value, minVal, maxVal, NSteps, units, description PS.addDesVars( ['x',0.6,.6,1.,50,'','X value'], ['y',0.2,-0.2,0.4,50,'','Y value'], ) # result variables have: # name, units, description PS.addResultVars( ['F','','Function Value'], ['sumXY','','Sum of X and Y'], ) PS.setResultVariableLimits(name="sumXY", hiLimit=1.) The control routine is much like Example 1 except there is a second result variable to assign, "sumXY". .. code:: python # the following control routine ties together the system result variables # with the system design variables def myControlRoutine(PS): # get current values of design variables x,y = PS("x","y") # set output variable values PS["F"] = (x-1.)**2 + (y-1.)**2 PS["sumXY"] = x + y The final task required for the setup are to give the ParametricSoln object the name of the control routine (myControlRoutine). .. code:: python # need to tell system the name of the control routine PS.setControlRoutine(myControlRoutine) Again like Example 1, the statements below minimize "F", save a summary, and make some plots to help visualize the results. This example also introduces a carpet plot to display results. .. code:: python # now optimize the system. minimize(PS, figureOfMerit="F", desVars=[ 'x','y'], MaxLoop=500) make2DParametricPlot(PS, sysParam="F", desVar="x", paramVar=["y",0.0,.1,.2,.3,.4,] ,makeHTML=1, dpi=70, linewidth=2, ptData=None, ptLegend='', logX=0, logY=0) makeCarpetPlot(PS, sysParam="F", xResultVar="sumXY", desVarL=[["x",0.6,0.8,1.0],["y",0.0,0.2,0.4]], angDesVarL=[40,0]) makeContourPlot(PS, sysParam="F", desVars=["x","y"]) # now save summary of system PS.saveFullSummary() The only remaining task is to tell parasol to close all files. .. code:: python PS.close() # finish up with output files The output from the minimize operation is shown below. .. raw:: html Minimize F(x,y) with x>=0.6 and x+y<=1

Minimize F(x,y) with x>=0.6 and x+y<=1

F(x,y)=(x-1)^2 + (y-1)^2 ParametricSoln v0.1.7
by: Charlie Taylor August 01, 2016
PRIOR TO MINIMIZE OPTIMIZATION
ParametricSoln: F(x,y)=(x-1)^2 + (y-1)^2
                
    ====================== OPTIMIZATION DESIGN VARIABLES =======================
          name         value        minimum   maximum
             x          0.6          0.6            1 X value
             y          0.2         -0.2          0.4 Y value

     Figure of Merit: Function Value (F) = 0.8  <== Minimize

    ========================== OPTIMIZATION CONSTRAINTS =========================
          name         value        minimum   maximum
         sumXY          0.8 ------------            1 Sum of X and Y
    ============================================================================
    
AFTER MINIMIZE OPTIMIZATION
ParametricSoln: F(x,y)=(x-1)^2 + (y-1)^2
                
    ====================== OPTIMIZATION DESIGN VARIABLES =======================
          name         value        minimum   maximum
             x          0.6          0.6            1 X value
             y          0.4         -0.2          0.4 Y value

     Figure of Merit: Function Value (F) = 0.52  <== Minimize

    ========================== OPTIMIZATION CONSTRAINTS =========================
          name         value        minimum   maximum
         sumXY            1 ------------            1 Sum of X and Y
    ============================================================================
    
Design Variable Summary
Design Variables (nominal values)
NameValueUnitsDescription
y 0.4Y value
x 0.6X value
Result Variables
NameValueUnitsDescriptionLow LimitHigh Limit
sumXY 1Sum of X and Y---<1
F 0.52Function Value------

Design Variable Summary
Design Variables (nominal values)
NameValueUnitsDescription
y 0.4Y value
x 0.6X value
Result Variables
NameValueUnitsDescriptionLow LimitHigh Limit
sumXY 1Sum of X and Y---<1
F 0.52Function Value------

Parametric Solutions
    parasol v0.1.7
    contact: C. Taylor, cet@appliedpython.com