예제 #1
0
파일: examples.py 프로젝트: wuyou33/msppy
def construct_nvida():
    from msppy.msp import MSLP
    import numpy as np
    nvica = MSLP(T=2, sense=-1, bound=100)
    for t in range(2):
        m = nvica[t]
        buy_now, buy_past = m.addStateVar(name='bought', obj=-1.0)
        if t == 1:
            sold = m.addVar(name='sold', obj=2)
            unsatisfied = m.addVar(name='unsatisfied')
            recycled = m.addVar(name='recycled', obj=0.5)
            m.addConstr(sold + unsatisfied == 0,
                        uncertainty={'rhs': range(11)})
            m.addConstr(sold + recycled == buy_past)
    nvica.set_AVaR(l=0.5, a=0.1, method='direct')
    return nvica
예제 #2
0
    Markov_states = [
        [[5.0]],
        [[5.0]],
        [[5.0],[8.0]],
        [[5.0],[8.0]]
    ],
    transition_matrix = [
        [[1]],
        [[1]],
        [[0.6,0.4]],
        [[0.3,0.7],[0.3,0.7]]
    ]
)
for t in range(T):
    m = newsVendor[t]
    now, past = m.addStateVar(ub=100, name="stock")
    if t > 0:
        buy = m.addVar(name="buy", uncertainty_dependent=0)
        sell = m.addVar(name="sell", obj=- RetailPrice)
        m.addConstr(now == past + buy - sell)
        random = m.addVar(lb=-gurobipy.GRB.INFINITY, ub=gurobipy.GRB.INFINITY, name="demand")
        m.addConstr(random == 20, uncertainty={'rhs': Demand[t-1]})
        m.addConstr(sell <= random)
        m.addConstr(sell >= 0.5 * random)
    if t == 0:
        m.addConstr(now == 5.0)
Extensive(newsVendor).solve()
newsVendor.set_AVaR(a=0.6, l=0.5)
Extensive(newsVendor).solve()
SDDP(newsVendor).solve(max_iterations=100)
예제 #3
0
         m.addConstrs(
             now[j] == capm[j] + idio[j]
             for j in range(N)
         )
         for j in range(N):
             m.addConstr(past[j] == capm[j], uncertainty_dependent={past[j]:j})
             m.addConstr(past[j] == idio[j], uncertainty={past[j]:f(alpha[j],sigma[j])})
         m.addConstr(now[N] == (1+rf) * past[N])
 AssetMgt.discretize(
     n_samples=100,
     method='input',
     Markov_states=Markov_states,
     transition_matrix=transition_matrix,
     random_state=888,
 )
 AssetMgt.set_AVaR(lambda_=lambda_, alpha_=0.25)
 AssetMgt_SDDP = SDDP(AssetMgt)
 AssetMgt_SDDP.solve(max_iterations=50, n_steps=3, n_processes=3)
 evaluation = Evaluation(AssetMgt)
 evaluation.run(n_simulations=1000, random_state=666)
 evaluationTrue = EvaluationTrue(AssetMgt)
 evaluationTrue.run(n_simulations=1000, random_state=666)
 result = {
     'mean':numpy.mean(evaluation.pv)-100,
     'std':numpy.std(evaluation.pv),
     'VAR': numpy.quantile(evaluation.pv,0.05)-100,
     'skewness': stats.skew(evaluation.pv),
     'kurtosis': 3+stats.kurtosis(evaluation.pv),
     'Sharpe Ratio':
         (numpy.mean(evaluation.pv)-100-0.005513771)/numpy.std(evaluation.pv)
 }