@@ -69,6 +69,20 @@ From now, you can declare functions thanks to the `declare_function` method.
6969
7070 func = problem.declare_function(SmoothConvexFunction, L=L)
7171
72+ .. warning ::
73+ To enforce the same subgradient to be returned each time one is required,
74+ we introduced the attribute `reuse_gradient ` in the `Function ` class.
75+ Some classes of functions contain only differentiable functions (e.g. smooth convex function).
76+ In those, the `reuse_gradient ` attribute is set to True by default.
77+
78+ When the same subgradient is used several times in the same code and when it is difficult to
79+ to keep track of it (through proximal calls for instance), it may be useful to set this parameter
80+ to True even if the function is not differentiable. This helps reducing the number of constraints,
81+ and improve the accuracy of the underlying semidefinite program. See for instance the code for
82+ `improved interior method
83+ <https://pepit.readthedocs.io/en/latest/examples/b.html#improved-interior-method> `_ or
84+ `no Lips in Bregman divergence
85+ <https://pepit.readthedocs.io/en/latest/examples/b.html#no-lips-in-bregman-divergence> `_.
7286
7387You can also define a new point with
7488
@@ -139,6 +153,14 @@ Finally, you can ask PEPit to solve the system for you and return the worst-case
139153
140154 pepit_tau = problem.solve()
141155
156+ .. warning ::
157+ Performance estimation problems consist in reformulating the problem of finding a worst-case scenario as a semidefinite
158+ program (SDP). The dimension of the corresponding SDP is directly related to the number of function and gradient evaluations
159+ in a given code.
160+
161+ We encourage the users to perform as few function and subgradient evaluations as possible, as the size of the
162+ corresponding SDP grows with the number of subgradient/function evaluations at different points.
163+
142164
143165Derive proofs and adversarial objectives
144166^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -192,25 +214,34 @@ Then, after solving the system, you can require its associated dual variable val
192214 Output pdf
193215~~~~~~~~~~
194216
195- In a latter release, we will provide an option to output a pdf file summarizing all those pieces of information.
217+ In a later release, we will provide an option to output a pdf file summarizing all those pieces of information.
196218
197- Simplify proofs
198- ^^^^^^^^^^^^^^^
219+ Simpler worst-case scenarios
220+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
199221
200222Sometimes, there are several solutions to the PEP problem.
201- In order to simplify the proof, one would prefer a low dimension solution.
202- To this end, we provide an **heuristic ** based on the trace to reduce the dimension of the provided solution.
223+ For obtaining simpler worst-case scenarios, one would prefer a low dimension solutions to the SDP.
224+ To this end, we provide **heuristics ** based on the trace norm or log det minimization for reducing
225+ the dimension of the numerical solution to the SDP.
203226
204- You can use it by specifying
227+ You can use the trace heuristic by specifying
205228
206229.. code-block ::
207230
208231 problem.solve(dimension_reduction_heuristic="trace")
232+
233+ You can use the n iteration of the log det heuristic by specifying "logdetn". For example, for
234+ using 5 iterations of the logdet heuristic:
235+
236+ .. code-block ::
237+
238+ problem.solve(dimension_reduction_heuristic="logdet5")
239+
209240
210241 Finding Lyapunov
211242^^^^^^^^^^^^^^^^
212243
213- In a latter release, we will provide tools to help finding good Lyapunov functions to study a given method.
244+ In a later release, we will provide tools to help finding good Lyapunov functions to study a given method.
214245
215246This tool will be based on the very recent work [7].
216247
0 commit comments