Main Content

optimize

Optimize pcb catalog object

Since R2025a

Description

optimizedobj = optimize(pcbcatobj,frequency,objectivefunction,propertynames,bounds,algorithm) optimizes the pcb components catalog object at the specified frequency.

example

optimizedobj = optimize(___,Name=Value) optimizes the using additional options specified by one or more name-value arguments (Antenna Toolbox).

Examples

collapse all

This example shows the otimization of a Wilkinson Splitter pcb catalog object

Create Wilkinson Splitter

Use the design function to create a Wilkinson Splitter at 3 GHz

obj = design(wilkinsonSplitter,3e9);

Set up the optimization parameters and run

Optimize, visualize, and plot the s parameters

bounds = {10e-3 1e-3 50 2e-3 10e-3; 50e-3 8e-3 100 20e-3 50e-3};
constraints.S11 = '<-10';
constraints.S21 = '>-4';
constraints.S22 = '<-10';
constraints.S12 = '>-4';
prop = {'SplitLineLength','SplitLineWidth','Resistance','PortLineLength','GroundPlaneWidth'};
op = optimoptions('patternsearch');
op.Algorithm ='nups';
op.Display = 'iter';
op.PlotFcn = @psplotbestf;
optiobj = optimize(obj,2e9,"minimizeArea",prop,bounds,"patternsearch","Constraints",constraints,'OptimizerOptions',op);
Iter     Func-count       f(x)      MeshSize     Method
    0           1      0.0033999             1      
    1           4      0.0013999             2     Successful Poll
    2          10    0.000669459             4     Successful Poll
    3          16    0.000669459             2     Refine Mesh
    4          22    0.000669459             1     Refine Mesh
    5          28    0.000669459           0.5     Refine Mesh
    6          34    0.000401675             1     Successful Poll
    7          41    0.000401675           0.5     Refine Mesh
    8          48    0.000401675          0.25     Refine Mesh
    9          52    0.000401675         0.125     Refine Mesh
   10          56    0.000401675        0.0625     Refine Mesh
   11          60    0.000401675       0.03125     Refine Mesh
   12          64    0.000401675       0.01562     Refine Mesh
   13          69    0.000401675      0.007812     Refine Mesh
   14          74    0.000401675      0.003906     Refine Mesh
   15          79    0.000401675      0.001953     Refine Mesh
   16          84    0.000401675     0.0009766     Refine Mesh
   17          92    0.000400947     0.0009766     Successful Poll
   18         100     0.00040022     0.0009766     Successful Poll
   19         108    0.000399493       0.00293     Successful Poll
   20         116    0.000397316      0.008789     Successful Poll
   21         124    0.000390814       0.02637     Successful Poll
   22         132    0.000371566        0.0791     Successful Poll
   23         140     0.00031616        0.2373     Successful Poll
   24         146    0.000197048        0.4746     Successful Poll
   25         153    0.000197048        0.2373     Refine Mesh
   26         160    0.000197048        0.1187     Refine Mesh
   27         165    0.000197048       0.05933     Refine Mesh
   28         170    0.000197048       0.02966     Refine Mesh
   29         174    0.000197048       0.01483     Refine Mesh
   30         178    0.000197048      0.007416     Refine Mesh

Iter     Func-count        f(x)       MeshSize      Method
   31         182    0.000197048      0.003708     Refine Mesh
   32         186    0.000197048      0.001854     Refine Mesh
   33         194    0.000195915      0.002781     Successful Poll
   34         202    0.000194219      0.004171     Successful Poll
   35         210    0.000191682       0.01251     Successful Poll
   36         218    0.000184131       0.03754     Successful Poll
   37         226    0.000165511        0.1126     Successful Poll
   38         234    0.000165511       0.05631     Refine Mesh
   39         242    0.000165511       0.02816     Refine Mesh
   40         250    0.000165511       0.01408     Refine Mesh
   41         258    0.000158529       0.02112     Successful Poll
   42         266    0.000158529       0.01056     Refine Mesh
   43         274    0.000153292       0.01584     Successful Poll
   44         282    0.000151921       0.02376     Successful Poll
   45         290    0.000151921       0.01188     Refine Mesh
   46         297    0.000151921      0.005939     Refine Mesh
   47         303    0.000151921       0.00297     Refine Mesh
   48         310    0.000151921      0.001485     Refine Mesh
   49         318    0.000151191      0.002227     Successful Poll
   50         326    0.000151191      0.001114     Refine Mesh
   51         334    0.000151095       0.00167     Successful Poll
   52         342    0.000151095     0.0008352     Refine Mesh
   53         350    0.000151095     0.0004176     Refine Mesh
   54         358     0.00015089     0.0004176     Successful Poll
   55         366     0.00015089     0.0002088     Refine Mesh
   56         374    0.000150788     0.0002088     Successful Poll
   57         382    0.000150788     0.0001044     Refine Mesh
   58         388    0.000150788      5.22e-05     Refine Mesh
   59         393    0.000150762      5.22e-05     Successful Poll
   60         398    0.000150762      2.61e-05     Refine Mesh

