Solver Gurobi和OSQP QP优化产生截然不同的结果

如何解决Solver Gurobi和OSQP QP优化产生截然不同的结果

结果不同 对于相同规格的Gurobi求解器输出是正确的,而OSQP给出了错误的解决方案,这是可以解决的。为什么? 下面是Gurobi障碍求解器日志

    Parameter OutputFlag unchanged
   Value: 1  Min: 0  Max: 1  Default: 1
Changed value of parameter QCPDual to 1
   Prev: 0  Min: 0  Max: 1  Default: 0
Gurobi Optimizer version 9.0.0 build v9.0.0rc2 (win64)
Optimize a model with 240240 rows,77196 columns and 489172 nonzeros
Model fingerprint: 0xdb33ff46
Model has 56012 quadratic objective terms
Coefficient statistics:
  Matrix range     [5e-02,3e+00]
  Objective range  [3e-04,1e+04]
  QObjective range [8e-11,4e-04]
  Bounds range     [0e+00,0e+00]
  RHS range        [3e-01,1e+04]
Presolve removed 239256 rows and 76677 columns
Presolve time: 0.26s
Presolved: 984 rows,519 columns,2643 nonzeros
Presolved model has 815 quadratic objective terms
Ordering time: 0.00s

Barrier statistics:
 Free vars  : 90
 AA' NZ     : 6.720e+03
 Factor NZ  : 1.221e+04 (roughly 1 MByte of memory)
 Factor Ops : 2.632e+05 (less than 1 second per iteration)
 Threads    : 1

                  Objective                Residual
Iter       Primal          Dual         Primal    Dual     Compl     Time
   0   2.52540363e+06 -5.69095127e+06  2.52e+04 8.95e+02  9.05e+05     0s
   1   9.93757272e+04 -3.17876909e+06  3.99e+03 1.41e+02  1.48e+05     0s
   2   9.11301845e+04 -2.28607080e+06  1.51e+02 5.36e+00  7.27e+03     0s
   3   1.03378792e+05 -3.92723265e+05  1.11e+01 3.95e-01  7.64e+02     0s
   4   8.86245744e+04 -1.08269004e+05  2.03e+00 7.18e-02  2.00e+02     0s
   5   3.53997941e+04 -2.58776169e+04  3.90e-01 1.38e-02  4.66e+01     0s
   6   1.06137209e+04 -6.30710427e+03  6.09e-02 2.16e-03  1.11e+01     0s
   7   3.52031557e+03 -2.17212662e+03  1.59e-02 5.64e-04  3.60e+00     0s
   8   5.44622629e+02 -5.55752181e+02  1.92e-03 6.79e-05  6.80e-01     0s
   9   5.52045072e+01 -2.14523216e+02  4.00e-04 1.42e-05  1.66e-01     0s
  10   1.10554192e+01 -4.47823436e+01  1.59e-05 5.62e-07  3.42e-02     0s
  11   1.51041071e+00 -1.18890369e+01  1.59e-11 4.47e-12  8.22e-03     0s
  12  -1.08480431e+00 -4.01317984e+00  2.12e-12 5.28e-13  1.80e-03     0s
  13  -1.45897649e+00 -2.93519651e+00  8.81e-13 1.49e-13  9.05e-04     0s
  14  -1.76654941e+00 -2.25628749e+00  1.11e-14 4.28e-15  3.00e-04     0s
  15  -1.85031146e+00 -1.90760537e+00  3.77e-15 2.87e-14  3.51e-05     0s
  16  -1.86177425e+00 -1.87515813e+00  3.79e-14 1.05e-13  8.21e-06     0s
  17  -1.86490849e+00 -1.86537066e+00  9.09e-14 4.35e-15  2.83e-07     0s
  18  -1.86502277e+00 -1.86502331e+00  2.86e-13 1.31e-14  3.29e-10     0s
  19  -1.86502290e+00 -1.86502290e+00  6.58e-13 7.11e-15  3.29e-13     0s

Barrier solved model in 19 iterations and 0.33 seconds
Optimal objective -1.86502290e+00

############################################
is_dcp:                True
is_qp:                 True
status:                optimal
objective_value:       1.8650229007993528
num_scalar_variables:  25788
num_scalar_data:       9929000
num_scalar_eq_constr:  17220
num_scalar_leq_constr  51660
max_data_dimension     205
solve_time:            0.3559989929199219
setup_time:            None
num_iters:             19
############################################
The solution is:  1.8650229007993528
AxesSubplot(0.125,0.125;0.775x0.755)

    
    **ECOS Solver log:**
