diff --git a/configs/actions.json b/configs/actions.json new file mode 100644 index 0000000..2ed0197 --- /dev/null +++ b/configs/actions.json @@ -0,0 +1,67 @@ +{ + "actions": [ + { + "id": 0, + "name": "STRONG_ACCEPT", + "description": "강한 수락", + "category": "accept", + "strength": "strong" + }, + { + "id": 1, + "name": "MEDIUM_ACCEPT", + "description": "중간 수락", + "category": "accept", + "strength": "medium" + }, + { + "id": 2, + "name": "WEAK_ACCEPT", + "description": "약한 수락", + "category": "accept", + "strength": "weak" + }, + { + "id": 3, + "name": "STRONG_REJECT", + "description": "강한 거절", + "category": "reject", + "strength": "strong" + }, + { + "id": 4, + "name": "MEDIUM_REJECT", + "description": "중간 거절", + "category": "reject", + "strength": "medium" + }, + { + "id": 5, + "name": "WEAK_REJECT", + "description": "약한 거절", + "category": "reject", + "strength": "weak" + }, + { + "id": 6, + "name": "STRONG_PROPOSE", + "description": "강한 가격 제안", + "category": "propose", + "strength": "strong" + }, + { + "id": 7, + "name": "MEDIUM_PROPOSE", + "description": "중간 가격 제안", + "category": "propose", + "strength": "medium" + }, + { + "id": 8, + "name": "WEAK_PROPOSE", + "description": "약한 가격 제안", + "category": "propose", + "strength": "weak" + } + ] +} diff --git a/configs/offline_env_config.yaml b/configs/offline_env_config.yaml index fc93a5a..c65e66f 100644 --- a/configs/offline_env_config.yaml +++ b/configs/offline_env_config.yaml @@ -1,7 +1,12 @@ +env: + scenario: 0 + target_price: 100 + threshold_price: 120 + dataset_params: path: datasets/collected_data.h5 batch_size: 64 -agent_params: +agent: learning_rate: 0.001 discount_factor: 0.99 diff --git a/datasets/collected_data.h5 b/datasets/collected_data.h5 index d64e0ed..242641b 100644 Binary files a/datasets/collected_data.h5 and b/datasets/collected_data.h5 differ diff --git a/logs/collected_data_20250922_161824.json b/logs/collected_data_20250922_161824.json new file mode 100644 index 0000000..5353cdc --- /dev/null +++ b/logs/collected_data_20250922_161824.json @@ -0,0 +1,865 @@ +[ + { + "episode_id": 0, + "timestamp": "2025-09-22T16:18:24.027941", + "steps": [ + { + "step": 0, + "state": "State(scenario=높은 구매 의지, price_zone=임계가격 초과, acceptance_rate=낮음 (<10%))", + "action": "중간 거절", + "reward": 0.7358985001204814, + "next_state": "State(scenario=높은 구매 의지, price_zone=임계가격 초과, acceptance_rate=낮음 (<10%))", + "current_price": 135.8883052263702, + "terminated": false + }, + { + "step": 1, + "state": "State(scenario=높은 구매 의지, price_zone=임계가격 초과, acceptance_rate=낮음 (<10%))", + "action": "약한 거절", + "reward": 0.7861334009215178, + "next_state": "State(scenario=높은 구매 의지, price_zone=임계가격 초과, acceptance_rate=중간 (10-25%))", + "current_price": 127.20487373107215, + "terminated": false + }, + { + "step": 2, + "state": "State(scenario=높은 구매 의지, price_zone=임계가격 초과, acceptance_rate=중간 (10-25%))", + "action": "약한 수락", + "reward": 0.6305285853598203, + "next_state": "State(scenario=높은 구매 의지, price_zone=목표가격~임계가격, acceptance_rate=중간 (10-25%))", + "current_price": 118.94781892751169, + "terminated": false + }, + { + "step": 3, + "state": "State(scenario=높은 구매 의지, price_zone=목표가격~임계가격, acceptance_rate=중간 (10-25%))", + "action": "중간 수락", + "reward": 0.6740021559509319, + "next_state": "State(scenario=높은 구매 의지, price_zone=목표가격~임계가격, acceptance_rate=중간 (10-25%))", + "current_price": 111.27560844992324, + "terminated": false + }, + { + "step": 4, + "state": "State(scenario=높은 구매 의지, price_zone=목표가격~임계가격, acceptance_rate=중간 (10-25%))", + "action": "중간 가격 제안", + "reward": 0.7318358321615553, + "next_state": "State(scenario=높은 구매 의지, price_zone=목표가격~임계가격, acceptance_rate=높음 (>25%))", + "current_price": 102.48200033944701, + "terminated": false + }, + { + "step": 5, + "state": "State(scenario=높은 구매 의지, price_zone=목표가격~임계가격, acceptance_rate=높음 (>25%))", + "action": "약한 거절", + "reward": 0.570634635379974, + "next_state": "State(scenario=높은 구매 의지, price_zone=목표가격 이하, acceptance_rate=높음 (>25%))", + "current_price": 96.3839146626223, + "terminated": false + }, + { + "step": 6, + "state": "State(scenario=높은 구매 의지, price_zone=목표가격 이하, acceptance_rate=높음 (>25%))", + "action": "강한 가격 제안", + "reward": 1.0595279975097056, + "next_state": "State(scenario=높은 구매 의지, price_zone=목표가격 이하, acceptance_rate=높음 (>25%))", + "current_price": 90.23375501159687, + "terminated": true + } + ], + "total_reward": 5.188561107403986, + "num_steps": 7 + }, + { + "episode_id": 1, + "timestamp": "2025-09-22T16:18:24.029744", + "steps": [ + { + "step": 0, + "state": "State(scenario=높은 구매 의지, price_zone=임계가격 초과, acceptance_rate=낮음 (<10%))", + "action": "강한 거절", + "reward": 0.7390394774903258, + "next_state": "State(scenario=높은 구매 의지, price_zone=임계가격 초과, acceptance_rate=낮음 (<10%))", + "current_price": 135.31076897216093, + "terminated": false + }, + { + "step": 1, + "state": "State(scenario=높은 구매 의지, price_zone=임계가격 초과, acceptance_rate=낮음 (<10%))", + "action": "중간 거절", + "reward": 0.801125516069835, + "next_state": "State(scenario=높은 구매 의지, price_zone=임계가격 초과, acceptance_rate=중간 (10-25%))", + "current_price": 124.82438518570777, + "terminated": false + }, + { + "step": 2, + "state": "State(scenario=높은 구매 의지, price_zone=임계가격 초과, acceptance_rate=중간 (10-25%))", + "action": "약한 가격 제안", + "reward": 0.8266746792259854, + "next_state": "State(scenario=높은 구매 의지, price_zone=임계가격 초과, acceptance_rate=중간 (10-25%))", + "current_price": 120.96656945345163, + "terminated": false + }, + { + "step": 3, + "state": "State(scenario=높은 구매 의지, price_zone=임계가격 초과, acceptance_rate=중간 (10-25%))", + "action": "약한 거절", + "reward": 0.6539156600559058, + "next_state": "State(scenario=높은 구매 의지, price_zone=목표가격~임계가격, acceptance_rate=중간 (10-25%))", + "current_price": 114.69368999908635, + "terminated": false + }, + { + "step": 4, + "state": "State(scenario=높은 구매 의지, price_zone=목표가격~임계가격, acceptance_rate=중간 (10-25%))", + "action": "강한 수락", + "reward": 0.7009856035857323, + "next_state": "State(scenario=높은 구매 의지, price_zone=목표가격~임계가격, acceptance_rate=높음 (>25%))", + "current_price": 106.9922115609145, + "terminated": false + }, + { + "step": 5, + "state": "State(scenario=높은 구매 의지, price_zone=목표가격~임계가격, acceptance_rate=높음 (>25%))", + "action": "중간 거절", + "reward": 0.729344462994045, + "next_state": "State(scenario=높은 구매 의지, price_zone=목표가격~임계가격, acceptance_rate=높음 (>25%))", + "current_price": 102.83206880342405, + "terminated": false + }, + { + "step": 6, + "state": "State(scenario=높은 구매 의지, price_zone=목표가격~임계가격, acceptance_rate=높음 (>25%))", + "action": "강한 가격 제안", + "reward": 0.567252902669142, + "next_state": "State(scenario=높은 구매 의지, price_zone=목표가격 이하, acceptance_rate=높음 (>25%))", + "current_price": 96.95851663553233, + "terminated": false + }, + { + "step": 7, + "state": "State(scenario=높은 구매 의지, price_zone=목표가격 이하, acceptance_rate=높음 (>25%))", + "action": "중간 수락", + "reward": 1.0434788040265859, + "next_state": "State(scenario=높은 구매 의지, price_zone=목표가격 이하, acceptance_rate=높음 (>25%))", + "current_price": 92.67390785793958, + "terminated": true + } + ], + "total_reward": 6.061817106117557, + "num_steps": 8 + }, + { + "episode_id": 2, + "timestamp": "2025-09-22T16:18:24.029881", + "steps": [ + { + "step": 0, + "state": "State(scenario=높은 구매 의지, price_zone=임계가격 초과, acceptance_rate=낮음 (<10%))", + "action": "강한 거절", + "reward": 0.7269372327267993, + "next_state": "State(scenario=높은 구매 의지, price_zone=임계가격 초과, acceptance_rate=낮음 (<10%))", + "current_price": 137.56345871141042, + "terminated": false + }, + { + "step": 1, + "state": "State(scenario=높은 구매 의지, price_zone=임계가격 초과, acceptance_rate=낮음 (<10%))", + "action": "중간 거절", + "reward": 0.756597194679587, + "next_state": "State(scenario=높은 구매 의지, price_zone=임계가격 초과, acceptance_rate=낮음 (<10%))", + "current_price": 132.17072532544773, + "terminated": false + }, + { + "step": 2, + "state": "State(scenario=높은 구매 의지, price_zone=임계가격 초과, acceptance_rate=낮음 (<10%))", + "action": "강한 거절", + "reward": 0.7775685813646708, + "next_state": "State(scenario=높은 구매 의지, price_zone=임계가격 초과, acceptance_rate=중간 (10-25%))", + "current_price": 128.6060193230739, + "terminated": false + }, + { + "step": 3, + "state": "State(scenario=높은 구매 의지, price_zone=임계가격 초과, acceptance_rate=중간 (10-25%))", + "action": "중간 수락", + "reward": 0.812286351695623, + "next_state": "State(scenario=높은 구매 의지, price_zone=임계가격 초과, acceptance_rate=중간 (10-25%))", + "current_price": 123.10929488259042, + "terminated": false + }, + { + "step": 4, + "state": "State(scenario=높은 구매 의지, price_zone=임계가격 초과, acceptance_rate=중간 (10-25%))", + "action": "중간 수락", + "reward": 0.6493055986284829, + "next_state": "State(scenario=높은 구매 의지, price_zone=목표가격~임계가격, acceptance_rate=중간 (10-25%))", + "current_price": 115.50801372792905, + "terminated": false + }, + { + "step": 5, + "state": "State(scenario=높은 구매 의지, price_zone=목표가격~임계가격, acceptance_rate=중간 (10-25%))", + "action": "강한 가격 제안", + "reward": 0.690788532528077, + "next_state": "State(scenario=높은 구매 의지, price_zone=목표가격~임계가격, acceptance_rate=중간 (10-25%))", + "current_price": 108.57157649320362, + "terminated": false + }, + { + "step": 6, + "state": "State(scenario=높은 구매 의지, price_zone=목표가격~임계가격, acceptance_rate=중간 (10-25%))", + "action": "중간 거절", + "reward": 0.7100689199148662, + "next_state": "State(scenario=높은 구매 의지, price_zone=목표가격~임계가격, acceptance_rate=높음 (>25%))", + "current_price": 105.62354990694725, + "terminated": false + }, + { + "step": 7, + "state": "State(scenario=높은 구매 의지, price_zone=목표가격~임계가격, acceptance_rate=높음 (>25%))", + "action": "약한 가격 제안", + "reward": 0.5557374640257946, + "next_state": "State(scenario=높은 구매 의지, price_zone=목표가격 이하, acceptance_rate=높음 (>25%))", + "current_price": 98.9675945212993, + "terminated": false + }, + { + "step": 8, + "state": "State(scenario=높은 구매 의지, price_zone=목표가격 이하, acceptance_rate=높음 (>25%))", + "action": "중간 가격 제안", + "reward": 1.0412902763036351, + "next_state": "State(scenario=높은 구매 의지, price_zone=목표가격 이하, acceptance_rate=높음 (>25%))", + "current_price": 93.01691944576609, + "terminated": true + } + ], + "total_reward": 6.720580151867536, + "num_steps": 9 + }, + { + "episode_id": 3, + "timestamp": "2025-09-22T16:18:24.030028", + "steps": [ + { + "step": 0, + "state": "State(scenario=높은 구매 의지, price_zone=임계가격 초과, acceptance_rate=낮음 (<10%))", + "action": "중간 거절", + "reward": 0.7252551783902629, + "next_state": "State(scenario=높은 구매 의지, price_zone=임계가격 초과, acceptance_rate=낮음 (<10%))", + "current_price": 137.88250395116734, + "terminated": false + }, + { + "step": 1, + "state": "State(scenario=높은 구매 의지, price_zone=임계가격 초과, acceptance_rate=낮음 (<10%))", + "action": "약한 거절", + "reward": 0.7477667619419455, + "next_state": "State(scenario=높은 구매 의지, price_zone=임계가격 초과, acceptance_rate=낮음 (<10%))", + "current_price": 133.7315391503905, + "terminated": false + }, + { + "step": 2, + "state": "State(scenario=높은 구매 의지, price_zone=임계가격 초과, acceptance_rate=낮음 (<10%))", + "action": "중간 가격 제안", + "reward": 0.77003855118024, + "next_state": "State(scenario=높은 구매 의지, price_zone=임계가격 초과, acceptance_rate=낮음 (<10%))", + "current_price": 129.86362805697163, + "terminated": false + }, + { + "step": 3, + "state": "State(scenario=높은 구매 의지, price_zone=임계가격 초과, acceptance_rate=낮음 (<10%))", + "action": "중간 수락", + "reward": 0.8243137799776058, + "next_state": "State(scenario=높은 구매 의지, price_zone=임계가격 초과, acceptance_rate=중간 (10-25%))", + "current_price": 121.31302718573589, + "terminated": false + }, + { + "step": 4, + "state": "State(scenario=높은 구매 의지, price_zone=임계가격 초과, acceptance_rate=중간 (10-25%))", + "action": "중간 거절", + "reward": 0.6353442495723813, + "next_state": "State(scenario=높은 구매 의지, price_zone=목표가격~임계가격, acceptance_rate=중간 (10-25%))", + "current_price": 118.04624036572108, + "terminated": false + }, + { + "step": 5, + "state": "State(scenario=높은 구매 의지, price_zone=목표가격~임계가격, acceptance_rate=중간 (10-25%))", + "action": "강한 가격 제안", + "reward": 0.6678033474242119, + "next_state": "State(scenario=높은 구매 의지, price_zone=목표가격~임계가격, acceptance_rate=중간 (10-25%))", + "current_price": 112.30851161390989, + "terminated": false + }, + { + "step": 6, + "state": "State(scenario=높은 구매 의지, price_zone=목표가격~임계가격, acceptance_rate=중간 (10-25%))", + "action": "중간 거절", + "reward": 0.6816974190216999, + "next_state": "State(scenario=높은 구매 의지, price_zone=목표가격~임계가격, acceptance_rate=중간 (10-25%))", + "current_price": 110.01948651592679, + "terminated": false + }, + { + "step": 7, + "state": "State(scenario=높은 구매 의지, price_zone=목표가격~임계가격, acceptance_rate=중간 (10-25%))", + "action": "약한 가격 제안", + "reward": 0.7100061980929508, + "next_state": "State(scenario=높은 구매 의지, price_zone=목표가격~임계가격, acceptance_rate=높음 (>25%))", + "current_price": 105.63288067265765, + "terminated": false + }, + { + "step": 8, + "state": "State(scenario=높은 구매 의지, price_zone=목표가격~임계가격, acceptance_rate=높음 (>25%))", + "action": "중간 가격 제안", + "reward": 0.7442817697542694, + "next_state": "State(scenario=높은 구매 의지, price_zone=목표가격~임계가격, acceptance_rate=높음 (>25%))", + "current_price": 100.7682883657917, + "terminated": false + }, + { + "step": 9, + "state": "State(scenario=높은 구매 의지, price_zone=목표가격~임계가격, acceptance_rate=높음 (>25%))", + "action": "강한 수락", + "reward": 1.0374549618334905, + "next_state": "State(scenario=높은 구매 의지, price_zone=목표가격 이하, acceptance_rate=높음 (>25%))", + "current_price": 93.62419857403351, + "terminated": true + } + ], + "total_reward": 7.5439622171890575, + "num_steps": 10 + }, + { + "episode_id": 4, + "timestamp": "2025-09-22T16:18:24.030189", + "steps": [ + { + "step": 0, + "state": "State(scenario=높은 구매 의지, price_zone=임계가격 초과, acceptance_rate=낮음 (<10%))", + "action": "중간 수락", + "reward": 0.7146333204199368, + "next_state": "State(scenario=높은 구매 의지, price_zone=임계가격 초과, acceptance_rate=낮음 (<10%))", + "current_price": 139.93190233732378, + "terminated": false + }, + { + "step": 1, + "state": "State(scenario=높은 구매 의지, price_zone=임계가격 초과, acceptance_rate=낮음 (<10%))", + "action": "약한 가격 제안", + "reward": 0.7297921670526436, + "next_state": "State(scenario=높은 구매 의지, price_zone=임계가격 초과, acceptance_rate=낮음 (<10%))", + "current_price": 137.02531284195942, + "terminated": false + }, + { + "step": 2, + "state": "State(scenario=높은 구매 의지, price_zone=임계가격 초과, acceptance_rate=낮음 (<10%))", + "action": "약한 거절", + "reward": 0.75510873299296, + "next_state": "State(scenario=높은 구매 의지, price_zone=임계가격 초과, acceptance_rate=낮음 (<10%))", + "current_price": 132.43125874553, + "terminated": false + }, + { + "step": 3, + "state": "State(scenario=높은 구매 의지, price_zone=임계가격 초과, acceptance_rate=낮음 (<10%))", + "action": "중간 가격 제안", + "reward": 0.8102459947081206, + "next_state": "State(scenario=높은 구매 의지, price_zone=임계가격 초과, acceptance_rate=중간 (10-25%))", + "current_price": 123.41930802882099, + "terminated": false + }, + { + "step": 4, + "state": "State(scenario=높은 구매 의지, price_zone=임계가격 초과, acceptance_rate=중간 (10-25%))", + "action": "강한 가격 제안", + "reward": 0.8317345976484769, + "next_state": "State(scenario=높은 구매 의지, price_zone=임계가격 초과, acceptance_rate=중간 (10-25%))", + "current_price": 120.23066045674327, + "terminated": false + }, + { + "step": 5, + "state": "State(scenario=높은 구매 의지, price_zone=임계가격 초과, acceptance_rate=중간 (10-25%))", + "action": "강한 거절", + "reward": 0.6560086328440509, + "next_state": "State(scenario=높은 구매 의지, price_zone=목표가격~임계가격, acceptance_rate=중간 (10-25%))", + "current_price": 114.32776375951947, + "terminated": false + }, + { + "step": 6, + "state": "State(scenario=높은 구매 의지, price_zone=목표가격~임계가격, acceptance_rate=중간 (10-25%))", + "action": "약한 거절", + "reward": 0.674953538395559, + "next_state": "State(scenario=높은 구매 의지, price_zone=목표가격~임계가격, acceptance_rate=중간 (10-25%))", + "current_price": 111.1187596383056, + "terminated": false + }, + { + "step": 7, + "state": "State(scenario=높은 구매 의지, price_zone=목표가격~임계가격, acceptance_rate=중간 (10-25%))", + "action": "중간 가격 제안", + "reward": 0.7302460660076945, + "next_state": "State(scenario=높은 구매 의지, price_zone=목표가격~임계가격, acceptance_rate=높음 (>25%))", + "current_price": 102.70510652666732, + "terminated": false + }, + { + "step": 8, + "state": "State(scenario=높은 구매 의지, price_zone=목표가격~임계가격, acceptance_rate=높음 (>25%))", + "action": "약한 가격 제안", + "reward": 0.5720230516832283, + "next_state": "State(scenario=높은 구매 의지, price_zone=목표가격 이하, acceptance_rate=높음 (>25%))", + "current_price": 96.14997129601272, + "terminated": false + }, + { + "step": 9, + "state": "State(scenario=높은 구매 의지, price_zone=목표가격 이하, acceptance_rate=높음 (>25%))", + "action": "약한 거절", + "reward": 1.0506427970382055, + "next_state": "State(scenario=높은 구매 의지, price_zone=목표가격 이하, acceptance_rate=높음 (>25%))", + "current_price": 91.5685666609294, + "terminated": true + } + ], + "total_reward": 7.525388898790876, + "num_steps": 10 + }, + { + "episode_id": 5, + "timestamp": "2025-09-22T16:18:24.030352", + "steps": [ + { + "step": 0, + "state": "State(scenario=높은 구매 의지, price_zone=임계가격 초과, acceptance_rate=낮음 (<10%))", + "action": "중간 거절", + "reward": 0.7305613483955329, + "next_state": "State(scenario=높은 구매 의지, price_zone=임계가격 초과, acceptance_rate=낮음 (<10%))", + "current_price": 136.88104389812182, + "terminated": false + }, + { + "step": 1, + "state": "State(scenario=높은 구매 의지, price_zone=임계가격 초과, acceptance_rate=낮음 (<10%))", + "action": "약한 가격 제안", + "reward": 0.7567871209193779, + "next_state": "State(scenario=높은 구매 의지, price_zone=임계가격 초과, acceptance_rate=낮음 (<10%))", + "current_price": 132.1375552460719, + "terminated": false + }, + { + "step": 2, + "state": "State(scenario=높은 구매 의지, price_zone=임계가격 초과, acceptance_rate=낮음 (<10%))", + "action": "약한 가격 제안", + "reward": 0.78862199555197, + "next_state": "State(scenario=높은 구매 의지, price_zone=임계가격 초과, acceptance_rate=중간 (10-25%))", + "current_price": 126.80346295693705, + "terminated": false + }, + { + "step": 3, + "state": "State(scenario=높은 구매 의지, price_zone=임계가격 초과, acceptance_rate=중간 (10-25%))", + "action": "강한 거절", + "reward": 0.6358337173218354, + "next_state": "State(scenario=높은 구매 의지, price_zone=목표가격~임계가격, acceptance_rate=중간 (10-25%))", + "current_price": 117.95536782148626, + "terminated": false + }, + { + "step": 4, + "state": "State(scenario=높은 구매 의지, price_zone=목표가격~임계가격, acceptance_rate=중간 (10-25%))", + "action": "약한 수락", + "reward": 0.6888695836656975, + "next_state": "State(scenario=높은 구매 의지, price_zone=목표가격~임계가격, acceptance_rate=중간 (10-25%))", + "current_price": 108.8740187959828, + "terminated": false + }, + { + "step": 5, + "state": "State(scenario=높은 구매 의지, price_zone=목표가격~임계가격, acceptance_rate=중간 (10-25%))", + "action": "중간 수락", + "reward": 0.718338032660941, + "next_state": "State(scenario=높은 구매 의지, price_zone=목표가격~임계가격, acceptance_rate=높음 (>25%))", + "current_price": 104.4076696345554, + "terminated": false + }, + { + "step": 6, + "state": "State(scenario=높은 구매 의지, price_zone=목표가격~임계가격, acceptance_rate=높음 (>25%))", + "action": "약한 거절", + "reward": 0.7340748841478206, + "next_state": "State(scenario=높은 구매 의지, price_zone=목표가격~임계가격, acceptance_rate=높음 (>25%))", + "current_price": 102.16941298443504, + "terminated": false + }, + { + "step": 7, + "state": "State(scenario=높은 구매 의지, price_zone=목표가격~임계가격, acceptance_rate=높음 (>25%))", + "action": "약한 가격 제안", + "reward": 0.5570155928801377, + "next_state": "State(scenario=높은 구매 의지, price_zone=목표가격 이하, acceptance_rate=높음 (>25%))", + "current_price": 98.74050332345952, + "terminated": false + }, + { + "step": 8, + "state": "State(scenario=높은 구매 의지, price_zone=목표가격 이하, acceptance_rate=높음 (>25%))", + "action": "중간 가격 제안", + "reward": 1.044383090477607, + "next_state": "State(scenario=높은 구매 의지, price_zone=목표가격 이하, acceptance_rate=높음 (>25%))", + "current_price": 92.53291501917664, + "terminated": true + } + ], + "total_reward": 6.65448536602092, + "num_steps": 9 + }, + { + "episode_id": 6, + "timestamp": "2025-09-22T16:18:24.030490", + "steps": [ + { + "step": 0, + "state": "State(scenario=높은 구매 의지, price_zone=임계가격 초과, acceptance_rate=낮음 (<10%))", + "action": "강한 수락", + "reward": 0.72750892291292, + "next_state": "State(scenario=높은 구매 의지, price_zone=임계가격 초과, acceptance_rate=낮음 (<10%))", + "current_price": 137.4553587598672, + "terminated": false + }, + { + "step": 1, + "state": "State(scenario=높은 구매 의지, price_zone=임계가격 초과, acceptance_rate=낮음 (<10%))", + "action": "약한 수락", + "reward": 0.782524180941611, + "next_state": "State(scenario=높은 구매 의지, price_zone=임계가격 초과, acceptance_rate=중간 (10-25%))", + "current_price": 127.79157812052534, + "terminated": false + }, + { + "step": 2, + "state": "State(scenario=높은 구매 의지, price_zone=임계가격 초과, acceptance_rate=중간 (10-25%))", + "action": "중간 수락", + "reward": 0.8283112545472572, + "next_state": "State(scenario=높은 구매 의지, price_zone=임계가격 초과, acceptance_rate=중간 (10-25%))", + "current_price": 120.72756400570525, + "terminated": false + }, + { + "step": 3, + "state": "State(scenario=높은 구매 의지, price_zone=임계가격 초과, acceptance_rate=중간 (10-25%))", + "action": "중간 거절", + "reward": 0.6730035701665233, + "next_state": "State(scenario=높은 구매 의지, price_zone=목표가격~임계가격, acceptance_rate=중간 (10-25%))", + "current_price": 111.44071640131496, + "terminated": false + }, + { + "step": 4, + "state": "State(scenario=높은 구매 의지, price_zone=목표가격~임계가격, acceptance_rate=중간 (10-25%))", + "action": "중간 수락", + "reward": 0.7083731926007367, + "next_state": "State(scenario=높은 구매 의지, price_zone=목표가격~임계가격, acceptance_rate=높음 (>25%))", + "current_price": 105.87639507452755, + "terminated": false + }, + { + "step": 5, + "state": "State(scenario=높은 구매 의지, price_zone=목표가격~임계가격, acceptance_rate=높음 (>25%))", + "action": "강한 거절", + "reward": 0.5571921272965241, + "next_state": "State(scenario=높은 구매 의지, price_zone=목표가격 이하, acceptance_rate=높음 (>25%))", + "current_price": 98.70921950541188, + "terminated": false + }, + { + "step": 6, + "state": "State(scenario=높은 구매 의지, price_zone=목표가격 이하, acceptance_rate=높음 (>25%))", + "action": "중간 거절", + "reward": 0.578004004688776, + "next_state": "State(scenario=높은 구매 의지, price_zone=목표가격 이하, acceptance_rate=높음 (>25%))", + "current_price": 95.15505005819907, + "terminated": false + }, + { + "step": 7, + "state": "State(scenario=높은 구매 의지, price_zone=목표가격 이하, acceptance_rate=높음 (>25%))", + "action": "약한 거절", + "reward": 1.059787946167413, + "next_state": "State(scenario=높은 구매 의지, price_zone=목표가격 이하, acceptance_rate=높음 (>25%))", + "current_price": 90.19528894541341, + "terminated": true + } + ], + "total_reward": 5.9147051993217605, + "num_steps": 8 + }, + { + "episode_id": 7, + "timestamp": "2025-09-22T16:18:24.030613", + "steps": [ + { + "step": 0, + "state": "State(scenario=높은 구매 의지, price_zone=임계가격 초과, acceptance_rate=낮음 (<10%))", + "action": "강한 거절", + "reward": 0.7476969492228983, + "next_state": "State(scenario=높은 구매 의지, price_zone=임계가격 초과, acceptance_rate=낮음 (<10%))", + "current_price": 133.74402570979152, + "terminated": false + }, + { + "step": 1, + "state": "State(scenario=높은 구매 의지, price_zone=임계가격 초과, acceptance_rate=낮음 (<10%))", + "action": "약한 수락", + "reward": 0.7826844090569465, + "next_state": "State(scenario=높은 구매 의지, price_zone=임계가격 초과, acceptance_rate=중간 (10-25%))", + "current_price": 127.76541712449546, + "terminated": false + }, + { + "step": 2, + "state": "State(scenario=높은 구매 의지, price_zone=임계가격 초과, acceptance_rate=중간 (10-25%))", + "action": "약한 수락", + "reward": 0.6339560237546636, + "next_state": "State(scenario=높은 구매 의지, price_zone=목표가격~임계가격, acceptance_rate=중간 (10-25%))", + "current_price": 118.30473595913722, + "terminated": false + }, + { + "step": 3, + "state": "State(scenario=높은 구매 의지, price_zone=목표가격~임계가격, acceptance_rate=중간 (10-25%))", + "action": "중간 수락", + "reward": 0.6700352339433415, + "next_state": "State(scenario=높은 구매 의지, price_zone=목표가격~임계가격, acceptance_rate=중간 (10-25%))", + "current_price": 111.93441210338206, + "terminated": false + }, + { + "step": 4, + "state": "State(scenario=높은 구매 의지, price_zone=목표가격~임계가격, acceptance_rate=중간 (10-25%))", + "action": "약한 수락", + "reward": 0.7174069347685657, + "next_state": "State(scenario=높은 구매 의지, price_zone=목표가격~임계가격, acceptance_rate=높음 (>25%))", + "current_price": 104.54317677343735, + "terminated": false + }, + { + "step": 5, + "state": "State(scenario=높은 구매 의지, price_zone=목표가격~임계가격, acceptance_rate=높음 (>25%))", + "action": "강한 거절", + "reward": 0.5640770884044879, + "next_state": "State(scenario=높은 구매 의지, price_zone=목표가격 이하, acceptance_rate=높음 (>25%))", + "current_price": 97.5044034416811, + "terminated": false + }, + { + "step": 6, + "state": "State(scenario=높은 구매 의지, price_zone=목표가격 이하, acceptance_rate=높음 (>25%))", + "action": "중간 수락", + "reward": 1.0558066698679451, + "next_state": "State(scenario=높은 구매 의지, price_zone=목표가격 이하, acceptance_rate=높음 (>25%))", + "current_price": 90.78803970908572, + "terminated": true + } + ], + "total_reward": 5.171663309018848, + "num_steps": 7 + }, + { + "episode_id": 8, + "timestamp": "2025-09-22T16:18:24.030719", + "steps": [ + { + "step": 0, + "state": "State(scenario=높은 구매 의지, price_zone=임계가격 초과, acceptance_rate=낮음 (<10%))", + "action": "강한 수락", + "reward": 0.7465479684274815, + "next_state": "State(scenario=높은 구매 의지, price_zone=임계가격 초과, acceptance_rate=낮음 (<10%))", + "current_price": 133.94986555336644, + "terminated": false + }, + { + "step": 1, + "state": "State(scenario=높은 구매 의지, price_zone=임계가격 초과, acceptance_rate=낮음 (<10%))", + "action": "약한 거절", + "reward": 0.7880565018752345, + "next_state": "State(scenario=높은 구매 의지, price_zone=임계가격 초과, acceptance_rate=중간 (10-25%))", + "current_price": 126.89445460070839, + "terminated": false + }, + { + "step": 2, + "state": "State(scenario=높은 구매 의지, price_zone=임계가격 초과, acceptance_rate=중간 (10-25%))", + "action": "강한 수락", + "reward": 0.6264636918952473, + "next_state": "State(scenario=높은 구매 의지, price_zone=목표가격~임계가격, acceptance_rate=중간 (10-25%))", + "current_price": 119.71962776182876, + "terminated": false + }, + { + "step": 3, + "state": "State(scenario=높은 구매 의지, price_zone=목표가격~임계가격, acceptance_rate=중간 (10-25%))", + "action": "약한 가격 제안", + "reward": 0.6548001047926377, + "next_state": "State(scenario=높은 구매 의지, price_zone=목표가격~임계가격, acceptance_rate=중간 (10-25%))", + "current_price": 114.53877213985942, + "terminated": false + }, + { + "step": 4, + "state": "State(scenario=높은 구매 의지, price_zone=목표가격~임계가격, acceptance_rate=중간 (10-25%))", + "action": "약한 가격 제안", + "reward": 0.681939343451541, + "next_state": "State(scenario=높은 구매 의지, price_zone=목표가격~임계가격, acceptance_rate=중간 (10-25%))", + "current_price": 109.98045606284857, + "terminated": false + }, + { + "step": 5, + "state": "State(scenario=높은 구매 의지, price_zone=목표가격~임계가격, acceptance_rate=중간 (10-25%))", + "action": "중간 수락", + "reward": 0.7000434976249617, + "next_state": "State(scenario=높은 구매 의지, price_zone=목표가격~임계가격, acceptance_rate=높음 (>25%))", + "current_price": 107.13619975680452, + "terminated": false + }, + { + "step": 6, + "state": "State(scenario=높은 구매 의지, price_zone=목표가격~임계가격, acceptance_rate=높음 (>25%))", + "action": "약한 거절", + "reward": 0.7290266498774218, + "next_state": "State(scenario=높은 구매 의지, price_zone=목표가격~임계가격, acceptance_rate=높음 (>25%))", + "current_price": 102.87689759024647, + "terminated": false + }, + { + "step": 7, + "state": "State(scenario=높은 구매 의지, price_zone=목표가격~임계가격, acceptance_rate=높음 (>25%))", + "action": "약한 수락", + "reward": 0.5537943325131409, + "next_state": "State(scenario=높은 구매 의지, price_zone=목표가격 이하, acceptance_rate=높음 (>25%))", + "current_price": 99.31484807799998, + "terminated": false + }, + { + "step": 8, + "state": "State(scenario=높은 구매 의지, price_zone=목표가격 이하, acceptance_rate=높음 (>25%))", + "action": "약한 가격 제안", + "reward": 1.0514864005028703, + "next_state": "State(scenario=높은 구매 의지, price_zone=목표가격 이하, acceptance_rate=높음 (>25%))", + "current_price": 91.44013888596228, + "terminated": true + } + ], + "total_reward": 6.532158490960537, + "num_steps": 9 + }, + { + "episode_id": 9, + "timestamp": "2025-09-22T16:18:24.030862", + "steps": [ + { + "step": 0, + "state": "State(scenario=높은 구매 의지, price_zone=임계가격 초과, acceptance_rate=낮음 (<10%))", + "action": "약한 거절", + "reward": 0.7179479516097199, + "next_state": "State(scenario=높은 구매 의지, price_zone=임계가격 초과, acceptance_rate=낮음 (<10%))", + "current_price": 139.2858629595485, + "terminated": false + }, + { + "step": 1, + "state": "State(scenario=높은 구매 의지, price_zone=임계가격 초과, acceptance_rate=낮음 (<10%))", + "action": "약한 수락", + "reward": 0.7357380633672626, + "next_state": "State(scenario=높은 구매 의지, price_zone=임계가격 초과, acceptance_rate=낮음 (<10%))", + "current_price": 135.91793734624605, + "terminated": false + }, + { + "step": 2, + "state": "State(scenario=높은 구매 의지, price_zone=임계가격 초과, acceptance_rate=낮음 (<10%))", + "action": "강한 거절", + "reward": 0.7985485009052322, + "next_state": "State(scenario=높은 구매 의지, price_zone=임계가격 초과, acceptance_rate=중간 (10-25%))", + "current_price": 125.22720897558546, + "terminated": false + }, + { + "step": 3, + "state": "State(scenario=높은 구매 의지, price_zone=임계가격 초과, acceptance_rate=중간 (10-25%))", + "action": "약한 수락", + "reward": 0.634178662402988, + "next_state": "State(scenario=높은 구매 의지, price_zone=목표가격~임계가격, acceptance_rate=중간 (10-25%))", + "current_price": 118.26320317340058, + "terminated": false + }, + { + "step": 4, + "state": "State(scenario=높은 구매 의지, price_zone=목표가격~임계가격, acceptance_rate=중간 (10-25%))", + "action": "중간 거절", + "reward": 0.66713537132276, + "next_state": "State(scenario=높은 구매 의지, price_zone=목표가격~임계가격, acceptance_rate=중간 (10-25%))", + "current_price": 112.4209616577428, + "terminated": false + }, + { + "step": 5, + "state": "State(scenario=높은 구매 의지, price_zone=목표가격~임계가격, acceptance_rate=중간 (10-25%))", + "action": "약한 가격 제안", + "reward": 0.6959274570546614, + "next_state": "State(scenario=높은 구매 의지, price_zone=목표가격~임계가격, acceptance_rate=높음 (>25%))", + "current_price": 107.76985336577854, + "terminated": false + }, + { + "step": 6, + "state": "State(scenario=높은 구매 의지, price_zone=목표가격~임계가격, acceptance_rate=높음 (>25%))", + "action": "중간 수락", + "reward": 0.7252535975319768, + "next_state": "State(scenario=높은 구매 의지, price_zone=목표가격~임계가격, acceptance_rate=높음 (>25%))", + "current_price": 103.4121033735282, + "terminated": false + }, + { + "step": 7, + "state": "State(scenario=높은 구매 의지, price_zone=목표가격~임계가격, acceptance_rate=높음 (>25%))", + "action": "중간 거절", + "reward": 0.7424496531354222, + "next_state": "State(scenario=높은 구매 의지, price_zone=목표가격~임계가격, acceptance_rate=높음 (>25%))", + "current_price": 101.01695068920729, + "terminated": false + }, + { + "step": 8, + "state": "State(scenario=높은 구매 의지, price_zone=목표가격~임계가격, acceptance_rate=높음 (>25%))", + "action": "강한 수락", + "reward": 0.5587233113829603, + "next_state": "State(scenario=높은 구매 의지, price_zone=목표가격 이하, acceptance_rate=높음 (>25%))", + "current_price": 98.43870638556888, + "terminated": false + }, + { + "step": 9, + "state": "State(scenario=높은 구매 의지, price_zone=목표가격 이하, acceptance_rate=높음 (>25%))", + "action": "중간 가격 제안", + "reward": 1.0321906190591832, + "next_state": "State(scenario=높은 구매 의지, price_zone=목표가격 이하, acceptance_rate=높음 (>25%))", + "current_price": 94.47077675157269, + "terminated": true + } + ], + "total_reward": 7.308093187772166, + "num_steps": 10 + } +] \ No newline at end of file diff --git a/saved_models/offline_agent.pth b/saved_models/offline_agent.pth deleted file mode 100644 index e2a678f..0000000 Binary files a/saved_models/offline_agent.pth and /dev/null differ diff --git a/saved_models/q_table.json b/saved_models/q_table.json new file mode 100644 index 0000000..54e01e3 --- /dev/null +++ b/saved_models/q_table.json @@ -0,0 +1,2026 @@ +{ + "metadata": { + "state_size": 36, + "action_size": 9, + "timestamp": "2025-09-22T16:20:10.539545", + "training_episodes": 10 + }, + "q_values": [ + { + "state_idx": 0, + "state_desc": "State(scenario=높은 구매 의지, price_zone=목표가격 이하, acceptance_rate=낮음 (<10%))", + "actions": [ + { + "action_idx": 0, + "action_desc": "강한 수락", + "q_value": 0.08795120152833774 + }, + { + "action_idx": 1, + "action_desc": "중간 수락", + "q_value": 0.07980060621013178 + }, + { + "action_idx": 2, + "action_desc": "약한 수락", + "q_value": 0.06578247676712926 + }, + { + "action_idx": 3, + "action_desc": "강한 거절", + "q_value": 0.05640440663220407 + }, + { + "action_idx": 4, + "action_desc": "중간 거절", + "q_value": 0.08343614486312115 + }, + { + "action_idx": 5, + "action_desc": "약한 거절", + "q_value": 0.07708021145254244 + }, + { + "action_idx": 6, + "action_desc": "강한 가격 제안", + "q_value": 0.06649834752893999 + }, + { + "action_idx": 7, + "action_desc": "중간 가격 제안", + "q_value": 0.0483122563738206 + }, + { + "action_idx": 8, + "action_desc": "약한 가격 제안", + "q_value": 0.07784918257350587 + } + ], + "optimal_action": { + "action_idx": 0, + "action_desc": "강한 수락", + "q_value": 0.08795120152833774 + } + }, + { + "state_idx": 1, + "state_desc": "State(scenario=높은 구매 의지, price_zone=목표가격 이하, acceptance_rate=중간 (10-25%))", + "actions": [ + { + "action_idx": 0, + "action_desc": "강한 수락", + "q_value": 0.04181960568421511 + }, + { + "action_idx": 1, + "action_desc": "중간 수락", + "q_value": 0.01650653844752281 + }, + { + "action_idx": 2, + "action_desc": "약한 수락", + "q_value": 0.02224513478479088 + }, + { + "action_idx": 3, + "action_desc": "강한 거절", + "q_value": 0.04105294727331152 + }, + { + "action_idx": 4, + "action_desc": "중간 거절", + "q_value": 0.05931104531941931 + }, + { + "action_idx": 5, + "action_desc": "약한 거절", + "q_value": 0.04004415229683608 + }, + { + "action_idx": 6, + "action_desc": "강한 가격 제안", + "q_value": 0.02881340637109566 + }, + { + "action_idx": 7, + "action_desc": "중간 가격 제안", + "q_value": 0.033459877776815736 + }, + { + "action_idx": 8, + "action_desc": "약한 가격 제안", + "q_value": 0.05507207930384824 + } + ], + "optimal_action": { + "action_idx": 4, + "action_desc": "중간 거절", + "q_value": 0.05931104531941931 + } + }, + { + "state_idx": 2, + "state_desc": "State(scenario=높은 구매 의지, price_zone=목표가격 이하, acceptance_rate=높음 (>25%))", + "actions": [ + { + "action_idx": 0, + "action_desc": "강한 수락", + "q_value": 0.07486255107754664 + }, + { + "action_idx": 1, + "action_desc": "중간 수락", + "q_value": 0.07980060621013178 + }, + { + "action_idx": 2, + "action_desc": "약한 수락", + "q_value": 0.05926445786066637 + }, + { + "action_idx": 3, + "action_desc": "강한 거절", + "q_value": 0.04275562307545951 + }, + { + "action_idx": 4, + "action_desc": "중간 거절", + "q_value": 0.04916661909531326 + }, + { + "action_idx": 5, + "action_desc": "약한 거절", + "q_value": 0.07053122078911914 + }, + { + "action_idx": 6, + "action_desc": "강한 가격 제안", + "q_value": 0.04567119680331397 + }, + { + "action_idx": 7, + "action_desc": "중간 가격 제안", + "q_value": 0.04118128186893584 + }, + { + "action_idx": 8, + "action_desc": "약한 가격 제안", + "q_value": 0.0647616644539918 + } + ], + "optimal_action": { + "action_idx": 1, + "action_desc": "중간 수락", + "q_value": 0.07980060621013178 + } + }, + { + "state_idx": 3, + "state_desc": "State(scenario=높은 구매 의지, price_zone=목표가격~임계가격, acceptance_rate=낮음 (<10%))", + "actions": [ + { + "action_idx": 0, + "action_desc": "강한 수락", + "q_value": 0.0 + }, + { + "action_idx": 1, + "action_desc": "중간 수락", + "q_value": 0.0 + }, + { + "action_idx": 2, + "action_desc": "약한 수락", + "q_value": 0.0 + }, + { + "action_idx": 3, + "action_desc": "강한 거절", + "q_value": 0.0 + }, + { + "action_idx": 4, + "action_desc": "중간 거절", + "q_value": 0.0 + }, + { + "action_idx": 5, + "action_desc": "약한 거절", + "q_value": 0.0 + }, + { + "action_idx": 6, + "action_desc": "강한 가격 제안", + "q_value": 0.0 + }, + { + "action_idx": 7, + "action_desc": "중간 가격 제안", + "q_value": 0.0 + }, + { + "action_idx": 8, + "action_desc": "약한 가격 제안", + "q_value": 0.0 + } + ], + "optimal_action": { + "action_idx": 0, + "action_desc": "강한 수락", + "q_value": 0.0 + } + }, + { + "state_idx": 4, + "state_desc": "State(scenario=높은 구매 의지, price_zone=목표가격~임계가격, acceptance_rate=중간 (10-25%))", + "actions": [ + { + "action_idx": 0, + "action_desc": "강한 수락", + "q_value": 0.0 + }, + { + "action_idx": 1, + "action_desc": "중간 수락", + "q_value": 0.0 + }, + { + "action_idx": 2, + "action_desc": "약한 수락", + "q_value": 0.0 + }, + { + "action_idx": 3, + "action_desc": "강한 거절", + "q_value": 0.0 + }, + { + "action_idx": 4, + "action_desc": "중간 거절", + "q_value": 0.0 + }, + { + "action_idx": 5, + "action_desc": "약한 거절", + "q_value": 0.0 + }, + { + "action_idx": 6, + "action_desc": "강한 가격 제안", + "q_value": 0.0 + }, + { + "action_idx": 7, + "action_desc": "중간 가격 제안", + "q_value": 0.0 + }, + { + "action_idx": 8, + "action_desc": "약한 가격 제안", + "q_value": 0.0 + } + ], + "optimal_action": { + "action_idx": 0, + "action_desc": "강한 수락", + "q_value": 0.0 + } + }, + { + "state_idx": 5, + "state_desc": "State(scenario=높은 구매 의지, price_zone=목표가격~임계가격, acceptance_rate=높음 (>25%))", + "actions": [ + { + "action_idx": 0, + "action_desc": "강한 수락", + "q_value": 0.0 + }, + { + "action_idx": 1, + "action_desc": "중간 수락", + "q_value": 0.0 + }, + { + "action_idx": 2, + "action_desc": "약한 수락", + "q_value": 0.0 + }, + { + "action_idx": 3, + "action_desc": "강한 거절", + "q_value": 0.0 + }, + { + "action_idx": 4, + "action_desc": "중간 거절", + "q_value": 0.0 + }, + { + "action_idx": 5, + "action_desc": "약한 거절", + "q_value": 0.0 + }, + { + "action_idx": 6, + "action_desc": "강한 가격 제안", + "q_value": 0.0 + }, + { + "action_idx": 7, + "action_desc": "중간 가격 제안", + "q_value": 0.0 + }, + { + "action_idx": 8, + "action_desc": "약한 가격 제안", + "q_value": 0.0 + } + ], + "optimal_action": { + "action_idx": 0, + "action_desc": "강한 수락", + "q_value": 0.0 + } + }, + { + "state_idx": 6, + "state_desc": "State(scenario=높은 구매 의지, price_zone=임계가격 초과, acceptance_rate=낮음 (<10%))", + "actions": [ + { + "action_idx": 0, + "action_desc": "강한 수락", + "q_value": 0.0 + }, + { + "action_idx": 1, + "action_desc": "중간 수락", + "q_value": 0.0 + }, + { + "action_idx": 2, + "action_desc": "약한 수락", + "q_value": 0.0 + }, + { + "action_idx": 3, + "action_desc": "강한 거절", + "q_value": 0.0 + }, + { + "action_idx": 4, + "action_desc": "중간 거절", + "q_value": 0.0 + }, + { + "action_idx": 5, + "action_desc": "약한 거절", + "q_value": 0.0 + }, + { + "action_idx": 6, + "action_desc": "강한 가격 제안", + "q_value": 0.0 + }, + { + "action_idx": 7, + "action_desc": "중간 가격 제안", + "q_value": 0.0 + }, + { + "action_idx": 8, + "action_desc": "약한 가격 제안", + "q_value": 0.0 + } + ], + "optimal_action": { + "action_idx": 0, + "action_desc": "강한 수락", + "q_value": 0.0 + } + }, + { + "state_idx": 7, + "state_desc": "State(scenario=높은 구매 의지, price_zone=임계가격 초과, acceptance_rate=중간 (10-25%))", + "actions": [ + { + "action_idx": 0, + "action_desc": "강한 수락", + "q_value": 0.0 + }, + { + "action_idx": 1, + "action_desc": "중간 수락", + "q_value": 0.0 + }, + { + "action_idx": 2, + "action_desc": "약한 수락", + "q_value": 0.0 + }, + { + "action_idx": 3, + "action_desc": "강한 거절", + "q_value": 0.0 + }, + { + "action_idx": 4, + "action_desc": "중간 거절", + "q_value": 0.0 + }, + { + "action_idx": 5, + "action_desc": "약한 거절", + "q_value": 0.0 + }, + { + "action_idx": 6, + "action_desc": "강한 가격 제안", + "q_value": 0.0 + }, + { + "action_idx": 7, + "action_desc": "중간 가격 제안", + "q_value": 0.0 + }, + { + "action_idx": 8, + "action_desc": "약한 가격 제안", + "q_value": 0.0 + } + ], + "optimal_action": { + "action_idx": 0, + "action_desc": "강한 수락", + "q_value": 0.0 + } + }, + { + "state_idx": 8, + "state_desc": "State(scenario=높은 구매 의지, price_zone=임계가격 초과, acceptance_rate=높음 (>25%))", + "actions": [ + { + "action_idx": 0, + "action_desc": "강한 수락", + "q_value": 0.0 + }, + { + "action_idx": 1, + "action_desc": "중간 수락", + "q_value": 0.0 + }, + { + "action_idx": 2, + "action_desc": "약한 수락", + "q_value": 0.0 + }, + { + "action_idx": 3, + "action_desc": "강한 거절", + "q_value": 0.0 + }, + { + "action_idx": 4, + "action_desc": "중간 거절", + "q_value": 0.0 + }, + { + "action_idx": 5, + "action_desc": "약한 거절", + "q_value": 0.0 + }, + { + "action_idx": 6, + "action_desc": "강한 가격 제안", + "q_value": 0.0 + }, + { + "action_idx": 7, + "action_desc": "중간 가격 제안", + "q_value": 0.0 + }, + { + "action_idx": 8, + "action_desc": "약한 가격 제안", + "q_value": 0.0 + } + ], + "optimal_action": { + "action_idx": 0, + "action_desc": "강한 수락", + "q_value": 0.0 + } + }, + { + "state_idx": 9, + "state_desc": "State(scenario=중간 구매 의지, price_zone=목표가격 이하, acceptance_rate=낮음 (<10%))", + "actions": [ + { + "action_idx": 0, + "action_desc": "강한 수락", + "q_value": 0.0 + }, + { + "action_idx": 1, + "action_desc": "중간 수락", + "q_value": 0.0 + }, + { + "action_idx": 2, + "action_desc": "약한 수락", + "q_value": 0.0 + }, + { + "action_idx": 3, + "action_desc": "강한 거절", + "q_value": 0.0 + }, + { + "action_idx": 4, + "action_desc": "중간 거절", + "q_value": 0.0 + }, + { + "action_idx": 5, + "action_desc": "약한 거절", + "q_value": 0.0 + }, + { + "action_idx": 6, + "action_desc": "강한 가격 제안", + "q_value": 0.0 + }, + { + "action_idx": 7, + "action_desc": "중간 가격 제안", + "q_value": 0.0 + }, + { + "action_idx": 8, + "action_desc": "약한 가격 제안", + "q_value": 0.0 + } + ], + "optimal_action": { + "action_idx": 0, + "action_desc": "강한 수락", + "q_value": 0.0 + } + }, + { + "state_idx": 10, + "state_desc": "State(scenario=중간 구매 의지, price_zone=목표가격 이하, acceptance_rate=중간 (10-25%))", + "actions": [ + { + "action_idx": 0, + "action_desc": "강한 수락", + "q_value": 0.0 + }, + { + "action_idx": 1, + "action_desc": "중간 수락", + "q_value": 0.0 + }, + { + "action_idx": 2, + "action_desc": "약한 수락", + "q_value": 0.0 + }, + { + "action_idx": 3, + "action_desc": "강한 거절", + "q_value": 0.0 + }, + { + "action_idx": 4, + "action_desc": "중간 거절", + "q_value": 0.0 + }, + { + "action_idx": 5, + "action_desc": "약한 거절", + "q_value": 0.0 + }, + { + "action_idx": 6, + "action_desc": "강한 가격 제안", + "q_value": 0.0 + }, + { + "action_idx": 7, + "action_desc": "중간 가격 제안", + "q_value": 0.0 + }, + { + "action_idx": 8, + "action_desc": "약한 가격 제안", + "q_value": 0.0 + } + ], + "optimal_action": { + "action_idx": 0, + "action_desc": "강한 수락", + "q_value": 0.0 + } + }, + { + "state_idx": 11, + "state_desc": "State(scenario=중간 구매 의지, price_zone=목표가격 이하, acceptance_rate=높음 (>25%))", + "actions": [ + { + "action_idx": 0, + "action_desc": "강한 수락", + "q_value": 0.0 + }, + { + "action_idx": 1, + "action_desc": "중간 수락", + "q_value": 0.0 + }, + { + "action_idx": 2, + "action_desc": "약한 수락", + "q_value": 0.0 + }, + { + "action_idx": 3, + "action_desc": "강한 거절", + "q_value": 0.0 + }, + { + "action_idx": 4, + "action_desc": "중간 거절", + "q_value": 0.0 + }, + { + "action_idx": 5, + "action_desc": "약한 거절", + "q_value": 0.0 + }, + { + "action_idx": 6, + "action_desc": "강한 가격 제안", + "q_value": 0.0 + }, + { + "action_idx": 7, + "action_desc": "중간 가격 제안", + "q_value": 0.0 + }, + { + "action_idx": 8, + "action_desc": "약한 가격 제안", + "q_value": 0.0 + } + ], + "optimal_action": { + "action_idx": 0, + "action_desc": "강한 수락", + "q_value": 0.0 + } + }, + { + "state_idx": 12, + "state_desc": "State(scenario=중간 구매 의지, price_zone=목표가격~임계가격, acceptance_rate=낮음 (<10%))", + "actions": [ + { + "action_idx": 0, + "action_desc": "강한 수락", + "q_value": 0.0 + }, + { + "action_idx": 1, + "action_desc": "중간 수락", + "q_value": 0.0 + }, + { + "action_idx": 2, + "action_desc": "약한 수락", + "q_value": 0.0 + }, + { + "action_idx": 3, + "action_desc": "강한 거절", + "q_value": 0.0 + }, + { + "action_idx": 4, + "action_desc": "중간 거절", + "q_value": 0.0 + }, + { + "action_idx": 5, + "action_desc": "약한 거절", + "q_value": 0.0 + }, + { + "action_idx": 6, + "action_desc": "강한 가격 제안", + "q_value": 0.0 + }, + { + "action_idx": 7, + "action_desc": "중간 가격 제안", + "q_value": 0.0 + }, + { + "action_idx": 8, + "action_desc": "약한 가격 제안", + "q_value": 0.0 + } + ], + "optimal_action": { + "action_idx": 0, + "action_desc": "강한 수락", + "q_value": 0.0 + } + }, + { + "state_idx": 13, + "state_desc": "State(scenario=중간 구매 의지, price_zone=목표가격~임계가격, acceptance_rate=중간 (10-25%))", + "actions": [ + { + "action_idx": 0, + "action_desc": "강한 수락", + "q_value": 0.0 + }, + { + "action_idx": 1, + "action_desc": "중간 수락", + "q_value": 0.0 + }, + { + "action_idx": 2, + "action_desc": "약한 수락", + "q_value": 0.0 + }, + { + "action_idx": 3, + "action_desc": "강한 거절", + "q_value": 0.0 + }, + { + "action_idx": 4, + "action_desc": "중간 거절", + "q_value": 0.0 + }, + { + "action_idx": 5, + "action_desc": "약한 거절", + "q_value": 0.0 + }, + { + "action_idx": 6, + "action_desc": "강한 가격 제안", + "q_value": 0.0 + }, + { + "action_idx": 7, + "action_desc": "중간 가격 제안", + "q_value": 0.0 + }, + { + "action_idx": 8, + "action_desc": "약한 가격 제안", + "q_value": 0.0 + } + ], + "optimal_action": { + "action_idx": 0, + "action_desc": "강한 수락", + "q_value": 0.0 + } + }, + { + "state_idx": 14, + "state_desc": "State(scenario=중간 구매 의지, price_zone=목표가격~임계가격, acceptance_rate=높음 (>25%))", + "actions": [ + { + "action_idx": 0, + "action_desc": "강한 수락", + "q_value": 0.0 + }, + { + "action_idx": 1, + "action_desc": "중간 수락", + "q_value": 0.0 + }, + { + "action_idx": 2, + "action_desc": "약한 수락", + "q_value": 0.0 + }, + { + "action_idx": 3, + "action_desc": "강한 거절", + "q_value": 0.0 + }, + { + "action_idx": 4, + "action_desc": "중간 거절", + "q_value": 0.0 + }, + { + "action_idx": 5, + "action_desc": "약한 거절", + "q_value": 0.0 + }, + { + "action_idx": 6, + "action_desc": "강한 가격 제안", + "q_value": 0.0 + }, + { + "action_idx": 7, + "action_desc": "중간 가격 제안", + "q_value": 0.0 + }, + { + "action_idx": 8, + "action_desc": "약한 가격 제안", + "q_value": 0.0 + } + ], + "optimal_action": { + "action_idx": 0, + "action_desc": "강한 수락", + "q_value": 0.0 + } + }, + { + "state_idx": 15, + "state_desc": "State(scenario=중간 구매 의지, price_zone=임계가격 초과, acceptance_rate=낮음 (<10%))", + "actions": [ + { + "action_idx": 0, + "action_desc": "강한 수락", + "q_value": 0.0 + }, + { + "action_idx": 1, + "action_desc": "중간 수락", + "q_value": 0.0 + }, + { + "action_idx": 2, + "action_desc": "약한 수락", + "q_value": 0.0 + }, + { + "action_idx": 3, + "action_desc": "강한 거절", + "q_value": 0.0 + }, + { + "action_idx": 4, + "action_desc": "중간 거절", + "q_value": 0.0 + }, + { + "action_idx": 5, + "action_desc": "약한 거절", + "q_value": 0.0 + }, + { + "action_idx": 6, + "action_desc": "강한 가격 제안", + "q_value": 0.0 + }, + { + "action_idx": 7, + "action_desc": "중간 가격 제안", + "q_value": 0.0 + }, + { + "action_idx": 8, + "action_desc": "약한 가격 제안", + "q_value": 0.0 + } + ], + "optimal_action": { + "action_idx": 0, + "action_desc": "강한 수락", + "q_value": 0.0 + } + }, + { + "state_idx": 16, + "state_desc": "State(scenario=중간 구매 의지, price_zone=임계가격 초과, acceptance_rate=중간 (10-25%))", + "actions": [ + { + "action_idx": 0, + "action_desc": "강한 수락", + "q_value": 0.0 + }, + { + "action_idx": 1, + "action_desc": "중간 수락", + "q_value": 0.0 + }, + { + "action_idx": 2, + "action_desc": "약한 수락", + "q_value": 0.0 + }, + { + "action_idx": 3, + "action_desc": "강한 거절", + "q_value": 0.0 + }, + { + "action_idx": 4, + "action_desc": "중간 거절", + "q_value": 0.0 + }, + { + "action_idx": 5, + "action_desc": "약한 거절", + "q_value": 0.0 + }, + { + "action_idx": 6, + "action_desc": "강한 가격 제안", + "q_value": 0.0 + }, + { + "action_idx": 7, + "action_desc": "중간 가격 제안", + "q_value": 0.0 + }, + { + "action_idx": 8, + "action_desc": "약한 가격 제안", + "q_value": 0.0 + } + ], + "optimal_action": { + "action_idx": 0, + "action_desc": "강한 수락", + "q_value": 0.0 + } + }, + { + "state_idx": 17, + "state_desc": "State(scenario=중간 구매 의지, price_zone=임계가격 초과, acceptance_rate=높음 (>25%))", + "actions": [ + { + "action_idx": 0, + "action_desc": "강한 수락", + "q_value": 0.0 + }, + { + "action_idx": 1, + "action_desc": "중간 수락", + "q_value": 0.0 + }, + { + "action_idx": 2, + "action_desc": "약한 수락", + "q_value": 0.0 + }, + { + "action_idx": 3, + "action_desc": "강한 거절", + "q_value": 0.0 + }, + { + "action_idx": 4, + "action_desc": "중간 거절", + "q_value": 0.0 + }, + { + "action_idx": 5, + "action_desc": "약한 거절", + "q_value": 0.0 + }, + { + "action_idx": 6, + "action_desc": "강한 가격 제안", + "q_value": 0.0 + }, + { + "action_idx": 7, + "action_desc": "중간 가격 제안", + "q_value": 0.0 + }, + { + "action_idx": 8, + "action_desc": "약한 가격 제안", + "q_value": 0.0 + } + ], + "optimal_action": { + "action_idx": 0, + "action_desc": "강한 수락", + "q_value": 0.0 + } + }, + { + "state_idx": 18, + "state_desc": "State(scenario=낮은 구매 의지, price_zone=목표가격 이하, acceptance_rate=낮음 (<10%))", + "actions": [ + { + "action_idx": 0, + "action_desc": "강한 수락", + "q_value": 0.0 + }, + { + "action_idx": 1, + "action_desc": "중간 수락", + "q_value": 0.0 + }, + { + "action_idx": 2, + "action_desc": "약한 수락", + "q_value": 0.0 + }, + { + "action_idx": 3, + "action_desc": "강한 거절", + "q_value": 0.0 + }, + { + "action_idx": 4, + "action_desc": "중간 거절", + "q_value": 0.0 + }, + { + "action_idx": 5, + "action_desc": "약한 거절", + "q_value": 0.0 + }, + { + "action_idx": 6, + "action_desc": "강한 가격 제안", + "q_value": 0.0 + }, + { + "action_idx": 7, + "action_desc": "중간 가격 제안", + "q_value": 0.0 + }, + { + "action_idx": 8, + "action_desc": "약한 가격 제안", + "q_value": 0.0 + } + ], + "optimal_action": { + "action_idx": 0, + "action_desc": "강한 수락", + "q_value": 0.0 + } + }, + { + "state_idx": 19, + "state_desc": "State(scenario=낮은 구매 의지, price_zone=목표가격 이하, acceptance_rate=중간 (10-25%))", + "actions": [ + { + "action_idx": 0, + "action_desc": "강한 수락", + "q_value": 0.0 + }, + { + "action_idx": 1, + "action_desc": "중간 수락", + "q_value": 0.0 + }, + { + "action_idx": 2, + "action_desc": "약한 수락", + "q_value": 0.0 + }, + { + "action_idx": 3, + "action_desc": "강한 거절", + "q_value": 0.0 + }, + { + "action_idx": 4, + "action_desc": "중간 거절", + "q_value": 0.0 + }, + { + "action_idx": 5, + "action_desc": "약한 거절", + "q_value": 0.0 + }, + { + "action_idx": 6, + "action_desc": "강한 가격 제안", + "q_value": 0.0 + }, + { + "action_idx": 7, + "action_desc": "중간 가격 제안", + "q_value": 0.0 + }, + { + "action_idx": 8, + "action_desc": "약한 가격 제안", + "q_value": 0.0 + } + ], + "optimal_action": { + "action_idx": 0, + "action_desc": "강한 수락", + "q_value": 0.0 + } + }, + { + "state_idx": 20, + "state_desc": "State(scenario=낮은 구매 의지, price_zone=목표가격 이하, acceptance_rate=높음 (>25%))", + "actions": [ + { + "action_idx": 0, + "action_desc": "강한 수락", + "q_value": 0.0 + }, + { + "action_idx": 1, + "action_desc": "중간 수락", + "q_value": 0.0 + }, + { + "action_idx": 2, + "action_desc": "약한 수락", + "q_value": 0.0 + }, + { + "action_idx": 3, + "action_desc": "강한 거절", + "q_value": 0.0 + }, + { + "action_idx": 4, + "action_desc": "중간 거절", + "q_value": 0.0 + }, + { + "action_idx": 5, + "action_desc": "약한 거절", + "q_value": 0.0 + }, + { + "action_idx": 6, + "action_desc": "강한 가격 제안", + "q_value": 0.0 + }, + { + "action_idx": 7, + "action_desc": "중간 가격 제안", + "q_value": 0.0 + }, + { + "action_idx": 8, + "action_desc": "약한 가격 제안", + "q_value": 0.0 + } + ], + "optimal_action": { + "action_idx": 0, + "action_desc": "강한 수락", + "q_value": 0.0 + } + }, + { + "state_idx": 21, + "state_desc": "State(scenario=낮은 구매 의지, price_zone=목표가격~임계가격, acceptance_rate=낮음 (<10%))", + "actions": [ + { + "action_idx": 0, + "action_desc": "강한 수락", + "q_value": 0.0 + }, + { + "action_idx": 1, + "action_desc": "중간 수락", + "q_value": 0.0 + }, + { + "action_idx": 2, + "action_desc": "약한 수락", + "q_value": 0.0 + }, + { + "action_idx": 3, + "action_desc": "강한 거절", + "q_value": 0.0 + }, + { + "action_idx": 4, + "action_desc": "중간 거절", + "q_value": 0.0 + }, + { + "action_idx": 5, + "action_desc": "약한 거절", + "q_value": 0.0 + }, + { + "action_idx": 6, + "action_desc": "강한 가격 제안", + "q_value": 0.0 + }, + { + "action_idx": 7, + "action_desc": "중간 가격 제안", + "q_value": 0.0 + }, + { + "action_idx": 8, + "action_desc": "약한 가격 제안", + "q_value": 0.0 + } + ], + "optimal_action": { + "action_idx": 0, + "action_desc": "강한 수락", + "q_value": 0.0 + } + }, + { + "state_idx": 22, + "state_desc": "State(scenario=낮은 구매 의지, price_zone=목표가격~임계가격, acceptance_rate=중간 (10-25%))", + "actions": [ + { + "action_idx": 0, + "action_desc": "강한 수락", + "q_value": 0.0 + }, + { + "action_idx": 1, + "action_desc": "중간 수락", + "q_value": 0.0 + }, + { + "action_idx": 2, + "action_desc": "약한 수락", + "q_value": 0.0 + }, + { + "action_idx": 3, + "action_desc": "강한 거절", + "q_value": 0.0 + }, + { + "action_idx": 4, + "action_desc": "중간 거절", + "q_value": 0.0 + }, + { + "action_idx": 5, + "action_desc": "약한 거절", + "q_value": 0.0 + }, + { + "action_idx": 6, + "action_desc": "강한 가격 제안", + "q_value": 0.0 + }, + { + "action_idx": 7, + "action_desc": "중간 가격 제안", + "q_value": 0.0 + }, + { + "action_idx": 8, + "action_desc": "약한 가격 제안", + "q_value": 0.0 + } + ], + "optimal_action": { + "action_idx": 0, + "action_desc": "강한 수락", + "q_value": 0.0 + } + }, + { + "state_idx": 23, + "state_desc": "State(scenario=낮은 구매 의지, price_zone=목표가격~임계가격, acceptance_rate=높음 (>25%))", + "actions": [ + { + "action_idx": 0, + "action_desc": "강한 수락", + "q_value": 0.0 + }, + { + "action_idx": 1, + "action_desc": "중간 수락", + "q_value": 0.0 + }, + { + "action_idx": 2, + "action_desc": "약한 수락", + "q_value": 0.0 + }, + { + "action_idx": 3, + "action_desc": "강한 거절", + "q_value": 0.0 + }, + { + "action_idx": 4, + "action_desc": "중간 거절", + "q_value": 0.0 + }, + { + "action_idx": 5, + "action_desc": "약한 거절", + "q_value": 0.0 + }, + { + "action_idx": 6, + "action_desc": "강한 가격 제안", + "q_value": 0.0 + }, + { + "action_idx": 7, + "action_desc": "중간 가격 제안", + "q_value": 0.0 + }, + { + "action_idx": 8, + "action_desc": "약한 가격 제안", + "q_value": 0.0 + } + ], + "optimal_action": { + "action_idx": 0, + "action_desc": "강한 수락", + "q_value": 0.0 + } + }, + { + "state_idx": 24, + "state_desc": "State(scenario=낮은 구매 의지, price_zone=임계가격 초과, acceptance_rate=낮음 (<10%))", + "actions": [ + { + "action_idx": 0, + "action_desc": "강한 수락", + "q_value": 0.0 + }, + { + "action_idx": 1, + "action_desc": "중간 수락", + "q_value": 0.0 + }, + { + "action_idx": 2, + "action_desc": "약한 수락", + "q_value": 0.0 + }, + { + "action_idx": 3, + "action_desc": "강한 거절", + "q_value": 0.0 + }, + { + "action_idx": 4, + "action_desc": "중간 거절", + "q_value": 0.0 + }, + { + "action_idx": 5, + "action_desc": "약한 거절", + "q_value": 0.0 + }, + { + "action_idx": 6, + "action_desc": "강한 가격 제안", + "q_value": 0.0 + }, + { + "action_idx": 7, + "action_desc": "중간 가격 제안", + "q_value": 0.0 + }, + { + "action_idx": 8, + "action_desc": "약한 가격 제안", + "q_value": 0.0 + } + ], + "optimal_action": { + "action_idx": 0, + "action_desc": "강한 수락", + "q_value": 0.0 + } + }, + { + "state_idx": 25, + "state_desc": "State(scenario=낮은 구매 의지, price_zone=임계가격 초과, acceptance_rate=중간 (10-25%))", + "actions": [ + { + "action_idx": 0, + "action_desc": "강한 수락", + "q_value": 0.0 + }, + { + "action_idx": 1, + "action_desc": "중간 수락", + "q_value": 0.0 + }, + { + "action_idx": 2, + "action_desc": "약한 수락", + "q_value": 0.0 + }, + { + "action_idx": 3, + "action_desc": "강한 거절", + "q_value": 0.0 + }, + { + "action_idx": 4, + "action_desc": "중간 거절", + "q_value": 0.0 + }, + { + "action_idx": 5, + "action_desc": "약한 거절", + "q_value": 0.0 + }, + { + "action_idx": 6, + "action_desc": "강한 가격 제안", + "q_value": 0.0 + }, + { + "action_idx": 7, + "action_desc": "중간 가격 제안", + "q_value": 0.0 + }, + { + "action_idx": 8, + "action_desc": "약한 가격 제안", + "q_value": 0.0 + } + ], + "optimal_action": { + "action_idx": 0, + "action_desc": "강한 수락", + "q_value": 0.0 + } + }, + { + "state_idx": 26, + "state_desc": "State(scenario=낮은 구매 의지, price_zone=임계가격 초과, acceptance_rate=높음 (>25%))", + "actions": [ + { + "action_idx": 0, + "action_desc": "강한 수락", + "q_value": 0.0 + }, + { + "action_idx": 1, + "action_desc": "중간 수락", + "q_value": 0.0 + }, + { + "action_idx": 2, + "action_desc": "약한 수락", + "q_value": 0.0 + }, + { + "action_idx": 3, + "action_desc": "강한 거절", + "q_value": 0.0 + }, + { + "action_idx": 4, + "action_desc": "중간 거절", + "q_value": 0.0 + }, + { + "action_idx": 5, + "action_desc": "약한 거절", + "q_value": 0.0 + }, + { + "action_idx": 6, + "action_desc": "강한 가격 제안", + "q_value": 0.0 + }, + { + "action_idx": 7, + "action_desc": "중간 가격 제안", + "q_value": 0.0 + }, + { + "action_idx": 8, + "action_desc": "약한 가격 제안", + "q_value": 0.0 + } + ], + "optimal_action": { + "action_idx": 0, + "action_desc": "강한 수락", + "q_value": 0.0 + } + }, + { + "state_idx": 27, + "state_desc": "State(scenario=매우 낮은 구매 의지, price_zone=목표가격 이하, acceptance_rate=낮음 (<10%))", + "actions": [ + { + "action_idx": 0, + "action_desc": "강한 수락", + "q_value": 0.0 + }, + { + "action_idx": 1, + "action_desc": "중간 수락", + "q_value": 0.0 + }, + { + "action_idx": 2, + "action_desc": "약한 수락", + "q_value": 0.0 + }, + { + "action_idx": 3, + "action_desc": "강한 거절", + "q_value": 0.0 + }, + { + "action_idx": 4, + "action_desc": "중간 거절", + "q_value": 0.0 + }, + { + "action_idx": 5, + "action_desc": "약한 거절", + "q_value": 0.0 + }, + { + "action_idx": 6, + "action_desc": "강한 가격 제안", + "q_value": 0.0 + }, + { + "action_idx": 7, + "action_desc": "중간 가격 제안", + "q_value": 0.0 + }, + { + "action_idx": 8, + "action_desc": "약한 가격 제안", + "q_value": 0.0 + } + ], + "optimal_action": { + "action_idx": 0, + "action_desc": "강한 수락", + "q_value": 0.0 + } + }, + { + "state_idx": 28, + "state_desc": "State(scenario=매우 낮은 구매 의지, price_zone=목표가격 이하, acceptance_rate=중간 (10-25%))", + "actions": [ + { + "action_idx": 0, + "action_desc": "강한 수락", + "q_value": 0.0 + }, + { + "action_idx": 1, + "action_desc": "중간 수락", + "q_value": 0.0 + }, + { + "action_idx": 2, + "action_desc": "약한 수락", + "q_value": 0.0 + }, + { + "action_idx": 3, + "action_desc": "강한 거절", + "q_value": 0.0 + }, + { + "action_idx": 4, + "action_desc": "중간 거절", + "q_value": 0.0 + }, + { + "action_idx": 5, + "action_desc": "약한 거절", + "q_value": 0.0 + }, + { + "action_idx": 6, + "action_desc": "강한 가격 제안", + "q_value": 0.0 + }, + { + "action_idx": 7, + "action_desc": "중간 가격 제안", + "q_value": 0.0 + }, + { + "action_idx": 8, + "action_desc": "약한 가격 제안", + "q_value": 0.0 + } + ], + "optimal_action": { + "action_idx": 0, + "action_desc": "강한 수락", + "q_value": 0.0 + } + }, + { + "state_idx": 29, + "state_desc": "State(scenario=매우 낮은 구매 의지, price_zone=목표가격 이하, acceptance_rate=높음 (>25%))", + "actions": [ + { + "action_idx": 0, + "action_desc": "강한 수락", + "q_value": 0.0 + }, + { + "action_idx": 1, + "action_desc": "중간 수락", + "q_value": 0.0 + }, + { + "action_idx": 2, + "action_desc": "약한 수락", + "q_value": 0.0 + }, + { + "action_idx": 3, + "action_desc": "강한 거절", + "q_value": 0.0 + }, + { + "action_idx": 4, + "action_desc": "중간 거절", + "q_value": 0.0 + }, + { + "action_idx": 5, + "action_desc": "약한 거절", + "q_value": 0.0 + }, + { + "action_idx": 6, + "action_desc": "강한 가격 제안", + "q_value": 0.0 + }, + { + "action_idx": 7, + "action_desc": "중간 가격 제안", + "q_value": 0.0 + }, + { + "action_idx": 8, + "action_desc": "약한 가격 제안", + "q_value": 0.0 + } + ], + "optimal_action": { + "action_idx": 0, + "action_desc": "강한 수락", + "q_value": 0.0 + } + }, + { + "state_idx": 30, + "state_desc": "State(scenario=매우 낮은 구매 의지, price_zone=목표가격~임계가격, acceptance_rate=낮음 (<10%))", + "actions": [ + { + "action_idx": 0, + "action_desc": "강한 수락", + "q_value": 0.0 + }, + { + "action_idx": 1, + "action_desc": "중간 수락", + "q_value": 0.0 + }, + { + "action_idx": 2, + "action_desc": "약한 수락", + "q_value": 0.0 + }, + { + "action_idx": 3, + "action_desc": "강한 거절", + "q_value": 0.0 + }, + { + "action_idx": 4, + "action_desc": "중간 거절", + "q_value": 0.0 + }, + { + "action_idx": 5, + "action_desc": "약한 거절", + "q_value": 0.0 + }, + { + "action_idx": 6, + "action_desc": "강한 가격 제안", + "q_value": 0.0 + }, + { + "action_idx": 7, + "action_desc": "중간 가격 제안", + "q_value": 0.0 + }, + { + "action_idx": 8, + "action_desc": "약한 가격 제안", + "q_value": 0.0 + } + ], + "optimal_action": { + "action_idx": 0, + "action_desc": "강한 수락", + "q_value": 0.0 + } + }, + { + "state_idx": 31, + "state_desc": "State(scenario=매우 낮은 구매 의지, price_zone=목표가격~임계가격, acceptance_rate=중간 (10-25%))", + "actions": [ + { + "action_idx": 0, + "action_desc": "강한 수락", + "q_value": 0.0 + }, + { + "action_idx": 1, + "action_desc": "중간 수락", + "q_value": 0.0 + }, + { + "action_idx": 2, + "action_desc": "약한 수락", + "q_value": 0.0 + }, + { + "action_idx": 3, + "action_desc": "강한 거절", + "q_value": 0.0 + }, + { + "action_idx": 4, + "action_desc": "중간 거절", + "q_value": 0.0 + }, + { + "action_idx": 5, + "action_desc": "약한 거절", + "q_value": 0.0 + }, + { + "action_idx": 6, + "action_desc": "강한 가격 제안", + "q_value": 0.0 + }, + { + "action_idx": 7, + "action_desc": "중간 가격 제안", + "q_value": 0.0 + }, + { + "action_idx": 8, + "action_desc": "약한 가격 제안", + "q_value": 0.0 + } + ], + "optimal_action": { + "action_idx": 0, + "action_desc": "강한 수락", + "q_value": 0.0 + } + }, + { + "state_idx": 32, + "state_desc": "State(scenario=매우 낮은 구매 의지, price_zone=목표가격~임계가격, acceptance_rate=높음 (>25%))", + "actions": [ + { + "action_idx": 0, + "action_desc": "강한 수락", + "q_value": 0.0 + }, + { + "action_idx": 1, + "action_desc": "중간 수락", + "q_value": 0.0 + }, + { + "action_idx": 2, + "action_desc": "약한 수락", + "q_value": 0.0 + }, + { + "action_idx": 3, + "action_desc": "강한 거절", + "q_value": 0.0 + }, + { + "action_idx": 4, + "action_desc": "중간 거절", + "q_value": 0.0 + }, + { + "action_idx": 5, + "action_desc": "약한 거절", + "q_value": 0.0 + }, + { + "action_idx": 6, + "action_desc": "강한 가격 제안", + "q_value": 0.0 + }, + { + "action_idx": 7, + "action_desc": "중간 가격 제안", + "q_value": 0.0 + }, + { + "action_idx": 8, + "action_desc": "약한 가격 제안", + "q_value": 0.0 + } + ], + "optimal_action": { + "action_idx": 0, + "action_desc": "강한 수락", + "q_value": 0.0 + } + }, + { + "state_idx": 33, + "state_desc": "State(scenario=매우 낮은 구매 의지, price_zone=임계가격 초과, acceptance_rate=낮음 (<10%))", + "actions": [ + { + "action_idx": 0, + "action_desc": "강한 수락", + "q_value": 0.0 + }, + { + "action_idx": 1, + "action_desc": "중간 수락", + "q_value": 0.0 + }, + { + "action_idx": 2, + "action_desc": "약한 수락", + "q_value": 0.0 + }, + { + "action_idx": 3, + "action_desc": "강한 거절", + "q_value": 0.0 + }, + { + "action_idx": 4, + "action_desc": "중간 거절", + "q_value": 0.0 + }, + { + "action_idx": 5, + "action_desc": "약한 거절", + "q_value": 0.0 + }, + { + "action_idx": 6, + "action_desc": "강한 가격 제안", + "q_value": 0.0 + }, + { + "action_idx": 7, + "action_desc": "중간 가격 제안", + "q_value": 0.0 + }, + { + "action_idx": 8, + "action_desc": "약한 가격 제안", + "q_value": 0.0 + } + ], + "optimal_action": { + "action_idx": 0, + "action_desc": "강한 수락", + "q_value": 0.0 + } + }, + { + "state_idx": 34, + "state_desc": "State(scenario=매우 낮은 구매 의지, price_zone=임계가격 초과, acceptance_rate=중간 (10-25%))", + "actions": [ + { + "action_idx": 0, + "action_desc": "강한 수락", + "q_value": 0.0 + }, + { + "action_idx": 1, + "action_desc": "중간 수락", + "q_value": 0.0 + }, + { + "action_idx": 2, + "action_desc": "약한 수락", + "q_value": 0.0 + }, + { + "action_idx": 3, + "action_desc": "강한 거절", + "q_value": 0.0 + }, + { + "action_idx": 4, + "action_desc": "중간 거절", + "q_value": 0.0 + }, + { + "action_idx": 5, + "action_desc": "약한 거절", + "q_value": 0.0 + }, + { + "action_idx": 6, + "action_desc": "강한 가격 제안", + "q_value": 0.0 + }, + { + "action_idx": 7, + "action_desc": "중간 가격 제안", + "q_value": 0.0 + }, + { + "action_idx": 8, + "action_desc": "약한 가격 제안", + "q_value": 0.0 + } + ], + "optimal_action": { + "action_idx": 0, + "action_desc": "강한 수락", + "q_value": 0.0 + } + }, + { + "state_idx": 35, + "state_desc": "State(scenario=매우 낮은 구매 의지, price_zone=임계가격 초과, acceptance_rate=높음 (>25%))", + "actions": [ + { + "action_idx": 0, + "action_desc": "강한 수락", + "q_value": 0.0 + }, + { + "action_idx": 1, + "action_desc": "중간 수락", + "q_value": 0.0 + }, + { + "action_idx": 2, + "action_desc": "약한 수락", + "q_value": 0.0 + }, + { + "action_idx": 3, + "action_desc": "강한 거절", + "q_value": 0.0 + }, + { + "action_idx": 4, + "action_desc": "중간 거절", + "q_value": 0.0 + }, + { + "action_idx": 5, + "action_desc": "약한 거절", + "q_value": 0.0 + }, + { + "action_idx": 6, + "action_desc": "강한 가격 제안", + "q_value": 0.0 + }, + { + "action_idx": 7, + "action_desc": "중간 가격 제안", + "q_value": 0.0 + }, + { + "action_idx": 8, + "action_desc": "약한 가격 제안", + "q_value": 0.0 + } + ], + "optimal_action": { + "action_idx": 0, + "action_desc": "강한 수락", + "q_value": 0.0 + } + } + ] +} \ No newline at end of file diff --git a/saved_models/q_table.npy b/saved_models/q_table.npy index d759f02..e13b6c1 100644 Binary files a/saved_models/q_table.npy and b/saved_models/q_table.npy differ