For = i to j do /* tracking surrounds*/
? ij = (intent (Cj,Hj)) /*agent intention fill*/
ij <> (state (x,y,z)) /*agent is in motion*/
ikl = (filed (x,y,z)) /*track nearest agents */
I scanned it for a while, looking for how they had changed it. Then I scrolled down into the actual code, to see the implementation. But the important code wasn't there. The entire set of particle behaviors was marked as an object call to a something titled "compstat_do."
"Ricky," I said, "what's 'compstat_do'? Where is it?"
"Should be there."
"I don't know. Maybe it's compiled."
"Well that isn't going to do me any good, is it?" You couldn't read compiled code. "Ricky, I want to see that damn module. What is the problem?"
"No problem. I have to look for it, is all."
"I'll do it when you get back."
I glanced over at Mae. "Have you gone through the code?"
She shook her head. Her expression seemed to say it was never going to happen, that Ricky would make up more excuses and keep putting me off. I didn't understand why. I was there to advise them on the code, after all. That was my area of expertise. In the next room, Rosie and David were poking through the shelves of supplies, looking for radio relays. They weren't having any success. Across the room, Charley Davenport farted loudly and cried, "Bingo!"
"Jesus, Charley," Rosie said.
"You shouldn't hold things in," Charley said. "It makes you sick."
"You make me sick." Rosie said.
"Oh, sorry." Charley held up his hand, showing a shiny metal contraption. "Then I guess you don't want this remote-controlled compression valve."
"What?" Rosie said, turning.
"Are you kidding?" David said, going over to look.
"And it's got a pressure rating of ADC twenty pi."
"That should work fine," David said.
"If you don't fuck it up," Charley said.
They took the valve and went to the sink, where Mae was still pouring, wearing her heavy gloves. She said, "Let me finish ..."
"Will I glow in the dark?" Charley said, grinning at her.
"Just your farts," Rosie said.
"Hey, they already do that. 'Specially when you light 'em."
"Farts are methane, you know. Burns with a hard blue gemlike flame." And he laughed.
"I'm glad you appreciate yourself," Rosie said. "Because nobody else does."
"Ouch, ouch," Charley said, clutching his breast. "I die, I die ..."
"Don't get our hopes up."
My headset crackled. "Hey guys?" It was Bobby Lembeck again. "Wind's just dropped to six knots."
I said, "Okay." I turned to the others. "Let's finish up, guys."
David said, "We're waiting for Mae. Then we'll fit this valve."
"Let's fit it back in the lab," I said.
"Well, I just want to make sure-"
"Back at the lab," I said. "Pack it up, guys."
I went to the window and looked out. The wind was still ruffling the juniper bushes, but there was no longer a layer of sand blowing across the ground.
Ricky came on the headset: "Jack, get your fucking team out of there."
"We're doing it now," I said.
David Brooks said in a formal tone, "Guys, there's no point in leaving until we have a valve that we know fits this bottle-"
"I think we better go," Mae said. "Finished or not."
"What good would that do?" David said.
"Pack up," I said. "Stop talking and pack it up now."
Over the headset, Bobby said, "Four knots and falling. Fast."
"Let's go, everybody," I said. I was herding them toward the door.
Then Ricky came on. "No."
"You can't leave now."
"Because it's too late. They're here."
Everyone went to the window; we banged heads trying to look out in all directions. As far as I could see, the horizon was clear. I saw nothing at all. "Where are they?" I said. "Coming from the south. We have them on the monitors."
"How many?" Charley said.
The main building was south of us. There were no windows in the south wall of the shed.
David said, "We don't see anything. How fast are they coming?"
"Do we have time to run for it?"
"I don't think so."
David frowned. "He doesn't think so. Jesus."
And before I could say anything, David had bolted for the far door, opened it, and stepped out into the sunlight. Through the rectangle of the open door we saw him look to the south, shading his eyes with his hand. We all spoke at once:
"David, what the fuck are you doing?"
"David, you asshole!"
"I'm trying to see ..."
"Get back here!"
"You stupid bastard!"
But Brooks remained where he was, hands over his eyes. "I don't see anything yet," he said. "And I don't hear anything. Listen, I think maybe we can make a run for-uh, no we can't." He sprinted back inside, stumbled on the door frame, fell, scrambled to his feet, and slammed the door shut, pulled it tight behind him, tugging on the doorknob. "Where are they?"
"Coming," he said. "They're coming." His voice shook with tension. "Oh Jesus, they're coming." He pulled back on the doorknob with both hands, using his whole body weight. He muttered over and over, "Coming ... they're coming ..."
"Oh great," Charley said. "The fucking guy's cracked."
I went over to David, and put my hand on his shoulder. He was pulling on the doorknob, breathing in ragged gasps. "David," I said quietly. "Let's take it easy now. Let's take a deep breath."
"I just-I have to keep-have to keep them-" He was sweating, his whole body tense, his shoulder shaking under my hand. It was pure panic.
"David," I said. "Let's take a deep breath, okay?"
"I have to-have to-have-have-have-"
"Big breath, David ..." I took one, demonstrating. "That feels better. Come on now. Big breath ..."
David was nodding, trying to hear me. He took a short breath. Then resumed his quick gasps.
"That's good, David, now another one ..."
Another breath. His breathing slowed slightly. He stopped shaking.
"Okay, David, that's good ..."
Behind me, Charley said, "I always knew that guy was fucked up. Look at him, talking to him like a fucking baby."
I glanced back, and shot Charley a look. He just shrugged. "Hey, I'm fucking right."
Mae said, "It's not helping, Charley."
Rosie said, "Charley, just shut up for a while, okay?"
I turned back to David. I kept my voice even. "All right, David ... That's good, breathe ... okay now, let go of the doorknob."
David shook his head, refusing, but he seemed confused now, uncertain of what he was doing. He blinked his eyes rapidly. It was as if he was coming out of a trance.
I said softly, "Let go of the doorknob. It's not doing any good."
Finally, he let go, and sat back on the ground. He began to cry, head in hands.
"Oh Jesus," Charley said. "That's all we need."
"Shut up, Charley."
Rosie went to the refrigerator and came back with a bottle of water. She gave it to David, who drank as he cried. She helped him to his feet, nodded to me that she'd take it from here. I went back to the center of the room, where the others were standing by the workstation screen. On the screen, the lines of code had been replaced by a monitor view of the north face of the main building. Four swarms were there, glinting silver as they moved up and down the length of the building.
"What're they doing?" I said.
"Trying to get in."
I said, "Why do they do that?"
"We're not sure," Mae said.
We watched for a moment in silence. Once again I was struck by the purposefulness of their behavior. They reminded me of bears trying to break into a trailer to get food. They paused at every doorway and closed window, hovering there, moving up and down along the seals, until finally moving on to the next opening.
I said, "And do they always try the doors like that?"
"Because it looks like they don't remember that the doors are sealed."
"No," Charley said. "They don't remember."
"Because they don't have enough memory?"
"Either that," he said, "or this is another generation."
"You mean these are new swarms since noon?"
I looked at my watch. "There's a new generation every three hours?"
Charley shrugged. "I couldn't say. We never found where they reproduce. I'm just guessing." The possibility that new generations were coming that fast meant that whatever evolutionary mechanism was built into the code was progressing fast, too. Ordinarily, genetic algorithms-which modeled reproduction to arrive at solutions-ordinarily, they ran between 500 and 5,000 generations to arrive at an optimization. If these swarms were reproducing every three hours, it meant they had turned over something like 100 generations in the last two weeks. And with 100 generations, the behavior would be much sharper.
Mae watched them on the monitor and said, "At least they're staying by the main building. It seems like they don't know we're here."
"How would they know?" I said.
"They wouldn't," Charley said. "Their main sensory modality is vision. They may have picked up a little auditory over the generations, but it's still primarily vision. If they don't see it, it doesn't exist for them."
Rosie came over with David. He said, "I'm really sorry, guys."
"It's okay, David."
"I don't know what happened. I just couldn't stand it."
Charley said, "Don't worry, David. We understand. You're a psycho and you cracked. We get the picture. No problem."
Rosie put her arm around David, who blew his nose loudly. She stared at the monitor. "What's happening with them now?" Rosie said.
"They don't seem to know we're here."
"We're hoping it stays that way."
"Uh-huh. And if it doesn't?" Rosie said.
I had been thinking about that. "If it doesn't, we rely on the holes in the PREDPREY assumptions. We exploit the weaknesses in the programming."
"We flock," I said.
Charley gave a horse laugh. "Yeah, right, we flock-and pray like hell!"
"I'm serious," I said.
Over the last thirty years, scientists had studied predator-prey interactions in everything from the lion to the hyena to the warrior ant. There was now a much better understanding of how prey defended themselves. Animals like zebras and caribou didn't live in herds because they were sociable; herding was a defense against predation. Large numbers of animals provided increased vigilance. And attacking predators were often confused when the herd fled in all directions. Sometimes they literally stopped cold. Show a predator too many moving targets and it often chased none.
The same thing was true of flocking birds and schooling fish-those coordinated group movements made it harder for predators to pick out a single individual. Predators were drawn to attack an animal that was distinctive in some way. That was one reason why they attacked infants so often-not only because they were easier prey, but because they looked different. In the same way, predators killed more males than females because nondominant males tended to hang on the outskirts of the herd, where they were more noticeable. In fact, thirty years ago when Hans Kruuk studied hyenas in the Serengeti, he found that putting paint on an animal guaranteed it would be killed in the next attack. That was the power of difference.
So the message was simple. Stay together. Stay the same.
That was our best chance.
But I hoped it wouldn't come to that.
The swarms disappeared for a while. They had gone around to the other side of the laboratory building. We waited tensely. Eventually they reappeared. They once again moved along the side of the building, trying openings one after another.
We all watched the monitor. David Brooks was sweating profusely. He wiped his forehead with his sleeve. "How long are they going to keep doing that?"
"As long as they fucking want," Charley said.
Mae said, "At least until the wind kicks up again. And it doesn't look like that's going to happen soon."
"Jesus," David said. "I don't know how you guys can stand it." He was pale; sweat had dripped from his eyebrows onto his glasses. He looked like he was going to pass out. I said, "David. Do you want to sit down?"
"Maybe I better."
"Come on, David," Rosie said. She took him across the room to the sink, and sat him on the floor. He hugged his knees, put his head down. She put cold water on a paper towel and placed it on the back of his neck. Her gestures were tender.
"That fucking guy," Charley said, shaking his head. "That's all we need right now."
"Charley," Mae said, "you're not helping ..."
"So what? We're trapped in this fucking shed, it's not fucking airtight, there's nothing we can do, no place we can go, and he's fucking cracking up, makes everything worse."
"Yes," she said quietly, "that's all true. And you're not helping it."
Charley gave her a look, and began to hum the theme from The Twilight Zone. "Charley," I said. "Pay attention." I was watching the swarms. Their behavior had subtly changed. They no longer stayed close to the building. Instead, they now moved in a zigzag pattern away from the wall into the desert, and then back again. They were all doing it, in a kind of fluid dance.
Mae saw it, too. "New behavior ..."
"Yes," I said. "Their strategy isn't working, so they're trying something else."
"Not going to do shit for them," Charley said. "They can zigzag all they want, it won't open any doors."
Even so, I was fascinated to see this emergent behavior. The zigzags were becoming more exaggerated; the swarms were moving farther and farther away from the buildings. Their strategy was shifting progressively. It was evolving as we watched. "It's really amazing," I said. "Little fuckers," Charley said.
One of the swarms was now quite close to the rabbit carcass. It approached within a few yards, and swirled away again, heading back to the main building. A thought occurred to me. "How well do the swarms see?"
The headset clicked. It was Ricky. "They see fabulously," he said. "It's what they were made to do, after all. Eyesight's twenty-oh-five," he said. "Fantastic resolution. Better than any human." I said, "And how do they do the imaging?" Because they were just a series of individual particles. Like the rods and cones in the eye, central processing was required to form a picture from all the inputs. How was that processing accomplished?
Ricky coughed. "Uh ... not sure."
Charley said, "It showed up in later generations."
"You mean they evolved vision on their own?"
"And we don't know how they do it ..."
"No. We just know they just do."
We watched as the swarm angled away from the wall, moved back near the rabbit, then returned to the wall once more. The other swarms were farther down the building, doing the same thing. Swirling out into the desert, then swirling back again. Over the headset, Ricky said, "Why do you ask?"
"You think they'll find the rabbit?"
"I'm not worried about the rabbit," I said. "Anyway, it looks like they already missed it."
"Uh-oh," Mae said.
"Shit," Charley said, and he gave a long sigh.
We were looking at the nearest swarm, the one that had just bypassed the rabbit. That swarm had moved out into the desert again, perhaps ten yards away from the rabbit. But instead of turning back in its usual pattern, it had paused in the desert. It didn't move, but the silvery column rose and fell.
"Why is it doing that?" I said. "That up and down thing?"
"Something to do with imaging? Focusing?"
"No," I said. "I mean, why did it stop?"
I shook my head. "I doubt it."
"I think it sees something."
"Like what?" Charley said.
I was afraid I knew the answer. The swarm represented an extremely high-resolution camera combined with a distributed intelligence network. And one thing distributed networks did particularly well was detect patterns. That was why distributed network programs were used to recognize faces for security systems, or to assemble the shattered fragments of archaeological pottery. The networks could find patterns in data better than the human eye. "What patterns?" Charley said, when I told him. "There's nothing out there to detect except sand and cactus thorns."
Mae said, "And footprints."
"What? You mean our footprints? From us walking over here? Shit, Mae, the sand's been blowing for the last fifteen minutes. There's no footprints left to find." We watched the swarm hang there, rising and falling like it was breathing. The cloud had turned mostly black now, with just an occasional glint of silver. It had remained at the same spot for ten or fifteen seconds, pulsing up and down. The other swarms were continuing in their zigzag course, but this one stayed where it was.
Charley bit his lip. "You really think it sees something?"
"I don't know," I said. "Maybe."
Suddenly, the swarm rose up, and began to move again. But it wasn't coming toward us. Instead, it moved on a diagonal over the desert, heading back toward the door in the power building. When it came to the door, it stopped, and swirled in place. "What the hell?" Charley said.
I knew what it was. So did Mae. "It just tracked us," she said. "Backward." The swarm had followed the path we had originally taken from the door to the rabbit. The question was, what would it do next?
The next five minutes were tense. The swarm retraced its path, going back to the rabbit. It swirled around the rabbit for a while, moving in slow semicircles back and forth. Then once again it retraced the route back to the power station door. It stayed at the door for a while, then returned to the rabbit.
The swarm repeated this sequence three times. Meanwhile, the other swarms had continued their zigzagging around the building, and were now out of sight. The solitary swarm returned to the door, then headed back to the rabbit again.
"It's stuck in a loop," Charley said. "It just does the same thing over and over again."
"Lucky for us," I said. I was waiting to see if the swarm would modify its behavior. So far it hadn't. And if it had very little memory, then it might be like an Alzheimer's patient, unable to remember it had done all this before.
Now it was going around the rabbit, moving in semicircles.
"Definitely stuck in a loop," Charley said.
I hadn't been able to review all the changes they'd made to PREDPREY, because the central module was missing. But the original program had a randomizing element built into it, to handle situations exactly like this. Whenever PREDPREY failed to attain its goal, and there were no specific environmental inputs to provoke new action, then its behavior was randomly modified. This was a well-known solution. For example, psychologists now believed a certain amount of random behavior was necessary for innovation. You couldn't be creative without striking out in new directions, and those directions were likely to be random-
"Uh-oh," Mae said.
The behavior had changed.
The swarm moved in larger circles, going around and around the rabbit. And almost immediately, it came across another path. It paused a moment, and then suddenly rose up, and began to move directly toward us. It was following exactly the same path we had taken, walking to the shed.
"Shit," Charley said. "I think we're fucked."
Mae and Charley rushed across the room to look out the window. David and Rosie stood and peered out the window above the sink. And I started to shout: "No, no! Get away from the windows!"
"It's visual, remember? Get away from the windows!"
There was no good place to hide in the storage room, not really. Rosie and David crawled under the sink. Charley pushed in beside them, ignoring their protests. Mae slipped into the shadows of one corner of the room, easing herself into the space where two shelves didn't quite meet. She could only be seen from the west window, and then not easily. The radio crackled. "Hey guys?" It was Ricky. "One's heading for you. And uh ... No ... two others are joining it."
"Ricky," I said. "Go off air."