ECOS 2.0.7 - (C) embotech GmbH,Zurich Switzerland,2012-15. Web: www.embotech.com/ECOS

It     pcost       dcost      gap   pres   dres    k/t    mu     step   sigma     IR    |   BT
 0  +1.092e+09  -6.958e+10  +4e+12  8e-01  2e+00  1e+00  2e+07    ---    ---    1  1  - |  -  - 
 1  +1.410e+09  -6.488e+10  +4e+12  7e-01  2e+00  3e+06  2e+07  0.2645  7e-01   1  1  1 |  0  0
 2  +8.501e+08  -4.165e+10  +3e+12  4e-01  1e+00  7e+06  1e+07  0.4430  4e-01   1  1  1 |  0  0
 3  +7.276e+08  -3.919e+10  +2e+12  4e-01  1e+00  1e+07  1e+07  0.2989  7e-01   1  1  1 |  0  0
 4  +3.586e+08  -1.424e+10  +1e+12  1e-01  5e-01  7e+06  5e+06  0.5661  8e-02   1  1  1 |  0  0
 5  +1.687e+08  -6.445e+09  +5e+11  5e-02  2e-01  3e+06  2e+06  0.6304  1e-01   1  1  1 |  0  0
 6  -7.805e+06  -2.949e+09  +3e+11  2e-02  1e-01  9e+05  1e+06  0.5757  2e-01   1  1  1 |  0  0
 7  +2.228e+06  -4.316e+08  +5e+10  3e-03  1e-02  8e+04  2e+05  0.8413  4e-02   1  1  1 |  0  0
 8  +9.190e+06  -5.985e+07  +1e+10  5e-04  2e-03  8e+03  5e+04  0.8146  1e-02   1  1  1 |  0  0
 9  +7.369e+06  -3.535e+07  +8e+09  3e-04  2e-03  5e+03  3e+04  0.3837  4e-01   1  1  1 |  0  0
