-
Notifications
You must be signed in to change notification settings - Fork 10
/
Copy pathDemo_DangLan2.py
56 lines (40 loc) · 1.66 KB
/
Demo_DangLan2.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
import time
import numpy as np
from VISolver.Domains.MHPH import MHPH
from VISolver.Solvers.HeunEuler import HeunEuler
# from VISolver.Solvers.RipCurl import RipCurl
from VISolver.Solvers.RipCurlEx import RipCurlEx as RipCurl
# from VISolver.Solvers.Extragradient import EG as RipCurl
from VISolver.Projection import EntropicProjection, IdentityProjection
from VISolver.Solver import Solve
from VISolver.Options import (
DescentOptions, Miscellaneous, Reporting, Termination, Initialization)
from VISolver.Log import PrintSimResults, PrintSimStats
def Demo():
#__MHPH__##################################################
trials = range(1000,8000+1,2000)
MHPH_Results = [[] for i in trials]
for n in trials:
#Define Dimension and Domain
Domain = MHPH(Dim=n)
# Set Method
Method = HeunEuler(Domain=Domain,P=EntropicProjection(),Delta0=1e-1)
# Method = RipCurl(Domain=Domain,P=EntropicProjection(),factor=0.1,FixStep=True)
# Set Options
Init = Initialization(Step=-1)
Term = Termination(MaxIter=100,Tols=[[Domain.gap_simplex,1e-3]])
Repo = Reporting(Requests=[Domain.gap_simplex])
Misc = Miscellaneous()
Options = DescentOptions(Init,Term,Repo,Misc)
#Initialize Starting Point
Start = np.ones(Domain.Dim)/np.double(Domain.Dim)
# Print Stats
PrintSimStats(Domain,Method,Options)
tic = time.time()
ind = int(n/2000)-4
MHPH_Results[ind] = Solve(Start,Method,Domain,Options)
toc = time.time() - tic
# Print Results
PrintSimResults(Options,MHPH_Results[ind],Method,toc)
if __name__ == '__main__':
Demo()