Binary Optimization with Budget Constraints#
References:#
Attia, Ahmed. “Probabilistic approach to black-box binary optimization with budget constraints: Application to sensor placement.” arXiv preprint arXiv:2406.05830 (2024).
[1]:
from pyoed.optimization.binary_optimization import ConstrainedBinaryReinforceOptimizer
from pyoed.optimization.test_functions.binary_test_functions import WeightedAlternatingSignOptimizationFunction
Maximization problem#
Create the optimizer, solve maximization problem, and then plot results
[2]:
## Settings
# Objective function (Define your own)
fun = WeightedAlternatingSignOptimizationFunction(10)
# Dimension of the optimization variable
size = 10
# The budget constraint(s)
budgets = range(5) # the constraint on binary x is: sum(x) < 5
## Create the optimizer
optimizer = ConstrainedBinaryReinforceOptimizer(
configs=dict(
fun=fun,
size=size,
budgets=budgets,
maximize=True,
maxiter=500,
random_seed=1011, # for reproducibility
)
)
[3]:
# Solve the optimization problem
maximization_results = optimizer.solve()
Iter: [000001] ; Step-Update-Norm: 8.22463722e-02
Iter: [000002] ; Step-Update-Norm: 9.74128131e-02
Iter: [000003] ; Step-Update-Norm: 6.77243893e-02
Iter: [000004] ; Step-Update-Norm: 7.76015943e-02
Iter: [000005] ; Step-Update-Norm: 4.89062959e-02
Iter: [000006] ; Step-Update-Norm: 5.46709698e-02
Iter: [000007] ; Step-Update-Norm: 4.85017039e-02
Iter: [000008] ; Step-Update-Norm: 4.54187855e-02
Iter: [000009] ; Step-Update-Norm: 4.93955083e-02
Iter: [000010] ; Step-Update-Norm: 3.74364241e-02
Iter: [000011] ; Step-Update-Norm: 2.78479460e-02
Iter: [000012] ; Step-Update-Norm: 1.93901868e-02
Iter: [000013] ; Step-Update-Norm: 2.92714575e-02
Iter: [000014] ; Step-Update-Norm: 4.27369801e-02
Iter: [000015] ; Step-Update-Norm: 1.62041438e-02
Iter: [000016] ; Step-Update-Norm: 3.30661038e-02
Iter: [000017] ; Step-Update-Norm: 2.32047783e-02
Iter: [000018] ; Step-Update-Norm: 1.67607161e-02
Iter: [000019] ; Step-Update-Norm: 1.53384552e-02
Iter: [000020] ; Step-Update-Norm: 1.12880279e-02
Iter: [000021] ; Step-Update-Norm: 1.22608671e-02
Iter: [000022] ; Step-Update-Norm: 1.03054719e-02
Iter: [000023] ; Step-Update-Norm: 9.06378947e-03
Iter: [000024] ; Step-Update-Norm: 6.97801092e-03
Iter: [000025] ; Step-Update-Norm: 5.30171376e-03
Iter: [000026] ; Step-Update-Norm: 6.06147784e-03
Iter: [000027] ; Step-Update-Norm: 1.13264059e-02
Iter: [000028] ; Step-Update-Norm: 3.98961517e-03
Iter: [000029] ; Step-Update-Norm: 4.44954629e-03
Iter: [000030] ; Step-Update-Norm: 6.72716562e-03
Iter: [000031] ; Step-Update-Norm: 2.60261268e-03
Iter: [000032] ; Step-Update-Norm: 1.79961991e-02
Iter: [000033] ; Step-Update-Norm: 4.93515429e-03
Iter: [000034] ; Step-Update-Norm: 3.53656770e-03
Iter: [000035] ; Step-Update-Norm: 2.93845043e-03
Iter: [000036] ; Step-Update-Norm: 1.82325697e-03
Iter: [000037] ; Step-Update-Norm: 1.86435233e-03
Iter: [000038] ; Step-Update-Norm: 1.51376469e-03
Iter: [000039] ; Step-Update-Norm: 1.17602349e-03
Iter: [000040] ; Step-Update-Norm: 1.25753663e-03
Iter: [000041] ; Step-Update-Norm: 1.00905664e-03
Iter: [000042] ; Step-Update-Norm: 8.45981351e-04
Iter: [000043] ; Step-Update-Norm: 5.82544659e-02
Iter: [000044] ; Step-Update-Norm: 8.28327141e-03
Iter: [000045] ; Step-Update-Norm: 1.16934542e-02
Iter: [000046] ; Step-Update-Norm: 1.66075816e-02
Iter: [000047] ; Step-Update-Norm: 1.92513675e-02
Iter: [000048] ; Step-Update-Norm: 1.10300440e-02
Iter: [000049] ; Step-Update-Norm: 9.22824431e-03
Iter: [000050] ; Step-Update-Norm: 8.68329589e-03
Iter: [000051] ; Step-Update-Norm: 4.62284735e-03
Iter: [000052] ; Step-Update-Norm: 4.76981808e-03
Iter: [000053] ; Step-Update-Norm: 3.51898579e-03
Iter: [000054] ; Step-Update-Norm: 1.71909648e-02
Iter: [000055] ; Step-Update-Norm: 3.81628876e-03
Iter: [000056] ; Step-Update-Norm: 5.95021112e-03
Iter: [000057] ; Step-Update-Norm: 1.54602785e-02
Iter: [000058] ; Step-Update-Norm: 1.10257153e-02
Iter: [000059] ; Step-Update-Norm: 6.23445037e-03
Iter: [000060] ; Step-Update-Norm: 4.01363408e-03
Iter: [000061] ; Step-Update-Norm: 4.14811860e-03
Iter: [000062] ; Step-Update-Norm: 8.12327540e-03
Iter: [000063] ; Step-Update-Norm: 2.99739925e-03
Iter: [000064] ; Step-Update-Norm: 9.37362417e-03
Iter: [000065] ; Step-Update-Norm: 2.61161463e-03
Iter: [000066] ; Step-Update-Norm: 3.24740665e-03
Iter: [000067] ; Step-Update-Norm: 9.81731186e-03
Iter: [000068] ; Step-Update-Norm: 2.16937943e-03
Iter: [000069] ; Step-Update-Norm: 1.84327436e-03
Iter: [000070] ; Step-Update-Norm: 1.68392890e-03
Iter: [000071] ; Step-Update-Norm: 3.31353902e-03
Iter: [000072] ; Step-Update-Norm: 1.07807992e-03
Iter: [000073] ; Step-Update-Norm: 1.27846955e-03
Iter: [000074] ; Step-Update-Norm: 9.49070093e-04
Iter: [000075] ; Step-Update-Norm: 1.09167268e-03
Iter: [000076] ; Step-Update-Norm: 5.65641803e-03
Iter: [000077] ; Step-Update-Norm: 1.09923358e-03
Iter: [000078] ; Step-Update-Norm: 1.63056358e-02
Iter: [000079] ; Step-Update-Norm: 7.73165431e-03
Iter: [000080] ; Step-Update-Norm: 4.71809242e-03
Iter: [000081] ; Step-Update-Norm: 2.01348049e-03
Iter: [000082] ; Step-Update-Norm: 1.25771651e-03
Iter: [000083] ; Step-Update-Norm: 4.85879881e-03
Iter: [000084] ; Step-Update-Norm: 2.15458746e-03
Iter: [000085] ; Step-Update-Norm: 9.64443389e-04
Iter: [000086] ; Step-Update-Norm: 8.01569593e-04
Iter: [000087] ; Step-Update-Norm: 8.42915255e-04
Iter: [000088] ; Step-Update-Norm: 8.30009458e-04
Iter: [000089] ; Step-Update-Norm: 6.12920345e-04
Iter: [000090] ; Step-Update-Norm: 7.17103952e-04
Iter: [000091] ; Step-Update-Norm: 6.54632709e-04
Iter: [000092] ; Step-Update-Norm: 1.67243532e-02
Iter: [000093] ; Step-Update-Norm: 2.29805405e-03
Iter: [000094] ; Step-Update-Norm: 2.09432413e-03
Iter: [000095] ; Step-Update-Norm: 3.53900941e-03
Iter: [000096] ; Step-Update-Norm: 4.43362014e-03
Iter: [000097] ; Step-Update-Norm: 2.48564382e-03
Iter: [000098] ; Step-Update-Norm: 1.84879624e-03
Iter: [000099] ; Step-Update-Norm: 1.92216782e-03
Iter: [000100] ; Step-Update-Norm: 1.76672985e-03
Iter: [000101] ; Step-Update-Norm: 1.51840028e-03
Iter: [000102] ; Step-Update-Norm: 1.37756720e-03
Iter: [000103] ; Step-Update-Norm: 5.19495538e-03
Iter: [000104] ; Step-Update-Norm: 1.94669706e-03
Iter: [000105] ; Step-Update-Norm: 2.99107477e-03
Iter: [000106] ; Step-Update-Norm: 1.82731836e-03
Iter: [000107] ; Step-Update-Norm: 1.71116060e-03
Iter: [000108] ; Step-Update-Norm: 2.90401670e-03
Iter: [000109] ; Step-Update-Norm: 9.64765452e-04
Iter: [000110] ; Step-Update-Norm: 6.78812235e-03
Iter: [000111] ; Step-Update-Norm: 1.41403165e-03
Iter: [000112] ; Step-Update-Norm: 2.30894876e-03
Iter: [000113] ; Step-Update-Norm: 2.92563176e-03
Iter: [000114] ; Step-Update-Norm: 9.04979822e-04
Iter: [000115] ; Step-Update-Norm: 8.46616605e-04
Iter: [000116] ; Step-Update-Norm: 1.65382860e-02
Iter: [000117] ; Step-Update-Norm: 2.09379254e-03
Iter: [000118] ; Step-Update-Norm: 1.13596423e-01
Iter: [000119] ; Step-Update-Norm: 1.28824209e-02
Iter: [000120] ; Step-Update-Norm: 4.93865055e-03
Iter: [000121] ; Step-Update-Norm: 2.46400136e-03
Iter: [000122] ; Step-Update-Norm: 4.82116368e-03
Iter: [000123] ; Step-Update-Norm: 9.74793393e-03
Iter: [000124] ; Step-Update-Norm: 7.80244024e-03
Iter: [000125] ; Step-Update-Norm: 3.13386772e-03
Iter: [000126] ; Step-Update-Norm: 3.22601712e-03
Iter: [000127] ; Step-Update-Norm: 1.71174671e-03
Iter: [000128] ; Step-Update-Norm: 1.71001113e-03
Iter: [000129] ; Step-Update-Norm: 6.49624273e-03
Iter: [000130] ; Step-Update-Norm: 1.77107046e-03
Iter: [000131] ; Step-Update-Norm: 1.92323258e-03
Iter: [000132] ; Step-Update-Norm: 1.59492772e-03
Iter: [000133] ; Step-Update-Norm: 1.57112677e-03
Iter: [000134] ; Step-Update-Norm: 1.64058277e-03
Iter: [000135] ; Step-Update-Norm: 9.74230506e-04
Iter: [000136] ; Step-Update-Norm: 9.83219885e-04
Iter: [000137] ; Step-Update-Norm: 1.13381770e-03
Iter: [000138] ; Step-Update-Norm: 7.42267309e-04
Iter: [000139] ; Step-Update-Norm: 7.76070045e-03
Iter: [000140] ; Step-Update-Norm: 1.30883595e-03
Iter: [000141] ; Step-Update-Norm: 4.57222603e-03
Iter: [000142] ; Step-Update-Norm: 1.28416873e-03
Iter: [000143] ; Step-Update-Norm: 1.11596000e-03
Iter: [000144] ; Step-Update-Norm: 9.20571178e-04
Iter: [000145] ; Step-Update-Norm: 8.31703995e-04
Iter: [000146] ; Step-Update-Norm: 1.14471373e-03
Iter: [000147] ; Step-Update-Norm: 6.89315918e-04
Iter: [000148] ; Step-Update-Norm: 1.44989163e-02
Iter: [000149] ; Step-Update-Norm: 3.34359162e-03
Iter: [000150] ; Step-Update-Norm: 2.73604791e-03
Iter: [000151] ; Step-Update-Norm: 4.44343438e-03
Iter: [000152] ; Step-Update-Norm: 2.11797153e-03
Iter: [000153] ; Step-Update-Norm: 2.25206270e-03
Iter: [000154] ; Step-Update-Norm: 2.88346233e-03
Iter: [000155] ; Step-Update-Norm: 1.49339938e-03
Iter: [000156] ; Step-Update-Norm: 1.26331147e-03
Iter: [000157] ; Step-Update-Norm: 1.05763522e-02
Iter: [000158] ; Step-Update-Norm: 1.24501456e-03
Iter: [000159] ; Step-Update-Norm: 1.23010956e-03
Iter: [000160] ; Step-Update-Norm: 1.38715346e-03
Iter: [000161] ; Step-Update-Norm: 1.28733194e-03
Iter: [000162] ; Step-Update-Norm: 1.00901389e-03
Iter: [000163] ; Step-Update-Norm: 7.51380227e-04
Iter: [000164] ; Step-Update-Norm: 6.66776289e-04
Iter: [000165] ; Step-Update-Norm: 8.45829865e-04
Iter: [000166] ; Step-Update-Norm: 5.29464423e-04
Iter: [000167] ; Step-Update-Norm: 4.89504533e-04
Iter: [000168] ; Step-Update-Norm: 5.49365548e-04
Iter: [000169] ; Step-Update-Norm: 4.42742132e-04
Iter: [000170] ; Step-Update-Norm: 5.02025613e-04
Iter: [000171] ; Step-Update-Norm: 3.36971584e-04
Iter: [000172] ; Step-Update-Norm: 3.63547008e-04
Iter: [000173] ; Step-Update-Norm: 3.50496741e-02
Iter: [000174] ; Step-Update-Norm: 1.11105175e-02
Iter: [000175] ; Step-Update-Norm: 6.04226469e-03
Iter: [000176] ; Step-Update-Norm: 4.55606274e-03
Iter: [000177] ; Step-Update-Norm: 5.61724533e-03
Iter: [000178] ; Step-Update-Norm: 4.19147191e-03
Iter: [000179] ; Step-Update-Norm: 5.29554803e-03
Iter: [000180] ; Step-Update-Norm: 3.63645685e-03
Iter: [000181] ; Step-Update-Norm: 4.54376009e-03
Iter: [000182] ; Step-Update-Norm: 9.16101157e-03
Iter: [000183] ; Step-Update-Norm: 3.73547554e-03
Iter: [000184] ; Step-Update-Norm: 3.54827335e-03
Iter: [000185] ; Step-Update-Norm: 3.05217469e-03
Iter: [000186] ; Step-Update-Norm: 2.30056350e-03
Iter: [000187] ; Step-Update-Norm: 4.80009549e-03
Iter: [000188] ; Step-Update-Norm: 2.13223250e-03
Iter: [000189] ; Step-Update-Norm: 2.83920513e-03
Iter: [000190] ; Step-Update-Norm: 1.72620187e-03
Iter: [000191] ; Step-Update-Norm: 2.87550680e-03
Iter: [000192] ; Step-Update-Norm: 3.20535297e-03
Iter: [000193] ; Step-Update-Norm: 1.65489645e-03
Iter: [000194] ; Step-Update-Norm: 1.63214227e-03
Iter: [000195] ; Step-Update-Norm: 9.83079374e-03
Iter: [000196] ; Step-Update-Norm: 6.19090429e-03
Iter: [000197] ; Step-Update-Norm: 4.87080417e-03
Iter: [000198] ; Step-Update-Norm: 2.72696416e-03
Iter: [000199] ; Step-Update-Norm: 2.86097130e-03
Iter: [000200] ; Step-Update-Norm: 3.03638424e-03
Iter: [000201] ; Step-Update-Norm: 2.34220063e-03
Iter: [000202] ; Step-Update-Norm: 2.50333571e-03
Iter: [000203] ; Step-Update-Norm: 2.17576998e-03
Iter: [000204] ; Step-Update-Norm: 1.94035510e-03
Iter: [000205] ; Step-Update-Norm: 2.09248957e-03
Iter: [000206] ; Step-Update-Norm: 1.83242965e-03
Iter: [000207] ; Step-Update-Norm: 1.53969252e-03
Iter: [000208] ; Step-Update-Norm: 1.15020671e-03
Iter: [000209] ; Step-Update-Norm: 1.01905311e-03
Iter: [000210] ; Step-Update-Norm: 7.97487228e-04
Iter: [000211] ; Step-Update-Norm: 1.12121222e-03
Iter: [000212] ; Step-Update-Norm: 9.08738691e-04
Iter: [000213] ; Step-Update-Norm: 6.34904762e-04
Iter: [000214] ; Step-Update-Norm: 6.77832335e-04
Iter: [000215] ; Step-Update-Norm: 7.75879109e-04
Iter: [000216] ; Step-Update-Norm: 1.04136489e-01
Iter: [000217] ; Step-Update-Norm: 9.17471616e-03
Iter: [000218] ; Step-Update-Norm: 2.88786886e-03
Iter: [000219] ; Step-Update-Norm: 1.74035997e-03
Iter: [000220] ; Step-Update-Norm: 1.32272321e-03
Iter: [000221] ; Step-Update-Norm: 1.26757946e-03
Iter: [000222] ; Step-Update-Norm: 9.67463386e-04
Iter: [000223] ; Step-Update-Norm: 1.04724062e-01
Iter: [000224] ; Step-Update-Norm: 1.67228424e-02
Iter: [000225] ; Step-Update-Norm: 9.64691403e-03
Iter: [000226] ; Step-Update-Norm: 8.50422665e-03
Iter: [000227] ; Step-Update-Norm: 1.65263726e-02
Iter: [000228] ; Step-Update-Norm: 1.03898146e-02
Iter: [000229] ; Step-Update-Norm: 8.74753502e-03
Iter: [000230] ; Step-Update-Norm: 1.22169387e-02
Iter: [000231] ; Step-Update-Norm: 6.31073189e-03
Iter: [000232] ; Step-Update-Norm: 6.64321832e-03
Iter: [000233] ; Step-Update-Norm: 9.15152500e-03
Iter: [000234] ; Step-Update-Norm: 7.83088541e-03
Iter: [000235] ; Step-Update-Norm: 7.52006080e-03
Iter: [000236] ; Step-Update-Norm: 6.03243481e-03
Iter: [000237] ; Step-Update-Norm: 2.06195601e-02
Iter: [000238] ; Step-Update-Norm: 5.43948319e-03
Iter: [000239] ; Step-Update-Norm: 5.85780093e-03
Iter: [000240] ; Step-Update-Norm: 9.33996050e-03
Iter: [000241] ; Step-Update-Norm: 4.29240690e-03
Iter: [000242] ; Step-Update-Norm: 3.61679803e-03
Iter: [000243] ; Step-Update-Norm: 7.15982077e-03
Iter: [000244] ; Step-Update-Norm: 5.43724503e-03
Iter: [000245] ; Step-Update-Norm: 4.32936847e-03
Iter: [000246] ; Step-Update-Norm: 4.71554399e-03
Iter: [000247] ; Step-Update-Norm: 4.42378334e-03
Iter: [000248] ; Step-Update-Norm: 4.46087827e-03
Iter: [000249] ; Step-Update-Norm: 3.90772537e-03
Iter: [000250] ; Step-Update-Norm: 3.07257557e-03
Iter: [000251] ; Step-Update-Norm: 2.79536125e-03
Iter: [000252] ; Step-Update-Norm: 2.10162211e-03
Iter: [000253] ; Step-Update-Norm: 2.90633193e-03
Iter: [000254] ; Step-Update-Norm: 2.08115825e-03
Iter: [000255] ; Step-Update-Norm: 2.72930686e-03
Iter: [000256] ; Step-Update-Norm: 1.80905248e-03
Iter: [000257] ; Step-Update-Norm: 2.69562526e-03
Iter: [000258] ; Step-Update-Norm: 3.84185649e-03
Iter: [000259] ; Step-Update-Norm: 3.67827940e-03
Iter: [000260] ; Step-Update-Norm: 2.61836024e-03
Iter: [000261] ; Step-Update-Norm: 1.96610017e-03
Iter: [000262] ; Step-Update-Norm: 1.47828053e-03
Iter: [000263] ; Step-Update-Norm: 7.54496666e-03
Iter: [000264] ; Step-Update-Norm: 1.88572763e-03
Iter: [000265] ; Step-Update-Norm: 1.64904957e-03
Iter: [000266] ; Step-Update-Norm: 1.32602850e-03
Iter: [000267] ; Step-Update-Norm: 9.91881524e-02
Iter: [000268] ; Step-Update-Norm: 2.09402709e-03
Iter: [000269] ; Step-Update-Norm: 1.60468913e-03
Iter: [000270] ; Step-Update-Norm: 2.43551623e-03
Iter: [000271] ; Step-Update-Norm: 1.52605136e-03
Iter: [000272] ; Step-Update-Norm: 1.13182018e-03
Iter: [000273] ; Step-Update-Norm: 1.43003688e-02
Iter: [000274] ; Step-Update-Norm: 4.13341705e-03
Iter: [000275] ; Step-Update-Norm: 1.65949925e-03
Iter: [000276] ; Step-Update-Norm: 1.54738111e-03
Iter: [000277] ; Step-Update-Norm: 3.22244478e-02
Iter: [000278] ; Step-Update-Norm: 4.06816358e-03
Iter: [000279] ; Step-Update-Norm: 6.71208385e-03
Iter: [000280] ; Step-Update-Norm: 2.95039413e-03
Iter: [000281] ; Step-Update-Norm: 4.30197840e-03
Iter: [000282] ; Step-Update-Norm: 2.73668385e-03
Iter: [000283] ; Step-Update-Norm: 4.94851928e-03
Iter: [000284] ; Step-Update-Norm: 2.25059138e-03
Iter: [000285] ; Step-Update-Norm: 3.59512129e-03
Iter: [000286] ; Step-Update-Norm: 3.73579293e-03
Iter: [000287] ; Step-Update-Norm: 1.68642378e-03
Iter: [000288] ; Step-Update-Norm: 2.86389799e-03
Iter: [000289] ; Step-Update-Norm: 1.34249049e-03
Iter: [000290] ; Step-Update-Norm: 1.31801989e-03
Iter: [000291] ; Step-Update-Norm: 1.06719209e-03
Iter: [000292] ; Step-Update-Norm: 9.51939494e-04
Iter: [000293] ; Step-Update-Norm: 1.16788604e-03
Iter: [000294] ; Step-Update-Norm: 1.02245766e-02
Iter: [000295] ; Step-Update-Norm: 1.81302999e-03
Iter: [000296] ; Step-Update-Norm: 1.75401430e-03
Iter: [000297] ; Step-Update-Norm: 1.80486908e-03
Iter: [000298] ; Step-Update-Norm: 1.89639139e-03
Iter: [000299] ; Step-Update-Norm: 1.60696619e-03
Iter: [000300] ; Step-Update-Norm: 1.34366868e-03
Iter: [000301] ; Step-Update-Norm: 1.23559115e-03
Iter: [000302] ; Step-Update-Norm: 1.15124712e-03
Iter: [000303] ; Step-Update-Norm: 4.95821440e-03
Iter: [000304] ; Step-Update-Norm: 9.54917355e-04
Iter: [000305] ; Step-Update-Norm: 1.47871599e-02
Iter: [000306] ; Step-Update-Norm: 1.35195689e-03
Iter: [000307] ; Step-Update-Norm: 2.78951126e-03
Iter: [000308] ; Step-Update-Norm: 2.81253207e-03
Iter: [000309] ; Step-Update-Norm: 1.63861820e-03
Iter: [000310] ; Step-Update-Norm: 1.46713527e-03
Iter: [000311] ; Step-Update-Norm: 9.22661536e-04
Iter: [000312] ; Step-Update-Norm: 9.19460142e-04
Iter: [000313] ; Step-Update-Norm: 1.17772105e-03
Iter: [000314] ; Step-Update-Norm: 1.94474652e-02
Iter: [000315] ; Step-Update-Norm: 3.26982524e-03
Iter: [000316] ; Step-Update-Norm: 1.92347750e-03
Iter: [000317] ; Step-Update-Norm: 2.90085002e-03
Iter: [000318] ; Step-Update-Norm: 3.36509434e-03
Iter: [000319] ; Step-Update-Norm: 4.93746017e-03
Iter: [000320] ; Step-Update-Norm: 1.44904769e-03
Iter: [000321] ; Step-Update-Norm: 2.78895629e-03
Iter: [000322] ; Step-Update-Norm: 2.51555294e-03
Iter: [000323] ; Step-Update-Norm: 5.98366417e-03
Iter: [000324] ; Step-Update-Norm: 6.34016084e-03
Iter: [000325] ; Step-Update-Norm: 2.65131051e-03
Iter: [000326] ; Step-Update-Norm: 2.26091849e-03
Iter: [000327] ; Step-Update-Norm: 1.92723309e-03
Iter: [000328] ; Step-Update-Norm: 1.36979584e-03
Iter: [000329] ; Step-Update-Norm: 4.92562233e-03
Iter: [000330] ; Step-Update-Norm: 1.89202454e-03
Iter: [000331] ; Step-Update-Norm: 1.62757148e-03
Iter: [000332] ; Step-Update-Norm: 1.80905896e-03
Iter: [000333] ; Step-Update-Norm: 1.50678327e-03
Iter: [000334] ; Step-Update-Norm: 1.53828905e-03
Iter: [000335] ; Step-Update-Norm: 3.85125237e-03
Iter: [000336] ; Step-Update-Norm: 2.69629954e-03
Iter: [000337] ; Step-Update-Norm: 1.11905611e-03
Iter: [000338] ; Step-Update-Norm: 4.64796064e-03
Iter: [000339] ; Step-Update-Norm: 1.07398978e-01
Iter: [000340] ; Step-Update-Norm: 1.26543181e-02
Iter: [000341] ; Step-Update-Norm: 2.36931160e-03
Iter: [000342] ; Step-Update-Norm: 2.11549907e-03
Iter: [000343] ; Step-Update-Norm: 7.63902562e-03
Iter: [000344] ; Step-Update-Norm: 4.72837982e-02
Iter: [000345] ; Step-Update-Norm: 1.31853056e-02
Iter: [000346] ; Step-Update-Norm: 5.50474998e-03
Iter: [000347] ; Step-Update-Norm: 1.04635451e-02
Iter: [000348] ; Step-Update-Norm: 6.02504930e-03
Iter: [000349] ; Step-Update-Norm: 4.64279563e-03
Iter: [000350] ; Step-Update-Norm: 1.32865011e-02
Iter: [000351] ; Step-Update-Norm: 9.66073256e-03
Iter: [000352] ; Step-Update-Norm: 7.37885782e-03
Iter: [000353] ; Step-Update-Norm: 4.98122616e-03
Iter: [000354] ; Step-Update-Norm: 3.73602088e-03
Iter: [000355] ; Step-Update-Norm: 2.24898322e-02
Iter: [000356] ; Step-Update-Norm: 2.55713134e-03
Iter: [000357] ; Step-Update-Norm: 2.40599078e-03
Iter: [000358] ; Step-Update-Norm: 2.21025242e-03
Iter: [000359] ; Step-Update-Norm: 3.93891135e-03
Iter: [000360] ; Step-Update-Norm: 1.73332878e-03
Iter: [000361] ; Step-Update-Norm: 3.04687623e-03
Iter: [000362] ; Step-Update-Norm: 1.09472752e-02
Iter: [000363] ; Step-Update-Norm: 1.22802801e-03
Iter: [000364] ; Step-Update-Norm: 1.06231689e-03
Iter: [000365] ; Step-Update-Norm: 1.87711876e-02
Iter: [000366] ; Step-Update-Norm: 3.69972338e-02
Iter: [000367] ; Step-Update-Norm: 9.97331154e-03
Iter: [000368] ; Step-Update-Norm: 3.73004478e-03
Iter: [000369] ; Step-Update-Norm: 7.79618061e-03
Iter: [000370] ; Step-Update-Norm: 4.22449460e-03
Iter: [000371] ; Step-Update-Norm: 9.39234743e-03
Iter: [000372] ; Step-Update-Norm: 4.41093469e-03
Iter: [000373] ; Step-Update-Norm: 4.30005385e-03
Iter: [000374] ; Step-Update-Norm: 2.17013123e-02
Iter: [000375] ; Step-Update-Norm: 4.67474152e-03
Iter: [000376] ; Step-Update-Norm: 7.29101678e-03
Iter: [000377] ; Step-Update-Norm: 6.76020528e-03
Iter: [000378] ; Step-Update-Norm: 4.52454262e-03
Iter: [000379] ; Step-Update-Norm: 3.56752346e-03
Iter: [000380] ; Step-Update-Norm: 5.32477927e-03
Iter: [000381] ; Step-Update-Norm: 4.69210640e-03
Iter: [000382] ; Step-Update-Norm: 3.57081951e-03
Iter: [000383] ; Step-Update-Norm: 4.70790811e-03
Iter: [000384] ; Step-Update-Norm: 3.63757554e-03
Iter: [000385] ; Step-Update-Norm: 2.51562489e-03
Iter: [000386] ; Step-Update-Norm: 3.15474229e-03
Iter: [000387] ; Step-Update-Norm: 1.84382434e-03
Iter: [000388] ; Step-Update-Norm: 3.78376463e-03
Iter: [000389] ; Step-Update-Norm: 2.79539767e-03
Iter: [000390] ; Step-Update-Norm: 1.87301173e-03
Iter: [000391] ; Step-Update-Norm: 1.77741892e-03
Iter: [000392] ; Step-Update-Norm: 2.82107096e-03
Iter: [000393] ; Step-Update-Norm: 1.67198835e-03
Iter: [000394] ; Step-Update-Norm: 1.18222603e-03
Iter: [000395] ; Step-Update-Norm: 4.13382492e-03
Iter: [000396] ; Step-Update-Norm: 1.25935307e-03
Iter: [000397] ; Step-Update-Norm: 3.93281166e-03
Iter: [000398] ; Step-Update-Norm: 1.26896224e-03
Iter: [000399] ; Step-Update-Norm: 1.30864510e-03
Iter: [000400] ; Step-Update-Norm: 5.03227426e-03
Iter: [000401] ; Step-Update-Norm: 6.53972466e-04
Iter: [000402] ; Step-Update-Norm: 9.51728378e-04
Iter: [000403] ; Step-Update-Norm: 1.32273454e-02
Iter: [000404] ; Step-Update-Norm: 2.63223385e-03
Iter: [000405] ; Step-Update-Norm: 1.49642936e-03
Iter: [000406] ; Step-Update-Norm: 2.88834474e-03
Iter: [000407] ; Step-Update-Norm: 1.81590072e-03
Iter: [000408] ; Step-Update-Norm: 1.84739231e-03
Iter: [000409] ; Step-Update-Norm: 2.32598458e-03
Iter: [000410] ; Step-Update-Norm: 3.44398337e-03
Iter: [000411] ; Step-Update-Norm: 1.51273558e-02
Iter: [000412] ; Step-Update-Norm: 3.42878183e-03
Iter: [000413] ; Step-Update-Norm: 2.47475658e-03
Iter: [000414] ; Step-Update-Norm: 2.89502280e-03
Iter: [000415] ; Step-Update-Norm: 3.23168805e-03
Iter: [000416] ; Step-Update-Norm: 1.82153403e-03
Iter: [000417] ; Step-Update-Norm: 7.76028915e-03
Iter: [000418] ; Step-Update-Norm: 2.51022522e-03
Iter: [000419] ; Step-Update-Norm: 6.83852042e-03
Iter: [000420] ; Step-Update-Norm: 2.45376436e-03
Iter: [000421] ; Step-Update-Norm: 4.53750963e-03
Iter: [000422] ; Step-Update-Norm: 3.25583670e-03
Iter: [000423] ; Step-Update-Norm: 2.10602929e-03
Iter: [000424] ; Step-Update-Norm: 1.90009613e-03
Iter: [000425] ; Step-Update-Norm: 2.24918433e-03
Iter: [000426] ; Step-Update-Norm: 1.80665013e-03
Iter: [000427] ; Step-Update-Norm: 1.45178315e-03
Iter: [000428] ; Step-Update-Norm: 1.10096229e-03
Iter: [000429] ; Step-Update-Norm: 1.67446642e-03
Iter: [000430] ; Step-Update-Norm: 1.00650121e-03
Iter: [000431] ; Step-Update-Norm: 1.33887430e-03
Iter: [000432] ; Step-Update-Norm: 6.69199957e-03
Iter: [000433] ; Step-Update-Norm: 9.49651615e-04
Iter: [000434] ; Step-Update-Norm: 1.36374033e-03
Iter: [000435] ; Step-Update-Norm: 1.38663244e-03
Iter: [000436] ; Step-Update-Norm: 1.09339689e-03
Iter: [000437] ; Step-Update-Norm: 9.72632674e-04
Iter: [000438] ; Step-Update-Norm: 9.19146567e-04
Iter: [000439] ; Step-Update-Norm: 1.31100568e-03
Iter: [000440] ; Step-Update-Norm: 1.97963686e-03
Iter: [000441] ; Step-Update-Norm: 1.21932716e-03
Iter: [000442] ; Step-Update-Norm: 2.22530551e-03
Iter: [000443] ; Step-Update-Norm: 6.92064656e-04
Iter: [000444] ; Step-Update-Norm: 2.19727435e-03
Iter: [000445] ; Step-Update-Norm: 7.90241258e-04
Iter: [000446] ; Step-Update-Norm: 9.50633147e-04
Iter: [000447] ; Step-Update-Norm: 4.08392422e-03
Iter: [000448] ; Step-Update-Norm: 9.91052998e-04
Iter: [000449] ; Step-Update-Norm: 9.86507089e-04
Iter: [000450] ; Step-Update-Norm: 1.31013707e-03
Iter: [000451] ; Step-Update-Norm: 2.67924585e-03
Iter: [000452] ; Step-Update-Norm: 1.36623756e-03
Iter: [000453] ; Step-Update-Norm: 9.73827955e-03
Iter: [000454] ; Step-Update-Norm: 1.54931074e-03
Iter: [000455] ; Step-Update-Norm: 1.29715304e-03
Iter: [000456] ; Step-Update-Norm: 1.06524573e-03
Iter: [000457] ; Step-Update-Norm: 1.22205807e-03
Iter: [000458] ; Step-Update-Norm: 9.92098827e-04
Iter: [000459] ; Step-Update-Norm: 7.58246617e-04
Iter: [000460] ; Step-Update-Norm: 9.02209623e-04
Iter: [000461] ; Step-Update-Norm: 6.10418904e-04
Iter: [000462] ; Step-Update-Norm: 9.55144056e-03
Iter: [000463] ; Step-Update-Norm: 9.11009862e-04
Iter: [000464] ; Step-Update-Norm: 8.84026145e-04
Iter: [000465] ; Step-Update-Norm: 7.46631678e-04
Iter: [000466] ; Step-Update-Norm: 8.76672866e-04
Iter: [000467] ; Step-Update-Norm: 7.76895062e-04
Iter: [000468] ; Step-Update-Norm: 7.11785754e-04
Iter: [000469] ; Step-Update-Norm: 6.04859735e-04
Iter: [000470] ; Step-Update-Norm: 2.21047285e-03
Iter: [000471] ; Step-Update-Norm: 3.67314623e-03
Iter: [000472] ; Step-Update-Norm: 1.22677128e-03
Iter: [000473] ; Step-Update-Norm: 7.82819375e-04
Iter: [000474] ; Step-Update-Norm: 3.58958826e-03
Iter: [000475] ; Step-Update-Norm: 1.34111478e-03
Iter: [000476] ; Step-Update-Norm: 9.99121751e-04
Iter: [000477] ; Step-Update-Norm: 1.07056128e-03
Iter: [000478] ; Step-Update-Norm: 2.07426710e-03
Iter: [000479] ; Step-Update-Norm: 6.00050644e-04
Iter: [000480] ; Step-Update-Norm: 7.57661122e-04
Iter: [000481] ; Step-Update-Norm: 4.82453895e-04
Iter: [000482] ; Step-Update-Norm: 6.24742785e-04
Iter: [000483] ; Step-Update-Norm: 1.28107117e-02
Iter: [000484] ; Step-Update-Norm: 1.41457609e-03
Iter: [000485] ; Step-Update-Norm: 1.07703243e-03
Iter: [000486] ; Step-Update-Norm: 2.04601656e-03
Iter: [000487] ; Step-Update-Norm: 9.16697461e-04
Iter: [000488] ; Step-Update-Norm: 1.57674503e-03
Iter: [000489] ; Step-Update-Norm: 2.19370729e-03
Iter: [000490] ; Step-Update-Norm: 1.24084182e-03
Iter: [000491] ; Step-Update-Norm: 1.21232946e-03
Iter: [000492] ; Step-Update-Norm: 1.05524317e-03
Iter: [000493] ; Step-Update-Norm: 9.52875826e-04
Iter: [000494] ; Step-Update-Norm: 1.61010661e-03
Iter: [000495] ; Step-Update-Norm: 3.15524060e-03
Iter: [000496] ; Step-Update-Norm: 1.16613982e-03
Iter: [000497] ; Step-Update-Norm: 1.68947295e-03
Iter: [000498] ; Step-Update-Norm: 1.41597287e-03
Iter: [000499] ; Step-Update-Norm: 1.02573123e-03
Iter: [000500] ; Step-Update-Norm: 9.16379446e-04
[4]:
# Use optimizer plotter for visualization
_ = optimizer.plot_results(maximization_results, bruteforce=True, overwrite=True, keep_plots=True, )
Plots saved...