10  +5.982e+06  -2.426e+07  +6e+09  2e-04  1e-03  3e+03  3e+04  0.2838  4e-01   1  1  1 |  0  0
11  +4.323e+06  -1.388e+07  +5e+09  1e-04  7e-04  2e+03  2e+04  0.4220  4e-01   1  1  1 |  0  0
12  +2.879e+06  -6.529e+06  +3e+09  5e-05  4e-04  7e+02  1e+04  0.3985  2e-01   1  1  1 |  0  0
13  +1.730e+06  -3.407e+06  +2e+09  3e-05  2e-04  3e+02  1e+04  0.4899  4e-01   1  1  1 |  0  0
14  +9.686e+05  -1.651e+06  +1e+09  1e-05  9e-05  1e+02  7e+03  0.5477  3e-01   1  1  1 |  0  0
15  +3.289e+05  -4.201e+05  +5e+08  3e-06  2e-05  4e+01  2e+03  0.6879  9e-02   1  1  1 |  0  0
16  +1.385e+05  -1.646e+05  +3e+08  1e-06  9e-06  1e+01  1e+03  0.6088  1e-01   1  1  1 |  0  0
17  +5.012e+04  -6.306e+04  +1e+08  4e-07  3e-06  4e+00  5e+02  0.6767  1e-01   1  1  1 |  0  0
18  +5.720e+03  -1.644e+04  +2e+07  7e-08  6e-07  6e-01  1e+02  0.8278  5e-02   1  1  1 |  0  0
19  +4.088e+03  -7.287e+03  +1e+07  3e-08  3e-07  3e-01  5e+01  0.6584  3e-01   1  1  1 |  0  0
20  +6.631e+02  -1.644e+03  +3e+06  7e-09  6e-08  5e-02  1e+01  0.8262  4e-02   1  1  1 |  0  0
21  +3.407e+02  -8.118e+02  +1e+06  3e-09  3e-08  2e-02  6e+00  0.6915  3e-01   1  1  1 |  0  0
22  +7.454e+01  -2.141e+02  +3e+05  8e-10  7e-09  5e-03  1e+00  0.7854  5e-02   1  1  1 |  0  0
23  +3.983e+01  -1.278e+02  +2e+05  5e-10  4e-09  3e-03  8e-01  0.6239  3e-01   1  1  1 |  0  0
24  +1.895e+01  -6.678e+01  +1e+05  2e-10  2e-09  1e-03  4e-01  0.5217  6e-02   1  1  1 |  0  0
25  +1.821e+01  -6.528e+01  +9e+04  2e-10  2e-09  1e-03  4e-01  0.0894  7e-01   1  1  1 |  0  0
26  +4.428e+00  -2.336e+01  +3e+04  8e-11  7e-10  4e-04  1e-01  0.7785  1e-01   1  1  1 |  0  0
27  +2.873e+00  -1.913e+01  +2e+04  6e-11  5e-10  3e-04  1e-01  0.4966  6e-01   1  1  1 |  0  0
28  -5.236e-01  -6.848e+00  +7e+03  2e-11  2e-10  8e-05  3e-02  0.7740  8e-02   1  1  1 |  0  0
29  -1.221e+00  -4.313e+00  +3e+03  9e-12  7e-11  4e-05  2e-02  0.6117  2e-01   1  1  1 |  0  0
30  -1.535e+00  -3.250e+00  +2e+03  5e-12  4e-11  2e-05  9e-03  0.9890  5e-01   1  1  1 |  0  0
31  -1.798e+00  -2.147e+00  +4e+02  1e-12  8e-12  4e-06  2e-03  0.9553  2e-01   1  1  1 |  0  0
32  -1.847e+00  -1.939e+00  +1e+02  3e-13  2e-12  1e-06  5e-04  0.8829  2e-01   1  1  1 |  0  0
33  -1.856e+00  -1.905e+00  +5e+01  1e-13  1e-12  6e-07  2e-04  0.7592  4e-01   1  1  1 |  0  0
34  -1.865e+00  -1.866e+00  +1e+00  4e-15  6e-13  2e-08  7e-06  0.9804  8e-03   1  1  1 |  0  0
35  -1.865e+00  -1.866e+00  +1e+00  3e-15  6e-13  1e-08  5e-06  0.4717  3e-01   1  1  1 |  0  0
36  -1.865e+00  -1.866e+00  +3e+00  3e-15  5e-12  1e-08  1e-05  0.9890  1e+00   1  1  1 |  0  0
37  -1.865e+00  -1.865e+00  +1e-01  7e-16  2e-13  4e-10  6e-07  0.9631  4e-04   1  1  1 |  0  0
38  -1.865e+00  -1.865e+00  +5e-03  2e-15  6e-13  1e-11  2e-08  0.9762  8e-04   1  1  1 |  0  0
39  -1.865e+00  -1.865e+00  +2e-03  1e-15  6e-13  2e-11  1e-08  0.9499  5e-01   1  1  1 |  0  0
40  -1.865e+00  -1.865e+00  +2e-04  5e-16  6e-13  2e-12  9e-10  0.9158  3e-03   2  1  1 |  0  0
41  -1.865e+00  -1.865e+00  +6e-05  1e-14  6e-13  3e-13  3e-10  0.9890  1e-01   2  1  1 |  0  0
42  -1.865e+00  -1.865e+00  +2e-04  3e-12  6e-13  3e-13  7e-10  0.9334  5e-01   2  1  1 |  0  0
43  -1.865e+00  -1.865e+00  +5e-04  3e-13  6e-13  1e-12  2e-09  0.9890  8e-01   2  1  1 |  0  0
44  -1.865e+00  -1.865e+00  +1e-05  4e-14  6e-13  6e-14  5e-11  0.9890  1e-02   2  1  1 |  0  0
45  -1.865e+00  -1.865e+00  +7e-04  4e-12  6e-13  1e-13  3e-09  0.9890  9e-01   3  1  1 |  0  0
46  -1.865e+00  -1.865e+00  +7e-06  7e-12  6e-13  2e-15  3e-11  0.9890  1e-04   3  1  1 |  0  0
47  -1.865e+00  -1.865e+00  +9e-04  2e-08  6e-13  8e-14  4e-09  0.9890  1e+00   6  3  2 |  0  0
Unreliable search direction detected,recovering best iterate (37) and stopping.

NUMERICAL PROBLEMS (reached feastol=2.2e-13,reltol=7.5e-02,abstol=1.4e-01).
Runtime: 21.312740 seconds.

