Comment author: JenniferRM 10 September 2011 07:32:31AM 3 points [-]

Awesome! The only suggestion I have is to pass in a putative history and/or tournament parameters to an agent in the evaluation function so the agent can do simple things like implement tit-for-tat on the history, or do complicated things like probing the late-game behavior of other agents early in the game. (E.G. "If you think this is the last round, what do you do?")

Comment author: darius 11 September 2011 03:30:59AM 3 points [-]

Thanks! Yes, I figure one-shot and iterated PDs might both hold interest, and the one-shot came first since it's simpler. That's a neat idea about probing ahead.

I'll return to the code in a few days.

Comment author: DavidLS 07 September 2011 12:37:43AM *  2 points [-]

I'm not a native schemer, but it looks like you can check fuel by calling run with a large number and seeing it if fails to return... eg (eq (run 9999 (return C) (return C)) 'exhausted) [note that this can cost fuel, and so should be done at the end of an agent to decide if returning the "real" value is a good idea]

giving us the naieve DefectorBot of (if (eq (run 9999 (return C) (return C)) 'exhausted) C D)

[Edit: and for detecting run-function-swap-out:

(if (neq (run 10000000 (return C) (return C) 'exhausted) C ;; someone is simulating us

 (if (eq (run 9999 (return C) (return C)) 'exhausted) C ;; someone is simulating us more cleverly
D)) ]

[Edit 2: Is there a better way to paste code on LW?]

Re: not showing source: Okay, but I do think it would be awesome if we get bots that only cooperate with bots who would cooperate with (return C)

Re: message passing: Check out http://en.wikipedia.org/wiki/Message_passing for what I meant?

Comment author: darius 07 September 2011 06:51:16AM 2 points [-]

On message passing as described, that'd be a bug if you could do it here. The agents are confined. (There is a side channel from resource consumption, but other agents within the system can't see it, since they run deterministically.)

Comment author: DavidLS 07 September 2011 01:37:46AM 2 points [-]

Oh, okay, I was missing that you never run the agents as scheme, only interpret them via ev.

Are you planning on supporting a default action in case time runs out? (and if so, how will that handle the equivalent problem?)

Comment author: darius 07 September 2011 06:42:56AM 1 point [-]

I hadn't considered doing that -- really I just threw this together because Eliezer's idea sounded interesting and not too hard.

I'll at least refine the code and docs and write a few more agents, and if you have ideas I'd be happy to offer advice on implementing your variant.

Comment author: lessdazed 07 September 2011 01:18:12AM *  0 points [-]

If you can't act, what happens score-wise?

Comment author: darius 07 September 2011 01:36:37AM 2 points [-]

I followed Eliezer's proposal above (both players score 0) -- that's if you die at "top level". If a player is simulating you and still has fuel after, then it's told of your sub-death.

You could change this in play.scm.

Comment author: DavidLS 07 September 2011 12:37:43AM *  2 points [-]

I'm not a native schemer, but it looks like you can check fuel by calling run with a large number and seeing it if fails to return... eg (eq (run 9999 (return C) (return C)) 'exhausted) [note that this can cost fuel, and so should be done at the end of an agent to decide if returning the "real" value is a good idea]

giving us the naieve DefectorBot of (if (eq (run 9999 (return C) (return C)) 'exhausted) C D)

[Edit: and for detecting run-function-swap-out:

(if (neq (run 10000000 (return C) (return C) 'exhausted) C ;; someone is simulating us

 (if (eq (run 9999 (return C) (return C)) 'exhausted) C ;; someone is simulating us more cleverly
D)) ]

[Edit 2: Is there a better way to paste code on LW?]

Re: not showing source: Okay, but I do think it would be awesome if we get bots that only cooperate with bots who would cooperate with (return C)

Re: message passing: Check out http://en.wikipedia.org/wiki/Message_passing for what I meant?

Comment author: darius 07 September 2011 01:13:38AM *  2 points [-]

When you call RUN, one of two things happens: it produces a result or you die from exhaustion. If you die, you can't act. If you get a result, you now know something about how much fuel there was before, at the cost of having used it up. The remaning fuel might be any amount in your prior, minus the amount used.

At the Scheme prompt:

(run 10000 '(equal? 'exhausted (cadr (run 1000 '((lambda (f) (f f)) (lambda (f) (f f))) (global-environment)))) global-environment)
; result: (8985 #t) ; The subrun completed and we find #t for yes, it ran to exhaustion.
(run 100 '(equal? 'exhausted (cadr (run 1000 '((lambda (f) (f f)) (lambda (f) (f f))) (global-environment)))) global-environment)
; result: (0 exhausted) ; Oops, we never got back to our EQUAL? test.
Comment author: DavidLS 06 September 2011 10:18:58PM *  5 points [-]

Oh cool! You allow an agent to see how their opponent would respond when playing a 3rd agent (just call run with different source code).

[Edit: which allows for arbitrary message passing -- the coop bots might all agree to coop with anyone who coops with (return C)]

However you also allow for trivially determining if an agent is being simulated: simply check how much fuel there is, which is probably not what we want.

Comment author: darius 07 September 2011 12:03:19AM 2 points [-]

The only way to check your fuel is to run out -- unless I goofed.

You could call that message passing, though conventionally that names a kind of overt influence of one running agent on another, all kinds of which are supposed to excluded.

It shouldn't be hard to do variations where you can only run the other player and not look at their source code.

Comment author: Eliezer_Yudkowsky 06 September 2011 12:49:08AM 30 points [-]

Variants I'd like to see:

1) You can observe rounds played by other bots.

2) You can partially observe rounds played by other bots.

3) (The really interesting one.) You get a copy of the other bot's source code and are allowed to analyze it. All bots have 10,000 instructions per turn, and if you run out of time the round is negated (both players score 0 points). There is a standard function for spending X instructions evaluating a piece of quoted code, and if the evaled code tries to eval code, it asks the outer eval-ing function whether it should simulate faithfully or return a particular value. (This enables you to say, "Simulate my opponent, and if it tries to simulate me, see what it will do if it simulates me outputting Cooperate.")

Comment author: darius 06 September 2011 05:53:31PM *  12 points [-]

I just hacked up something like variant 3; haven't tried to do anything interesting with it yet.

Comment author: CharlesR 09 August 2011 05:45:42PM *  2 points [-]

For physics, I suggest Physics for Scientists and Engineers: A Strategic Approach with Modern Physics by Randy Knight.

Shankar is good introductory text on quantum mechanics at the graduate level.

If you have a good background, you should definitely read The Feynman Lectures on Physics. This one is not for beginners. You have been warned.

Comment author: darius 10 August 2011 07:37:10AM 0 points [-]

I second the rec for Feynman volume 1: it was my favorite text as a freshman, though the class I took used another one. Since that was in the last millennium and I haven't kept up, I won't comment on other books. Volumes 2 and 3 won't be accessible to beginners.

Comment author: [deleted] 30 July 2011 11:40:59PM 2 points [-]

Thanks for this! This seems very interesting! Anyone else thinking of signing up later this summer?

Comment author: darius 31 July 2011 05:51:44AM 2 points [-]

Yes, tentatively. I've read the textbook, more like given it a first pass, and it's excellent. This should help me stick to a more systematic study. If the video lectures have no transcripts, that'd suck, though (I'm hard of hearing).

Comment author: darius 01 June 2011 08:59:19AM 5 points [-]

O shame to men! Devil with devil damned / Firm concord holds; men only disagree / Of creatures rational

-- Milton, Paradise Lost: not on Aumann agreement, alas

View more: Prev | Next