Minimization problem#
You can either recreate the optimizer with configuration maximize
set to False
, or simply update this configuration as follows
[5]:
# Set the optimization objective to minimization
optimizer.update_configurations(maximize=False)
# Solve & Plot
minimization_results = optimizer.solve()
Iter: [000001] ; Step-Update-Norm: 1.08512367e-01
Iter: [000002] ; Step-Update-Norm: 8.77801690e-02
Iter: [000003] ; Step-Update-Norm: 9.82377876e-02
Iter: [000004] ; Step-Update-Norm: 1.20100050e-01
Iter: [000005] ; Step-Update-Norm: 1.31333092e-01
Iter: [000006] ; Step-Update-Norm: 1.25468241e-01
Iter: [000007] ; Step-Update-Norm: 9.06034573e-02
Iter: [000008] ; Step-Update-Norm: 1.03390383e-01
Iter: [000009] ; Step-Update-Norm: 6.28020969e-02
Iter: [000010] ; Step-Update-Norm: 7.29953068e-02
Iter: [000011] ; Step-Update-Norm: 1.85243256e-02
Iter: [000012] ; Step-Update-Norm: 4.29661137e-02
Iter: [000013] ; Step-Update-Norm: 8.40367860e-02
Iter: [000014] ; Step-Update-Norm: 7.94574639e-02
Iter: [000015] ; Step-Update-Norm: 3.34954295e-02
Iter: [000016] ; Step-Update-Norm: 3.35653046e-02
Iter: [000017] ; Step-Update-Norm: 4.62080926e-02
Iter: [000018] ; Step-Update-Norm: 4.61788812e-02
Iter: [000019] ; Step-Update-Norm: 5.18799917e-02
Iter: [000020] ; Step-Update-Norm: 3.79296920e-02
Iter: [000021] ; Step-Update-Norm: 7.40552381e-02
Iter: [000022] ; Step-Update-Norm: 3.44858612e-02
Iter: [000023] ; Step-Update-Norm: 2.28159030e-02
Iter: [000024] ; Step-Update-Norm: 1.48830490e-02
Iter: [000025] ; Step-Update-Norm: 3.01715785e-02
Iter: [000026] ; Step-Update-Norm: 3.98657081e-02
Iter: [000027] ; Step-Update-Norm: 8.39873624e-03
Iter: [000028] ; Step-Update-Norm: 2.52283957e-02
Iter: [000029] ; Step-Update-Norm: 1.76531197e-02
Iter: [000030] ; Step-Update-Norm: 3.84646192e-02
Iter: [000031] ; Step-Update-Norm: 2.12168370e-02
Iter: [000032] ; Step-Update-Norm: 4.48092344e-02
Iter: [000033] ; Step-Update-Norm: 1.78731136e-02
Iter: [000034] ; Step-Update-Norm: 1.96480775e-02
Iter: [000035] ; Step-Update-Norm: 3.58200162e-02
Iter: [000036] ; Step-Update-Norm: 1.61709626e-02
Iter: [000037] ; Step-Update-Norm: 3.02167838e-02
Iter: [000038] ; Step-Update-Norm: 1.79165984e-02
Iter: [000039] ; Step-Update-Norm: 2.06585611e-02
Iter: [000040] ; Step-Update-Norm: 5.07553778e-02
Iter: [000041] ; Step-Update-Norm: 1.66665478e-02
Iter: [000042] ; Step-Update-Norm: 1.42498456e-02
Iter: [000043] ; Step-Update-Norm: 1.39430084e-02
Iter: [000044] ; Step-Update-Norm: 3.80621377e-02
Iter: [000045] ; Step-Update-Norm: 1.29161944e-02
Iter: [000046] ; Step-Update-Norm: 1.33909753e-02
Iter: [000047] ; Step-Update-Norm: 1.79144140e-02
Iter: [000048] ; Step-Update-Norm: 2.75763173e-02
Iter: [000049] ; Step-Update-Norm: 4.93724937e-02
Iter: [000050] ; Step-Update-Norm: 3.13437535e-03
Iter: [000051] ; Step-Update-Norm: 3.35407965e-02
Iter: [000052] ; Step-Update-Norm: 0.00000000e+00
[6]:
# Use optimizer plotter for visualization
_ = optimizer.plot_results(minimization_results, bruteforce=True, overwrite=True, keep_plots=True, )
Plots saved...






[ ]: