@@ -53,7 +53,7 @@ function solve_allocation_by_duality_cgc(x0, auxdata, verbose=true)
5353
5454 # Set Ipopt options
5555 Ipopt. AddIpoptStrOption (prob, " hessian_approximation" , " exact" )
56- Ipopt. AddIpoptIntOption (prob, " max_iter" , 3000 )
56+ Ipopt. AddIpoptIntOption (prob, " max_iter" , 200 )
5757 Ipopt. AddIpoptIntOption (prob, " print_level" , verbose ? 5 : 0 )
5858
5959 if haskey (param, :optimizer_attr )
@@ -184,7 +184,7 @@ function hessian_duality_cgc(
184184 G = (Pjn[j, n] / PCj[j])^ (- sigma)
185185 if jd == j # 0 for P^n_k
186186 Gprime = sigma * (Pjn[j, n] * Pjn[j, nd])^ (- sigma) * PCj[j]^ (2 * sigma- 1 )
187- Cprime = Lj[j]/ omegaj[j] * (PCj[j] / Pjn[j, nd])^ sigma / param. usecond (res . cj [j], graph. hj[j]) # * param.uprimeinvprime(PCj [j]/omegaj[j] , graph.hj[j])
187+ Cprime = Lj[j]/ omegaj[j] * (PCj[j] / Pjn[j, nd])^ sigma * param. uprimeinvprime (PCj [j]/ omegaj[j] , graph. hj[j]) # / param.usecond(res.cj [j], graph.hj[j])
188188 if nd == n
189189 Gprime -= sigma / PCj[j] * G^ ((sigma+ 1 )/ sigma)
190190 end
@@ -194,8 +194,9 @@ function hessian_duality_cgc(
194194 # Now terms sum_k(Q^n_{jk} - Q^n_{kj}) as well as T'G + TG'
195195 for k in neighbors
196196 diff = Pjn[k, n] - Pjn[j, n]
197- if diff >= 0 # Flows in the direction of k
197+ if diff > 0 # Flows in the direction of k
198198 tmp = Qjkn[j, k, n]
199+ T = Qjk[j, k]^ (1 + beta) / kappa[j, k]
199200 PK0 = PCj[j] * (1 + beta) / kappa[j, k]
200201 KPABprimemQjkn = cons * ((Pjn[k, nd] - Pjn[j, nd])/ m[nd])^ n1dnum1 * Qjk[j, k]^ (- nu* beta* n1dnum1) * PK0^ (nu* n1dnum1)
201202 if jd == j
@@ -205,14 +206,14 @@ function hessian_duality_cgc(
205206 term -= tmp * n1dnum1 / diff # KPA'B
206207 end
207208 term += tmp * KPABprimemQjkn # KPAB'
208- term += Qjk[j, k] ^ ( 1 + beta) / kappa[j, k] * ((1 + beta)* KPprimeABmQjkn + cons2 * KPABprimemQjkn) * G # T'G
209- term += Qjk[j, k] ^ ( 1 + beta) / kappa[j, k] * Gprime # TG'
209+ term += T * ((1 + beta)* KPprimeABmQjkn + cons2 * KPABprimemQjkn) * G # T'G
210+ term += T * Gprime # TG'
210211 elseif jd == k
211212 if nd == n
212213 term += tmp * n1dnum1 / diff # KPA'B [A'(k) has opposite sign]
213214 end
214215 term -= tmp * KPABprimemQjkn # KPAB' [B'(k) has opposite sign]
215- term -= Qjk[j, k] ^ ( 1 + beta) / kappa[j, k] * cons2 * KPABprimemQjkn * G # T'G [B'(k) has opposite sign]
216+ term -= T * cons2 * KPABprimemQjkn * G # T'G [B'(k) has opposite sign]
216217 end
217218 else # Flows in the direction of j
218219 tmp = Qjkn[k, j, n]
0 commit comments