Содержание не допускается в прологе в MalmoEnv - PullRequest
0 голосов
/ 03 ноября 2019

Новый для Мальмё и Мальмёнв. У меня проблемы с чтением файла XML. Я получаю ошибку Content is not allowed in prolog на терминале, где запущен Minecraft. Я пробовал несколько разных XML-файлов, но безрезультатно. Мой код Python, сообщение об ошибке и XML-файл перечислены ниже:

Файл XML:

<?xml version="1.0"?>
    <Mission xmlns="http://ProjectMalmo.microsoft.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
        <About>
            <Summary>Everyday Minecraft life: survival</Summary>
        </About>

        <ModSettings>
            <MsPerTick>50</MsPerTick>
        </ModSettings>

        <ServerSection>
            <ServerHandlers>
                <DefaultWorldGenerator />
                <ServerQuitFromTimeUp timeLimitMs="3000000" description="out_of_time"/>
                <ServerQuitWhenAnyAgentFinishes />
            </ServerHandlers>
        </ServerSection>

        <AgentSection mode="Survival">
            <Name>Agent0</Name>
            <AgentStart>
                  <Placement x="-203.5" y="81.0" z="217.5"/>
            </AgentStart>
            <AgentHandlers>
                <ContinuousMovementCommands/>
                <MissionQuitCommands/>
                <ObservationFromFullStats/>
                <VideoProducer want_depth="true">
                   <Width>300</Width>
                   <Height>200</Height>
                </VideoProducer>
                <RewardForMissionEnd rewardForDeath="-10000">
                    <Reward description="found_goal" reward="1000" />
                    <Reward description="out_of_time" reward="-1000" />
                </RewardForMissionEnd>
                <AgentQuitFromTouchingBlockType>
                    <Block type="gold_block diamond_block redstone_block" description="found_goal" />
                </AgentQuitFromTouchingBlockType>
            </AgentHandlers>
        </AgentSection>
</Mission>

Код в основном:

if __name__ == '__main__':


    env = malmoenv.make()

    env.init(Path('mission.xml').read_text(), 9001,
             server='127.0.0.1',
             server2='127.0.0.1', port2=9001,
             role=0,
             exp_uid='exp1',
             episode=1, resync=0)

    done = False

    h, w, d = env.observation_space.shape
    action_size = env.action_space.n
    agent = NotBasicDQN((h, w, d), action_size)
    agent.compile_models()


    for eps in range(100):
        state = env.reset()
        state = state.reshape(1, h, w, d)
        state = np.float32(state)
        state /= 255
        state += .0001
        prev_state = state
        curiosity = 0.0001
        iter = 0
        while not done:
            action = agent.act(state)
            next_state, reward, done, _ = env.step(action)

            if done:
                break
            reward += curiosity
            next_state = np.float32(next_state)
            next_state /= 255
            next_state += 0.0001
            next_state = next_state.reshape(1, h, w, d)

            agent.remember(prev_state, state, action, reward, next_state, done)
            curiosity = agent.replay(1)

            prev_state = state

            state = next_state

            print("REWARDS:", reward)
            iter += 1
            #if iter % 1000 == 0:
            #    print("Saving agent...")
            #    agent.save("./save/mc-dqn.h5")
            time.sleep(.5)

    env.close()

Ошибка:

[16:29:35] [Thread-23/INFO]: [STDOUT]: Received from localhost:<MalmoEnv0.37.0/>
[Fatal Error] :1:1: Content is not allowed in prolog.
[16:29:35] [Thread-23/INFO]: [STDOUT]: SAX exception: org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; Content is not allowed in prolog.
> BuildingCould not read error output of: command '/usr/lib/jvm/java-8-openjdk-amd64/bin/java'.
java.io.IOException: Stream closed
        at java.io.BufferedInputStream.getBufIfOpen(BufferedInputStream.java:170)
        at java.io.BufferedInputStream.read1(BufferedInputStream.java:291)
        at java.io.BufferedInputStream.read(BufferedInputStream.java:345)
        at java.io.FilterInputStream.read(FilterInputStream.java:107)
        at org.gradle.process.internal.streams.ExecOutputHandleRunner.run(ExecOutputHandleRunner.java:51)
        at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:54)
        at org.gradle.internal.concurrent.StoppableExecutorImpl$1.run(StoppableExecutorImpl.java:40)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...