Iter     Func-count        f(x)       MeshSize      Method
   61         403    0.000150762     1.305e-05     Refine Mesh
   62         404    0.000150762     6.525e-06     Refine Mesh
   63         406    0.000150762     3.263e-06     Refine Mesh
   64         408    0.000150762     1.631e-06     Refine Mesh
   65         408    0.000150762     8.156e-07     Refine Mesh
patternsearch stopped because the mesh size was less than options.MeshTolerance.

Figure Pattern Search contains an axes object. The axes object with title Best Function Value: 0.000150762, xlabel Iteration, ylabel Function value contains an object of type scatter.

figure,show(optiobj);

Figure contains an axes object. The axes object with title wilkinsonSplitter element, xlabel x (mm), ylabel y (mm) contains 8 objects of type patch, surface. These objects represent PEC, feed, Teflon, load.

spar = sparameters(optiobj,linspace(1e9,5e9,51));
figure,rfplot(spar)

Figure contains an axes object. The axes object with xlabel Frequency (GHz), ylabel Magnitude (dB) contains 9 objects of type line. These objects represent dB(S_{11}), dB(S_{21}), dB(S_{31}), dB(S_{12}), dB(S_{22}), dB(S_{32}), dB(S_{13}), dB(S_{23}), dB(S_{33}).

Input Arguments

collapse all

PCB object to optimize, specified as an object from the PCB Components Catalog or as a pcbComponent object.

Example: microstripLine

Operating frequency of the PCB Components Catalog object specified as a positive scalar in Hertz.

Example: 70e6

Data Types: double

Objective of antenna or array optimization, specified as a string from one of the following:

  • maximizeBandwidth — Maximize the operation bandwidth of the object. Use this objective function for optimizing in wideband applications.

  • minimizeBandwidth — Minimize the operation bandwidth of the object. Use this objective function for optimizing in narrowband applications.

  • minimizeArea — Minimizes the maximum area occupied by the object.

  • maximizeReturnLoss— Maximizes the retuen loss of the object

  • Custom objective function — Optimizes the antenna or array as per the user defined objective function.

Data Types: string

Properties of the object to be included in the optimization, specified as a cell array of character vectors. The property names are selected as the design variables in optimization. For a pcbComponent object variable names need to specified.

Example: {'Length','Width'}

Data Types: cell

Lower and upper bounds of design variables, specified as a two-row cell array.

Example: For a microstripLine: {7e-3 3e-3 20e-3;20e-3 8e-3 40e-3}

Data Types: double

The name of the algorithm to be used in the optimization.

Example: 'patternsearch'

Data Types: string

Name-Value Arguments

collapse all

Specify optional pairs of arguments as Name1=Value1,...,NameN=ValueN, where Name is the argument name and Value is the corresponding value. Name-value arguments must appear after other arguments, but the order of the pairs does not matter.

Example: Constraints={'Area < 0.03'}

Optimization constraints, specified as a cell array of strings or character vectors. Each character vector or string must be specified in the following format: (analysis function) (inequality sign) (value). Constraints may also be specified in a structure format with each constraint as a separate field in a structure.

The inequality signs '<' or '>' and the values specifies the analysis function limits. For example, 'Area < 0.03' indicates that the area of the optimizing antenna must be less than 0.03 square meter.

Example: {'S11<1-10','S12>-4','S21,-4,'S22<-10','S33,-10','S23<-20'} specified in cell format

Example: C.S11 = '<-10' as a field in a structure.

Data Types: string | struct

Weight or penalty of each constraint function, specified as a row matrix with the same number of inputs as the Constraints, specified in the same order.

Reference impedance of object being optimized, specified as a scalar in ohms, to be used to compute results such as sparameters.

Example: 75

Data Types: double

optimoptions property available for optimizers. The optimoptions can be defined and object can be specified as in input.

Output Arguments

collapse all

Optimized object, returned as a pcbComponentsCatalog object or pcbComponent object.

Version History

Introduced in R2025a