2012-10-19 4 views
0

임이 코드를 실행하려고 : 경우형식 오류 : grsim하는 잘못된 인수 - 파이썬

Traceback (most recent call last): 
    File "/Applications/Python 2.7/tulip-0.3c/examples/robot_discrete_simple.py", line 151, in <module> 
    vis_depth=vis_depth) 
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/tulip/grsim.py", line 109, in grsim 
    raise TypeError("Invalid arguments to grsim") 
TypeError: Invalid arguments to grsim 

되지 않음이 확인 : 그러나

#!/usr/bin/env python 
""" 
The example presented at the MURI review, illustrating the use of 
jtlvint and automaton modules 

Nok Wongpiromsarn ([email protected]) 
August 3, 2010 

minor refactoring by SCL <[email protected]> 
1 May 2011. 

Small modifications by Yuchen Lin. 
12 Aug 2011 
""" 

#@[email protected] 
import sys, os 
from subprocess import call 

from tulip import * 
import tulip.polytope as pc 
#@[email protected] 


# Specify where the smv file, spc file and aut file will go 
#@[email protected] 
testfile = 'robot_discrete_simple' 
path = os.path.abspath(os.path.dirname(sys.argv[0])) 
smvfile = os.path.join(path, 'specs', testfile+'.smv') 
spcfile = os.path.join(path, 'specs', testfile+'.spc') 
autfile = os.path.join(path, 'specs', testfile+'.aut') 
#@[email protected] 

# Specify the environment variables 
#@[email protected] 
env_vars = {'park' : 'boolean'} 
#@[email protected] 

# Specify the discrete system variable 
# Introduce a boolean variable X0reach to handle the spec [](park -> <>X0) 
# X0reach starts with TRUE. 
# [](next(X0reach) = X0 | (X0reach & !park)) 
#@[email protected] 
sys_disc_vars = {'X0reach' : 'boolean'} 
#@[email protected] 

# Specify the transition system representing the continuous dynamics 
#@[email protected] 
disc_dynamics = prop2part.PropPreservingPartition(list_region=[], list_prop_symbol=[]) 

# These following propositions specify in which cell the robot is, 
# i.e., Xi means that the robot is in cell Ci 
disc_dynamics.list_prop_symbol = ['X0', 'X1', 'X2', 'X3', 'X4', 'X5'] 
disc_dynamics.num_prop = len(disc_dynamics.list_prop_symbol) 

# Regions. Note that the first argument of Region(poly, prop) should 
# be a list of polytopes. But since we are not dealing with the actual 
# controller, we will just fill it with a string (think of it as a 
# name of the region). The second argument of Region(poly, prop) is a 
# list that specifies which propositions in cont_props above is 
# satisfied. As specified below, regioni satisfies proposition Xi. 
region0 = pc.Region('C0', [1, 0, 0, 0, 0, 0]) 
region1 = pc.Region('C1', [0, 1, 0, 0, 0, 0]) 
region2 = pc.Region('C2', [0, 0, 1, 0, 0, 0]) 
region3 = pc.Region('C3', [0, 0, 0, 1, 0, 0]) 
region4 = pc.Region('C4', [0, 0, 0, 0, 1, 0]) 
region5 = pc.Region('C5', [0, 0, 0, 0, 0, 1]) 
disc_dynamics.list_region = [region0, region1, region2, region3, region4, region5] 
disc_dynamics.num_regions = len(disc_dynamics.list_region) 

# The transition relation between regions. disc_dynamics.trans[i][j] = 
# 1 if starting from region j, the robot can move to region i while 
# only staying in the union of region i and region j. 
disc_dynamics.trans = [[1, 1, 0, 1, 0, 0], \ 
         [1, 1, 1, 0, 1, 0], \ 
         [0, 1, 1, 0, 0, 1], \ 
         [1, 0, 0, 1, 1, 0], \ 
         [0, 1, 0, 1, 1, 1], \ 
         [0, 0, 1, 0, 1, 1]] 
#@[email protected] 

#@[email protected] 
assumption = 'X0reach & []<>(!park)' 
guarantee = '[]<>X5 & []<>(X0reach)' 
guarantee += ' & [](next(X0reach) = (X0 | (X0reach & !park)))' 
#@[email protected] 