**SCS Solver log**
----------------------------------------------------------------------------
    SCS v2.0.2 - Splitting Conic Solver
    (c) Brendan O'Donoghue,Stanford University,2012-2017
----------------------------------------------------------------------------
Lin-sys: sparse-indirect,nnz in A = 755622,CG tol ~ 1/iter^(2.00)
eps = 1.00e-04,alpha = 1.50,max_iters = 5000,normalize = 1,scale = 1.00
acceleration_lookback = -1,rho_x = 1.00e-03
Variables n = 77364,constraints m = 246492
Cones:  primal zero / dual free vars: 17220
    linear vars: 223020
    soc vars: 6252,soc blks: 168
Setup time: 6.81e-02s
----------------------------------------------------------------------------
 Iter | pri res | dua res | rel gap | pri obj | dua obj | kap/tau | time (s)
----------------------------------------------------------------------------
     0| 2.58e+00  1.50e+00  1.00e+00 -1.81e+10 -1.81e+06  0.00e+00  4.87e-01 
   100| 6.76e-04  1.51e-03  1.00e+00  8.50e+04 -1.40e+06  3.45e-06  9.99e+00 
   200| 5.05e-04  1.07e-04  7.84e-01 -1.51e+05 -1.24e+06  6.62e-07  1.60e+01 
   300| 5.05e-04  9.74e-05  7.82e-01 -1.37e+05 -1.12e+06  6.59e-07  2.22e+01 
   400| 5.05e-04  8.81e-05  7.80e-01 -1.24e+05 -1.01e+06  6.57e-07  2.88e+01 
   500| 5.04e-04  7.96e-05  7.77e-01 -1.12e+05 -8.94e+05  6.55e-07  3.53e+01 
   600| 5.04e-04  7.43e-05  7.74e-01 -1.05e+05 -8.23e+05  3.39e-06  4.08e+01 
   700| 5.04e-04  6.98e-05  7.70e-01 -9.92e+04 -7.63e+05  1.37e-06  4.63e+01 
   800| 5.04e-04  6.55e-05  7.66e-01 -9.35e+04 -7.04e+05  6.50e-07  5.18e+01 
   900| 5.04e-04  6.13e-05  7.60e-01 -8.79e+04 -6.45e+05  1.36e-06  5.77e+01 
  1000| 5.04e-04  5.73e-05  7.54e-01 -8.22e+04 -5.86e+05  1.36e-06  6.41e+01 
  1100| 5.04e-04  5.33e-05  7.47e-01 -7.66e+04 -5.28e+05  6.46e-07  6.97e+01 
  1200| 5.03e-04  4.97e-05  7.38e-01 -7.12e+04 -4.71e+05  1.35e-06  7.54e+01 
  1300| 5.03e-04  4.61e-05  7.27e-01 -6.59e+04 -4.16e+05  6.44e-07  8.12e+01 
  1400| 5.02e-04  4.29e-05  7.13e-01 -6.10e+04 -3.64e+05  2.64e-06  8.77e+01 
  1500| 5.01e-04  3.99e-05  6.96e-01 -5.64e+04 -3.15e+05  1.35e-06  9.48e+01 
  1600| 4.91e-04  3.75e-05  6.82e-01 -5.05e+04 -2.67e+05  6.42e-07  1.03e+02 
  1700| 4.85e-04  3.21e-05  6.53e-01 -4.62e+04 -2.20e+05  6.41e-07  1.13e+02 
  1800| 4.56e-04  3.05e-05  6.25e-01 -4.01e+04 -1.74e+05  1.35e-06  1.23e+02 
  1900| 3.47e-04  2.90e-05  6.75e-01 -2.74e+04 -1.41e+05  2.63e-06  1.35e+02 
  2000| 3.24e-04  2.68e-05  6.72e-01 -2.32e+04 -1.18e+05  1.34e-06  1.46e+02 
  2100| 2.94e-04  3.04e-05  6.27e-01 -2.20e+04 -9.63e+04  6.40e-07  1.57e+02 
  2200| 2.26e-04  3.56e-05  7.00e-01 -1.41e+04 -7.97e+04  2.62e-06  1.71e+02 
  2300| 1.61e-04  4.84e-05  6.37e-01 -1.50e+04 -6.78e+04  6.40e-07  1.85e+02 
  2400| 1.50e-04  4.68e-05  9.55e-01 -1.36e+03 -5.94e+04  6.40e-07  1.98e+02 
  2500| 1.27e-04  1.56e-05  7.93e-01 -6.12e+03 -5.30e+04  6.40e-07  2.11e+02 
  2600| 1.05e-04  1.65e-05  7.92e-01 -5.50e+03 -4.74e+04  6.39e-07  2.23e+02 
  2700| 8.02e-05  1.61e-05  7.92e-01 -4.96e+03 -4.28e+04  2.62e-06  2.36e+02 
  2800| 7.19e-05  1.18e-05  8.26e-01 -3.75e+03 -3.94e+04  6.39e-07  2.49e+02 
  2900| 5.43e-05  1.60e-05  8.10e-01 -3.82e+03 -3.64e+04  6.39e-07  2.62e+02 
  3000| 5.18e-05  1.27e-05  8.27e-01 -3.20e+03 -3.38e+04  6.39e-07  2.74e+02 
  3100| 4.90e-05  9.01e-06  8.88e-01 -1.84e+03 -3.12e+04  2.62e-06  2.86e+02 
  3200| 4.67e-05  1.33e-05  1.00e+00  2.29e+02 -2.88e+04  6.39e-07  2.99e+02 
  3300| 2.45e-05  1.03e-05  9.68e-01 -4.46e+02 -2.71e+04  1.34e-06  3.12e+02 
  3400| 2.39e-05  7.46e-06  9.67e-01 -4.26e+02 -2.56e+04  6.39e-07  3.22e+02 
  3500| 2.35e-05  7.34e-06  9.70e-01 -3.66e+02 -2.41e+04  6.39e-07  3.31e+02 
  3600| 2.28e-05  7.35e-06  9.70e-01 -3.40e+02 -2.27e+04  3.32e-06  3.41e+02 
  3700| 2.17e-05  7.55e-06  9.69e-01 -3.38e+02 -2.14e+04  6.39e-07  3.50e+02 
  3800| 2.10e-05  7.20e-06  9.69e-01 -3.14e+02 -2.01e+04  6.39e-07  3.60e+02 
  3900| 2.07e-05  6.73e-06  9.72e-01 -2.64e+02 -1.89e+04  1.34e-06  3.69e+02 
  4000| 2.04e-05  6.68e-06  9.76e-01 -2.14e+02 -1.77e+04  6.39e-07  3.79e+02 
  4100| 2.01e-05  6.64e-06  9.82e-01 -1.50e+02 -1.66e+04  6.39e-07  3.88e+02 
  4200| 2.00e-05  6.84e-06  9.88e-01 -9.38e+01 -1.55e+04  6.38e-07  3.98e+02 
  4300| 1.97e-05  6.52e-06  9.94e-01 -4.40e+01 -1.44e+04  6.38e-07  4.08e+02 
  4400| 1.96e-05  6.40e-06  1.00e+00  1.60e+01 -1.34e+04  1.34e-06  4.17e+02 
  4500| 1.95e-05  6.33e-06  1.00e+00  8.05e+01 -1.24e+04  1.34e-06  4.26e+02 
  4600| 1.90e-05  6.55e-06  1.00e+00  1.37e+02 -1.15e+04  6.38e-07  4.37e+02 
  4700| 1.86e-05  6.44e-06  1.00e+00  2.06e+02 -1.06e+04  6.38e-07  4.47e+02 
  4800| 1.73e-05  6.24e-06  1.00e+00  2.34e+02 -9.78e+03  3.32e-06  4.58e+02 
  4900| 1.69e-05  5.58e-06  1.00e+00  2.82e+02 -9.04e+03  1.34e-06  4.68e+02 
  5000| 1.63e-05  6.44e-06  1.00e+00  3.04e+02 -8.39e+03  6.38e-07  4.78e+02 
