Как реализовать q-learning для аукциона - PullRequest
0 голосов
/ 24 февраля 2020

Я пытаюсь создать адаптивную агентскую модель аукциона для первой частной аукционной игры с q-learning. Я закончил начальную модель без q-обучения. В основном для l oop. И сейчас я пытаюсь сделать это с помощью алгоритма q-learning. Я установил свое состояние в качестве текущей ставки, а действие - остаться / увеличить / снять. Моя путаница заключается в том, как настроить конечную точку в этом случае. И как построить среду.

import numpy as np
import random as rd

#Give each bidder a unique initial value won't change
agent1_val = rd.uniform(0,1)
agent2_val = rd.uniform(0,1)    
agent3_val = rd.uniform(0,1)
agent4_val = rd.uniform(0,1)     
agent5_val = rd.uniform(0,1)     
agent6_val = rd.uniform(0,1)     
agent7_val = rd.uniform(0,1)     
agent8_val = rd.uniform(0,1)     
agent9_val = rd.uniform(0,1)    
agent10_val = rd.uniform(0,1)  #adaptive agent    

X=[agent1_val,agent2_val,agent3_val,agent4_val,agent5_val,agent6_val,agent7_val,
   agent8_val,agent9_val,agent10_val]

w=max(X) #did not figure out how to use this information
        # should be an information for all the agent beforehead

u_0=1/6
u = u_0 #initial value of u

#Bidding price of each bidder

b1 = agent1_val*9/10
b2 = agent2_val*9/10
b3 = agent3_val*9/10
b4 = agent4_val*9/10
b5 = agent5_val*9/10
b6 = agent6_val*9/10
b7 = agent7_val*9/10
b8 = agent8_val*9/10
b9 = agent9_val*9/10

reward = 0.    #total_rewards

#find the optimal bid price for agent_10
for u in range(10000):
    u = 1/10
    b10=agent10_val*(1-u)
    B=[b1,b2,b3,b4,b5,b6,b7,b8,b9,b10]
    p=max(B)
    win=0
    lose=0
    if b10==p:
        win=1
    else:
        lose=1;
    result=win
    reward +=result*(agent10_val-b10)
    Y=sort(B)
    yn=Y[-2]
    if result ==1:
        O=b10*8/9
    else:
        O=yn
    d = 1-(O/agent10_val)
    u = u + 5/6 * (d-u)
    print('bidding price:', b10,'reward is : ', reward)

...