|
12 | 12 | }, |
13 | 13 | { |
14 | 14 | "cell_type": "code", |
15 | | - "execution_count": 1, |
| 15 | + "execution_count": 13, |
16 | 16 | "metadata": {}, |
17 | 17 | "outputs": [], |
18 | 18 | "source": [ |
|
28 | 28 | }, |
29 | 29 | { |
30 | 30 | "cell_type": "code", |
31 | | - "execution_count": 2, |
| 31 | + "execution_count": 14, |
32 | 32 | "metadata": {}, |
33 | 33 | "outputs": [ |
34 | 34 | { |
|
37 | 37 | "PEP(AbstractFunction[], Point[], Constraint[], Expression[], PSDMatrix[], nothing)" |
38 | 38 | ] |
39 | 39 | }, |
40 | | - "execution_count": 2, |
| 40 | + "execution_count": 14, |
41 | 41 | "metadata": {}, |
42 | 42 | "output_type": "execute_result" |
43 | 43 | } |
|
54 | 54 | "\n", |
55 | 55 | "Consider the convex minimization problem\n", |
56 | 56 | "$$f_\\star \\triangleq \\min_x f(x),$$\n", |
57 | | - "where $f$ is $L$-smooth and $\\mu$-strongly convex. For this example, let us take $\\mu=0.1$ and $L=1$. Let us declare this function type in `PEPit`. " |
| 57 | + "where $f$ is $L$-smooth and $\\mu$-strongly convex. For this example, let us take $\\mu=0.1$ and $L=1$. Let us declare this function type in `PEPit` next. Let us start with defining the parameters $\\mu$ and $L$. " |
58 | 58 | ] |
59 | 59 | }, |
60 | 60 | { |
61 | 61 | "cell_type": "code", |
62 | | - "execution_count": 3, |
| 62 | + "execution_count": 15, |
63 | 63 | "metadata": {}, |
64 | 64 | "outputs": [ |
65 | 65 | { |
|
70 | 70 | " \"L\" => 1" |
71 | 71 | ] |
72 | 72 | }, |
73 | | - "execution_count": 3, |
| 73 | + "execution_count": 15, |
74 | 74 | "metadata": {}, |
75 | 75 | "output_type": "execute_result" |
76 | 76 | } |
|
90 | 90 | }, |
91 | 91 | { |
92 | 92 | "cell_type": "code", |
93 | | - "execution_count": 4, |
| 93 | + "execution_count": 16, |
94 | 94 | "metadata": {}, |
95 | 95 | "outputs": [ |
96 | 96 | { |
|
99 | 99 | "SmoothStronglyConvexFunction(0.1, 1.0, PEPFunction(1, true, OrderedDict{PEPFunction, Float64}(PEPFunction(\u001b[33m#= circular reference @-2 =#\u001b[39m) => 1.0), true, Tuple{Point, Point, Expression}[], Tuple{Point, Point, Expression}[], Constraint[], PSDMatrix[], PSDMatrix[], 0))" |
100 | 100 | ] |
101 | 101 | }, |
102 | | - "execution_count": 4, |
| 102 | + "execution_count": 16, |
103 | 103 | "metadata": {}, |
104 | 104 | "output_type": "execute_result" |
105 | 105 | } |
|
141 | 141 | }, |
142 | 142 | { |
143 | 143 | "cell_type": "code", |
144 | | - "execution_count": 5, |
| 144 | + "execution_count": 17, |
145 | 145 | "metadata": {}, |
146 | 146 | "outputs": [ |
147 | 147 | { |
|
150 | 150 | "2" |
151 | 151 | ] |
152 | 152 | }, |
153 | | - "execution_count": 5, |
| 153 | + "execution_count": 17, |
154 | 154 | "metadata": {}, |
155 | 155 | "output_type": "execute_result" |
156 | 156 | } |
|
169 | 169 | }, |
170 | 170 | { |
171 | 171 | "cell_type": "code", |
172 | | - "execution_count": 6, |
| 172 | + "execution_count": 18, |
173 | 173 | "metadata": {}, |
174 | 174 | "outputs": [ |
175 | 175 | { |
|
178 | 178 | "Point(5, true, OrderedDict{Point, Float64}(Point(\u001b[33m#= circular reference @-2 =#\u001b[39m) => 1.0), 1, nothing)" |
179 | 179 | ] |
180 | 180 | }, |
181 | | - "execution_count": 6, |
| 181 | + "execution_count": 18, |
182 | 182 | "metadata": {}, |
183 | 183 | "output_type": "execute_result" |
184 | 184 | } |
|
202 | 202 | }, |
203 | 203 | { |
204 | 204 | "cell_type": "code", |
205 | | - "execution_count": 7, |
| 205 | + "execution_count": 19, |
206 | 206 | "metadata": {}, |
207 | 207 | "outputs": [ |
208 | 208 | { |
|
212 | 212 | " Constraint(Expression(15, false, OrderedDict{Any, Float64}(Expression(6, true, OrderedDict{Any, Float64}(Expression(\u001b[33m#= circular reference @-2 =#\u001b[39m) => 1.0), 1, nothing) => 1.0, Expression(4, true, OrderedDict{Any, Float64}(Expression(\u001b[33m#= circular reference @-2 =#\u001b[39m) => 1.0), 0, nothing) => -1.0, (Point(5, true, OrderedDict{Point, Float64}(Point(\u001b[33m#= circular reference @-2 =#\u001b[39m) => 1.0), 1, nothing), Point(5, true, OrderedDict{Point, Float64}(Point(\u001b[33m#= circular reference @-2 =#\u001b[39m) => 1.0), 1, nothing)) => 0.05, (Point(5, true, OrderedDict{Point, Float64}(Point(\u001b[33m#= circular reference @-2 =#\u001b[39m) => 1.0), 1, nothing), Point(2, true, OrderedDict{Point, Float64}(Point(\u001b[33m#= circular reference @-2 =#\u001b[39m) => 1.0), 0, nothing)) => -0.05, (Point(2, true, OrderedDict{Point, Float64}(Point(\u001b[33m#= circular reference @-2 =#\u001b[39m) => 1.0), 0, nothing), Point(5, true, OrderedDict{Point, Float64}(Point(\u001b[33m#= circular reference @-2 =#\u001b[39m) => 1.0), 1, nothing)) => -0.05, (Point(2, true, OrderedDict{Point, Float64}(Point(\u001b[33m#= circular reference @-2 =#\u001b[39m) => 1.0), 0, nothing), Point(2, true, OrderedDict{Point, Float64}(Point(\u001b[33m#= circular reference @-2 =#\u001b[39m) => 1.0), 0, nothing)) => 0.05, 1 => -1.0), nothing, nothing), \"inequality\", 0, nothing, nothing)" |
213 | 213 | ] |
214 | 214 | }, |
215 | | - "execution_count": 7, |
| 215 | + "execution_count": 19, |
216 | 216 | "metadata": {}, |
217 | 217 | "output_type": "execute_result" |
218 | 218 | } |
|
232 | 232 | }, |
233 | 233 | { |
234 | 234 | "cell_type": "code", |
235 | | - "execution_count": 8, |
| 235 | + "execution_count": 20, |
236 | 236 | "metadata": {}, |
237 | 237 | "outputs": [], |
238 | 238 | "source": [ |
|
256 | 256 | }, |
257 | 257 | { |
258 | 258 | "cell_type": "code", |
259 | | - "execution_count": 9, |
| 259 | + "execution_count": 21, |
260 | 260 | "metadata": {}, |
261 | 261 | "outputs": [ |
262 | 262 | { |
|
265 | 265 | "Expression(32, true, OrderedDict{Any, Float64}(Expression(\u001b[33m#= circular reference @-2 =#\u001b[39m) => 1.0), 3, nothing)" |
266 | 266 | ] |
267 | 267 | }, |
268 | | - "execution_count": 9, |
| 268 | + "execution_count": 21, |
269 | 269 | "metadata": {}, |
270 | 270 | "output_type": "execute_result" |
271 | 271 | } |
|
283 | 283 | }, |
284 | 284 | { |
285 | 285 | "cell_type": "code", |
286 | | - "execution_count": 10, |
| 286 | + "execution_count": 22, |
287 | 287 | "metadata": {}, |
288 | 288 | "outputs": [ |
289 | 289 | { |
|
293 | 293 | " Expression(35, false, OrderedDict{Any, Float64}(Expression(32, true, OrderedDict{Any, Float64}(Expression(\u001b[33m#= circular reference @-2 =#\u001b[39m) => 1.0), 3, nothing) => 1.0, Expression(4, true, OrderedDict{Any, Float64}(Expression(\u001b[33m#= circular reference @-2 =#\u001b[39m) => 1.0), 0, nothing) => -1.0), nothing, nothing)" |
294 | 294 | ] |
295 | 295 | }, |
296 | | - "execution_count": 10, |
| 296 | + "execution_count": 22, |
297 | 297 | "metadata": {}, |
298 | 298 | "output_type": "execute_result" |
299 | 299 | } |
|
312 | 312 | }, |
313 | 313 | { |
314 | 314 | "cell_type": "code", |
315 | | - "execution_count": 11, |
| 315 | + "execution_count": 23, |
316 | 316 | "metadata": {}, |
317 | 317 | "outputs": [ |
318 | 318 | { |
|
387 | 387 | "0.34760221803672986" |
388 | 388 | ] |
389 | 389 | }, |
390 | | - "execution_count": 11, |
| 390 | + "execution_count": 23, |
391 | 391 | "metadata": {}, |
392 | 392 | "output_type": "execute_result" |
393 | 393 | } |
|
413 | 413 | }, |
414 | 414 | { |
415 | 415 | "cell_type": "code", |
416 | | - "execution_count": 12, |
| 416 | + "execution_count": 24, |
417 | 417 | "metadata": {}, |
418 | 418 | "outputs": [ |
419 | 419 | { |
|
437 | 437 | "cell_type": "markdown", |
438 | 438 | "metadata": {}, |
439 | 439 | "source": [ |
| 440 | + "We should see the output:\n", |
| 441 | + "\n", |
| 442 | + "````Julia\n", |
| 443 | + "PEPit guarantee: f(x_n)-f_* <= 0.347602 (f(x_0) - f(x_*) + mu/2*||x_0 - x_*||^2)\n", |
| 444 | + "\n", |
| 445 | + "Theoretical guarantee: f(x_n)-f_* <= 0.467544 (f(x_0) - f(x_*) + mu/2*||x_0 - x_*||^2)\n", |
| 446 | + "````\n", |
| 447 | + "\n", |
440 | 448 | "So the gurantee that we found via `PEPit` is tighter than the theoretical guarantee!\n", |
441 | 449 | "\n", |
442 | 450 | "**References**:\n", |
|
448 | 456 | ], |
449 | 457 | "metadata": { |
450 | 458 | "kernelspec": { |
451 | | - "display_name": "Julia 1.12", |
| 459 | + "display_name": "Julia 1.12.2", |
452 | 460 | "language": "julia", |
453 | 461 | "name": "julia-1.12" |
454 | 462 | }, |
|
0 commit comments