----------------------------------------------------------------------------
Status: Solved/Inaccurate
Hit max_iters,solution may be inaccurate
Timing: Solve time: 4.78e+02s
    Lin-sys: avg # CG iterations: 9.44,avg solve time: 8.25e-02s
    Cones: avg projection time: 5.84e-04s
    Acceleration: avg step time: 0.00e+00s
----------------------------------------------------------------------------
Error metrics:
dist(s,K) = 2.0111e-11,dist(y,K*) = 0.0000e+00,s'y/|s||y| = -3.8323e-18
primal res: |Ax + s - b|_2 / (1 + |b|_2) = 1.6308e-05
dual res:   |A'y + c|_2 / (1 + |c|_2) = 6.4380e-06
rel gap:    |c'x + b'y| / (1 + |c'x| + |b'y|) = 9.9988e-01
----------------------------------------------------------------------------
c'x = 304.2367,-b'y = -8388.8258
============================================================================
############################################
is_dcp:                True
is_qp:                 True
status:                optimal_inaccurate
objective_value:       -304.2366584084115
num_scalar_variables:  25788
num_scalar_data:       9929000
num_scalar_eq_constr:  17220
num_scalar_leq_constr  51660
max_data_dimension     205
solve_time:            478413.86694549426
setup_time:            68.10835877191816
num_iters:             5000
############################################
The solution is:  -304.2366584084115
AxesSubplot(0.125,0.125;0.775x0.755)

