aboutsummaryrefslogtreecommitdiffstats
path: root/jpa_test/algorithms.py
diff options
context:
space:
mode:
authorjeanpouget-abadie <jean.pougetabadie@gmail.com>2014-12-05 16:04:31 -0500
committerjeanpouget-abadie <jean.pougetabadie@gmail.com>2014-12-05 16:04:31 -0500
commite83914a338aa5fb8fb90cddbf306eca8f90365b5 (patch)
tree4dc8eb8e491fb12c0a57c16202ef037236d717c6 /jpa_test/algorithms.py
parentee58bbeb5e8d870835c03d7f36b9976a0e8b857f (diff)
downloadcascades-e83914a338aa5fb8fb90cddbf306eca8f90365b5.tar.gz
lagrangian function convex_optimization
Diffstat (limited to 'jpa_test/algorithms.py')
-rw-r--r--jpa_test/algorithms.py22
1 files changed, 11 insertions, 11 deletions
diff --git a/jpa_test/algorithms.py b/jpa_test/algorithms.py
index 0d5f154..5d28300 100644
--- a/jpa_test/algorithms.py
+++ b/jpa_test/algorithms.py
@@ -35,11 +35,11 @@ def greedy_prediction(G, cascades):
return G_hat
-def recovery_l1obj_l2constraint(G, cascades):
+def recovery_l1obj_l2constraint(G, cascades, floor_cstt, passed_function,
+ *args, **kwargs):
"""
- Returns estimated graph from following convex program:
- min |theta_1| + lbda | exp(M theta) -(1- w)|
- where theta = log (1 - p); w = 1_{infected}; lbda = lagrange cstt
+ Returns estimated graph from convex program specified by passed_function
+ passed_function should have similar structure to ones in convex_optimation
"""
G_hat = cascade_creation.InfluenceGraph(max_proba=None)
G_hat.add_nodes_from(G.nodes())
@@ -47,9 +47,9 @@ def recovery_l1obj_l2constraint(G, cascades):
print node
try:
M, w = cascade_creation.icc_matrixvector_for_node(cascades, node)
- p_node, __ = convex_optimization.l1obj_l2constraint(M,w)
+ p_node, __ = passed_function(M,w, *args, **kwargs)
G_hat = cascade_creation.add_edges_from_proba_vector(G=G_hat,
- p_node=p_node, node=node, floor_cstt=.01)
+ p_node=p_node, node=node, floor_cstt=floor_cstt)
except timeout.TimeoutError:
print "TimeoutError, skipping to next node"
return G_hat
@@ -75,14 +75,14 @@ def test():
"""
unit test
"""
- G = cascade_creation.InfluenceGraph(max_proba = .5)
+ G = cascade_creation.InfluenceGraph(max_proba = .8)
G.erdos_init(n = 100, p = .3)
import time
t0 = time.time()
- A = cascade_creation.generate_cascades(G, .2, 100)
-
- G_hat = recovery_l1obj_l2constraint(G, A)
-
+ A = cascade_creation.generate_cascades(G, .2, 10000)
+ G_hat = recovery_l1obj_l2constraint(G, A,
+ passed_function=convex_optimization.l1obj_l2penalization,
+ floor_cstt=.1, lbda=100)
correctness_measure(G, G_hat, print_values=True)