New: 增加枚举所有目标状态的实现
This commit is contained in:
parent
355f1fac7b
commit
f30745058c
|
@ -29,6 +29,34 @@ def single_predict_generation(oplist_1, oplist_2, predict_pattern) -> str:
|
||||||
raise RuntimeError('Incorrect predict pattern!')
|
raise RuntimeError('Incorrect predict pattern!')
|
||||||
|
|
||||||
|
|
||||||
|
def enumerate_predict(oplist_1, oplist_2, predict_pattern) -> [int, list]:
|
||||||
|
count = 0
|
||||||
|
res = []
|
||||||
|
|
||||||
|
match predict_pattern:
|
||||||
|
case 'at':
|
||||||
|
pattern = f'At(%s, %s)'
|
||||||
|
case 'is':
|
||||||
|
pattern = f'Is(%s, %s)'
|
||||||
|
case 'hold':
|
||||||
|
pattern = f'Holding(%s)'
|
||||||
|
case 'on':
|
||||||
|
pattern = f'On(%s, %s)'
|
||||||
|
case _:
|
||||||
|
raise RuntimeError('Incorrect predict pattern!')
|
||||||
|
|
||||||
|
for str_1 in oplist_1:
|
||||||
|
if oplist_2:
|
||||||
|
for str_2 in oplist_2:
|
||||||
|
count += 1
|
||||||
|
res.append({pattern % (str_1, str_2)})
|
||||||
|
else:
|
||||||
|
count += 1
|
||||||
|
res.append({pattern % str_1})
|
||||||
|
|
||||||
|
return count, res
|
||||||
|
|
||||||
|
|
||||||
def generate_goal_states(vln_num: int, vlm_num: int, opentask_num: int):
|
def generate_goal_states(vln_num: int, vlm_num: int, opentask_num: int):
|
||||||
# res stores lists of sets, while each state represent in set.
|
# res stores lists of sets, while each state represent in set.
|
||||||
res = []
|
res = []
|
||||||
|
@ -63,4 +91,21 @@ def generate_goal_states(vln_num: int, vlm_num: int, opentask_num: int):
|
||||||
return res
|
return res
|
||||||
|
|
||||||
|
|
||||||
generate_goal_states(30, 6, 6)
|
def enumerate_goal_states():
|
||||||
|
# goal states for VLN
|
||||||
|
count_vln, list_vln = enumerate_predict(['Robot'], Place, 'at')
|
||||||
|
print(f'VLN 任务的目标状态数:{count_vln}')
|
||||||
|
|
||||||
|
# goal states for VLM
|
||||||
|
count_vlm_1, list_vlm_1 = enumerate_predict(['Robot'], Place, 'at')
|
||||||
|
count_vlm_2, list_vlm_2 = enumerate_predict(Operable, ['0', '1'], 'is')
|
||||||
|
print(f'VLM 任务的目标状态数:{count_vlm_1 * count_vlm_2}')
|
||||||
|
|
||||||
|
# goal states for open-task
|
||||||
|
count_opentask_1, list_opentask_1 = enumerate_predict(['Robot'], Place, 'at')
|
||||||
|
count_opentask_2, list_opentask_2 = enumerate_predict(Object, Place, 'on')
|
||||||
|
print(f'Open-task-1 任务的目标状态数:{count_opentask_1 * count_opentask_2}')
|
||||||
|
|
||||||
|
|
||||||
|
# generate_goal_states(30, 6, 6)
|
||||||
|
enumerate_goal_states()
|
||||||
|
|
Loading…
Reference in New Issue