**OSQP Solver log:**
-----------------------------------------------------------------
           OSQP v0.5.0  -  Operator Splitting QP Solver
              (c) Bartolomeo Stellato,Goran Banjac
        University of Oxford  -  Stanford University 2018
-----------------------------------------------------------------
problem:  variables n = 77196,constraints m = 240240
          nnz(P) + nnz(A) = 545184
settings: linear system solver = qdldl,eps_abs = 1.0e-05,eps_rel = 1.0e-05,eps_prim_inf = 1.0e-04,eps_dual_inf = 1.0e-04,rho = 1.00e-01 (adaptive),sigma = 1.00e-06,alpha = 1.60,max_iter = 10000
          check_termination: on (interval 25),scaling: on,scaled_termination: off
          warm start: on,polish: on

objective    pri res    dua res    rho        time
   1  -5.7757e+06   7.16e+00   2.76e+03   1.00e-01   6.68e-01s
 200  -2.6075e+01   9.47e-04   1.39e+01   1.00e-01   5.78e+00s
 400   9.8155e-01   3.12e-04   3.45e+00   1.00e-01   1.10e+01s
 600   1.3592e-01   5.90e-05   1.63e+00   1.00e-01   1.61e+01s
 800   1.6026e-01   3.36e-05   3.55e-01   1.00e-01   2.13e+01s
1000   1.1418e-01   9.08e-06   2.29e-01   1.00e-01   2.65e+01s
1100   9.9919e-02   8.85e-06   6.92e-02   1.00e-01   2.91e+01s

status:               solved
solution polish:      unsuccessful
number of iterations: 1100
optimal objective:    0.0999
run time:             2.93e+01s
optimal rho estimate: 8.18e-02

############################################
is_dcp:                True
is_qp:                 True
status:                optimal
objective_value:       -0.09991904812176824
num_scalar_variables:  25788
num_scalar_data:       9929000
num_scalar_eq_constr:  17220
num_scalar_leq_constr  51660
max_data_dimension     205
solve_time:            29.289220095079017
setup_time:            None
num_iters:             1100
############################################
The solution is:  -0.099919048121768