# Generate input to JTLV 
#@[email protected] 
prob = jtlvint.generateJTLVInput(env_vars, sys_disc_vars, [assumption, guarantee], 
           {}, disc_dynamics, smvfile, spcfile, verbose=2) 
#@[email protected] 

# Check realizability 
#@[email protected] 
realizability = jtlvint.checkRealizability(smv_file=smvfile, spc_file=spcfile, 
              aut_file=autfile, verbose=3) 
#@[email protected] 

# Compute an automaton 
#@[email protected] 
jtlvint.computeStrategy(smv_file=smvfile, spc_file=spcfile, aut_file=autfile, 
         priority_kind=3, verbose=3) 
aut = automaton.Automaton(autfile, [], 3) 

# Remove dead-end states from automaton. 
aut.trimDeadStates() 
#@[email protected] 


# Visualize automaton with DOT file 

# This example uses environment vs. system turn distinction. To 
# disable it, just use (the default), 
if not aut.writeDotFile(fname="rdsimple_example.dot", hideZeros=True): 
# if not aut.writeDotFile("rdsimple_example.dot", 
#       distinguishTurns={"env": prob.getEnvVars().keys(), 
#           "sys": prob.getSysVars().keys()}, 
#       turnOrder=("env", "sys")): 
# if not aut.writeDotFileEdged(fname="rdsimple_example.dot", 
#        env_vars = prob.getEnvVars().keys(), 
#        sys_vars = prob.getSysVars().keys(), 
#        hideZeros=True): 
    print "Error occurred while generating DOT file." 
else: 
    try: 
     call("dot rdsimple_example.dot -Tpng -o rdsimple_example.png".split()) 
    except: 
     print "Failed to create image from DOT file. To do so, try\n\ndot rdsimple_example.dot -Tpng -o rdsimple_example.png\n" 


# Simulate. 
#@[email protected] 
num_it = 30 
env_states = [{'X0reach': True}] 
for i in range(1, num_it): 
    if (i%3 == 0): 
     env_states.append({'park':True}) 
    else: 
     env_states.append({'park':False}) 

graph_vis = raw_input 
destfile = 'rdsimple_example.gexf' 
label_vars = ['park', 'cellID', 'X0reach'] 
delay = 2 
vis_depth = 3 
aut_states = grsim.grsim([aut], aut_trans_dict={}, env_states=env_states, 
         num_it=num_it, deterministic_env=False, 
         graph_vis=graph_vis, destfile=destfile, 
         label_vars=label_vars, delay=delay, 
         vis_depth=vis_depth) 
#@[email protected] 

그것을 종료 직전, 그것은 말한다 #simulate에 실패 이 정보는 도움이되지만 DOT 파일도 만들지 못했습니다.

Failed to create image from DOT file. To do so, try 

dot rdsimple_example.dot -Tpng -o rdsimple_example.png 

왜 내가 TypeError 문제가됩니까? 이 문제를 어떻게 해결할 수 있습니까?

if not (isinstance(aut_list, list) and len(aut_list) > 0 and 
     isinstance(aut_trans_dict, dict) and 
     isinstance(env_states, list) and len(env_states) > 0 and 
     isinstance(num_it, int) and isinstance(deterministic_env, bool) and 
     isinstance(graph_vis, bool) and isinstance(destfile, str) and 
     (label_vars == None or isinstance(label_vars, list)) and 
     isinstance(delay, int) and isinstance(vis_depth, int)): 
    raise TypeError("Invalid arguments to grsim") 

귀하의 graph_vis 변수가 부울이 아니라, raw_input function : grsim에서

답변

1

다음 코드는 예외를 throw

graph_vis = raw_input 

당신도 호출하지 않는.

documentation

뿐만 아니라 부울 요청 :

grsim.grsim(aut_list, aut_trans_dict={}, env_states=[{}], num_it=20, deterministic_env=True, graph_vis=False, destfile='sim_graph.gexf', label_vars=None, delay=2, vis_depth=3)

[...]

  • graph_vis – specify whether to visualize the simulation in Gephi.
+0

덕분에 내가 그것을 가지고 :) – NLed