以下代码的快照: ''' 优化=演示(数据输入=数据输入) #'CVXOPT','ECOS','ECOS_BB','GLPK',#'GLPK_MI','GUROBI','OSQP','SCS'

 solution = optimization.solve(solver = 
 'Gurobi')



class Demo:
        def __init__(self,datain):
            # validate_inputs(datain)
            self.inputs = datain
    
  
            self.trading_vecs = 
    [cp.Variable(self.I) for j in 
  range(self.J)]
    #some code
            self.objective = 
    self._define_objective()
            self.constraints = 
    self._define_constraints()
    
            self.problem = 
 











 cp.Problem(objective=
 cp.Maximize(self.objective),constraints=self.constraints)
    
            # outputs populated by calling 
#solve()
            self.solution = None
            self.size_metrics = None
            self.solver_stats = None
            self.h = None # holding vectors
            self.l = None # CaR vectors
            self.v = None # unsecured 
funding vector
    
        def solve(self,solver="CPLEX",verbose=True,**kwargs):
            """Solve the CVXPY problem and 
update the instance variables:
                 solution     : optimal 
objective value
                 size_metrics : problem size 
metrics
                 solver_stats : solver 
statistics
                 h            : holding 
vectors,a J-long list of I-long numpy 
arrays
                 l            : CaR vectors,a J-long list of I-long numpy arrays
                 v            : unsecured 
funding vector,a J-long numpy array
    
            Parameters
            ---------
            solver  : string,defaults to 
'CPLEX'; if CPLEX is not available,'ECOS'
                      has also been tested 
successfully,but it is slower
            verbose : boolean,defaults to 
 True
            kwargs  : CVXPY solver-specific 
 parameters; 

    
            Returns
            -------
            float value of the optimal 
 objective
            """
    
            self.solution = 
 self.problem.solve(solver=solver,verbose=verbose,**kwargs)
            self.size_metrics = 
  self.problem.size_metrics
            self.solver_stats = 
self.problem.solver_stats
    
            if verbose:
                self._print_problem_stats()
    
            self.h = 
[np.array(self.holding_vecs[j].value) \
                      for j in 
range(self.J)]
            self.l = 
[np.array(self.car_holding_vecs[j].value) \
                      for j in 
range(self.J)]
            self.v = 
[np.array(self.unsec_funding_vec[j].value) \
                      for j in 
range(self.J)]
    
            return self.solution
    
        def _define_constraints(self):
        """Define the CVXPY problem 
  constraints"""

        prev_holding_vecs = 
 [self.inputs['backbook_holding_vec']] + \
                            
 [self.holding_vecs[j] for j in 
range(self.J-1)]

        x_equations = [self.holding_vecs[j] 
 == self.inputs['trade_rolling_mats'][j] @ \
                              
                              
  self.trading_vecs[j] == 0 for j in 
range(self.J)]

#some other code

        constraints = x_equations + \
                      marketable_trading + \
                      no_short_position + \
                      no_neg_borrowing + \
                      
                 no_discretionary_unwind + \
                      within_cash_budget + \
                      car_lower_bounds + \
                      car_upper_bounds + \
                      car_funding + \
                      size_upper_limits

        return constraints

    def _define_objective(self):
        """Define the CVXPY objective"""
        post_transaction_cost_return = 
 list(map(lambda r,h,phi,u: 
 _dot_product(r,h) - phi(u),self.inputs['expected_return_vecs'],\
                                                
  self.holding_vecs,\
                                                                                                        
  self.trading_vecs))

    
#some code#                                         

objectives.append(self.inputs ['discount_vec'] [j] * \ \

  self.inputs['lambda_3'] * 
 car_unwind_transaction_cost[j] - \
                              
 external_funding_cost[j]))

        return cp.sum(objectives)

'''

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


依赖报错 idea导入项目后依赖报错,解决方案:https://blog.csdn.net/weixin_42420249/article/details/81191861 依赖版本报错:更换其他版本 无法下载依赖可参考:https://blog.csdn.net/weixin_42628809/a
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下 2021-12-03 13:33:33.927 ERROR 7228 [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPL
错误1:gradle项目控制台输出为乱码 # 解决方案:https://blog.csdn.net/weixin_43501566/article/details/112482302 # 在gradle-wrapper.properties 添加以下内容 org.gradle.jvmargs=-Df
错误还原:在查询的过程中,传入的workType为0时,该条件不起作用 <select id="xxx"> SELECT di.id, di.name, di.work_type, di.updated... <where> <if test=&qu
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct redisServer’没有名为‘server_cpulist’的成员 redisSetCpuAffinity(server.server_cpulist); ^ server.c: 在函数‘hasActiveC
解决方案1 1、改项目中.idea/workspace.xml配置文件,增加dynamic.classpath参数 2、搜索PropertiesComponent,添加如下 <property name="dynamic.classpath" value="tru
删除根组件app.vue中的默认代码后报错:Module Error (from ./node_modules/eslint-loader/index.js): 解决方案:关闭ESlint代码检测,在项目根目录创建vue.config.js,在文件中添加 module.exports = { lin
查看spark默认的python版本 [root@master day27]# pyspark /home/software/spark-2.3.4-bin-hadoop2.7/conf/spark-env.sh: line 2: /usr/local/hadoop/bin/hadoop: No s
使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams['font.sans-serif'] = ['SimHei'] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -> systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping("/hires") public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate<String
使用vite构建项目报错 C:\Users\ychen\work>npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-