| Who | When |
Messages | |
|
|
|
wiliam6
|
194
|
 |
|
09-11-2008 02:28 AM ET (US)
|
|
|
| |
Messages 193-183 deleted by topic administrator between 09-17-2008 09:26 AM and 10-07-2008 02:33 AM |
toliling
|
182
|
 |
|
08-06-2008 01:56 AM ET (US)
|
|
|
| 51submit
|
181
|
 |
|
08-01-2008 04:58 AM ET (US)
|
|
|
|
|
180
|
 |
|
06-16-2008 11:58 PM ET (US)
|
|
Deleted by topic administrator 10-07-2008 02:33 AM
|
wiliam6
|
179
|
 |
|
04-29-2008 03:47 AM ET (US)
|
|
Pass4Sure is your source for the Comptia
A+ exam. With our IBM Certification Exam Resources, you can be rest assured that you will pass your MBS exam on Your First Try. Our exams are written and formatted by top senior IT Professionals working in today's prospering companies and data centers. All of our practice exams including the MBS exam guarantee you success on your First Try. <br> You will find the great selection of silver Pendants at Tiffany Jewelry Store. All our silver tiffany pendants are stamped with a fineness mark of "925" or "Sterling" or "Ster" to indicate silver purity. Moreover, the tiffany
pendant are crafted with the quality of being beautiful and delicate in appearance, and they are inspected for a fineness mark to ensure quality.
|
|
178
|
 |
|
04-21-2008 03:47 AM ET (US)
|
|
Deleted by topic administrator 10-07-2008 02:33 AM
|
wiliam6
|
177
|
 |
|
04-14-2008 11:17 PM ET (US)
|
|
|
wiliam6
|
176
|
 |
|
04-02-2008 04:35 AM ET (US)
|
|
CompTIA A+ Certification<br> CompTIA A+ is the most recognized and trusted certification for entry-level service technicians. From installation to basic networking, employers know CompTIA A+ Exams certified technicians have the knowledge and skills to successfully complete the job. Adding a CompTIA A+ certification to your resume will prove to employers your abilities with core hardware and operating system technologies. pass4sure offer the CompTIA A+ exam answersKey benefits for becoming COMPTIA HTI+ Certification:<br> A solid credential that makes you more marketable, leading to better job opportunities.<br> o Top technology companies including CompuCom and IBM have made CompTIA A+ certification mandatory for their service technicians. Additionally, more than 100 companies now require IBM certifications as a prerequisite to qualify for their corporate and vendor-specific training programs.<br> Credibility and respect in the workplace.<br> o Nearly 71 percent of certified professionals say that credentials give them more prestige among their colleagues.<br> Validation of achievement in an industry-valued skill.<br> o A+ COMPTIA EXAM PASS is an opportunity for individuals to earn the credential that proves their competency in core hardware and operating system technologies including installation, configuration, diagnosing, preventive maintenance and basic networking.<br> Increased knowledge, leading to increased job satisfaction.<br> o Ninety-three percent of CompTIA certified IT professionals feel their customers are in qualified hands, and 84 percent say they have the confidence and required skills to do a superior job.<br> Viable career path, leading to higher level positions.<br> o Seventy-four percent of IT managers say a CompTIA certification is an important factor in considering an employee for a promotion. <br> Dont delay, act today and start earning a valuable CompTIA certification using the quality pass4sure learning products.pass4sure<br>
|
wiliam6
|
175
|
 |
|
04-02-2008 04:35 AM ET (US)
|
|
Our mission is to introduce you to the fun world of Inflatables. We offer an astounding array of Inflatable merchandise. Browse our pages for Boats, Inflatable Pools for young and old, AeroBeds and Air Beds, Furniture, Inflatable Toys, Accessories for all, and much more! Offering items from Intex, and AeroBed; both world recognized leaders in Inflatables manufacturing for style, desirability, quality, durability, and value.<br> Other items include: Inflatable Jumper, Inflatable Bouncers, Inflatable Castle, Inflatable Obstacle, Inflatable Tunnel, Inflatable Games, and much, much more! Our products are a great affordable choice and are designed for all age groups. Many of the kid's pools will double as ball pits and are fine for indoor play during winter or stormy days. Our Inflatable Toys are a wonderful alternative to those hard bleachers at the little league games and provide an elevated vantage when watching the kids at the beach. The scuba accessories and pool floats are just the thing for little swimmers and big ones alike. Explore the pages of our site for your gift giving ideas!
|
|
|
174
|
 |
|
03-22-2008 01:33 AM ET (US)
|
|
Deleted by topic administrator 10-07-2008 02:33 AM
|
| Peter Ellegaard
|
173
|
 |
|
09-05-2007 03:21 PM ET (US)
|
|
Kei Shun Ma - congrats on the Data Mining competition. I have a quick question for you - can you possibly contact me on p.ellegaard@yahoo.com
Thanks Peter
|
| mhtong
|
172
|
 |
|
06-12-2007 10:07 PM ET (US)
|
|
Hopefully you've all picked up HW4&5. If you find any grading errors, email me - I'll probably have you make a note and stick it in my mailbox.
I should be getting project grades to you over the next couple days.
It's been a pleasure!
|
Gary Cottrell
|
171
|
 |
|
06-11-2007 09:51 PM ET (US)
|
|
|
Gary Cottrell
|
170
|
 |
|
06-11-2007 03:21 AM ET (US)
|
|
I have posted all of the lectures, and a couple of relevant tests...see you tonight!
-gary
|
mhtong
|
169
|
 |
|
06-11-2007 12:53 AM ET (US)
|
|
Deleted by author 06-11-2007 01:11 AM
|
Gary Cottrell
|
168
|
 |
|
06-11-2007 12:38 AM ET (US)
|
|
Hi folks --
If you haven't gotten an email from Matt yet, here are the answers:
As mentioned in class, the review session is tomorrow, Monday, June 11, at 7PM. Our plan is to have it in the same room as last time, in the basement of EBU3B, just opposite the elevators.
You can have one two-sided cheat sheet for the final.
I plan on posting the slides from the last k classes tonight, as well as a practice final, at least as close as I can come to one under the circumstances (somewhat different material, etc. from the last time I taught it).
cheers, g.
|
| Josh
|
167
|
 |
|
06-10-2007 09:19 PM ET (US)
|
|
I would also like to know this
|
| Robin
|
166
|
 |
|
06-10-2007 04:44 PM ET (US)
|
|
when is the final review????????????
|
| John
|
165
|
 |
|
06-10-2007 04:30 AM ET (US)
|
|
I think when we were discussing the cheat sheet for the midterm we came to the conclusion that we could have a 1-sided cheat sheet for the midterm and a 2-sided cheat sheet for the final.
|
| Erik
|
164
|
 |
|
06-10-2007 03:55 AM ET (US)
|
|
Are we allowed a cheat sheet? One-sided?
|
| Kei Shun Ma
|
163
|
 |
|
06-08-2007 10:10 PM ET (US)
|
|
Will we have any final review and lecture notes posted online?
|
| mhtong
|
162
|
 |
|
06-08-2007 12:48 AM ET (US)
|
|
Edited by author 06-08-2007 01:10 AM
If it's in the training set, it's perfectly legit to just add more feature words based on your performance... Feature selection is a bit of an art, not a science (at least at this stage - more scientific and principled approaches to feature selection are pretty active areas of research).
|
| Robin
|
161
|
 |
|
06-07-2007 06:55 PM ET (US)
|
|
Wondering what everyone is getting trying to classify the test sets? For us, currently: trainSpam4 = 99.14% correct trainHam3 = 77.13% correct
We are having a tough time classifying ham messages as ham, especially ones that are not written by a human and short messages that do not contain any of our feature words. Any suggestions.
|
| Tony
|
160
|
 |
|
06-07-2007 01:25 AM ET (US)
|
|
I was messing around the the mailbox module and discovered that if you use mailbox.PortableUnixMailbox() you'll get 293 for the ham count and you would get a ham count of 291 if you used mailbox.UnixMailbox()
I was using UnixMailbox yesterday, but switched up to using PortableUnixMailbox since it was recommended over the regular UnixMailbox by some of the sites I found.
|
| Tony
|
159
|
 |
|
06-06-2007 11:53 PM ET (US)
|
|
I also get 598 spam and 293 ham using the python mailbox module.
Also, would it be possible for a project extension since specifications and files for the 20 emails per file format aren't up yet? It would greatly ease the 10th week pressure and what not =).
|
Stephen Boyd
|
158
|
 |
|
06-06-2007 10:08 PM ET (US)
|
|
Using the python mailbox parser I got 598 spam and 291 ham, but originally I was using just a regex and I got 598 spam and 293 ham. Looks like something is wrong with the ham training set, because it looks like everyone can agree on the spam.
|
| Erik Peterson
|
157
|
 |
|
06-06-2007 09:59 PM ET (US)
|
|
Got those exact same numbers, in both our parsers. My personal parser used Java. Used "From "
|
| Erik Corona
|
156
|
 |
|
06-06-2007 04:31 PM ET (US)
|
|
This is my count, can anyone else verify this?
Spam: 598 Not Spam: 293
|
mhtong
|
155
|
 |
|
06-05-2007 08:56 PM ET (US)
|
|
|
mhtong
|
154
|
 |
|
06-04-2007 08:30 PM ET (US)
|
|
For 13.8, they give exact numbers so you should use them to support your argument numerically (ie do a calculation).
For 20.13, I'd want some written out calculation of how it would change - Gary's indicated that that sort of thing is likely to be on the test, so you should take the chance to practice.
|
| mhtong
|
153
|
 |
|
06-04-2007 05:22 PM ET (US)
|
|
I'm guessing/hoping from the lack of continued complaints that people are feeling more comfy with mbox parsing? There actually are some toolboxes out there for mbox reading (one student at least has been using the Python tool box). It seems like the format is reasonably well spelled out, so it doesn't seem like there should be disagreement. If it's something people are worried about, like I said I'd be willing to break up the test set into small chunks with known #s of emails so you can either fix things (by hand if necessary) or at least not be penalized for being off by one or somesuch.
|
| mhtong
|
152
|
 |
|
06-04-2007 05:15 PM ET (US)
|
|
Slogging through the questions built up about the HW (from here, discussion, and email):
10.1 Question from Erik - You should probably model your answers on the effect axioms described in section 10.3. These use both Poss (to check preconditions) and Result (to refer to the appropriate resulting state).
10.4 Question from Josh & discussion - A lot of this I answered, but I missed the mereological part. Basically mereology is a branch that provides an alternative to set theory, more or less providing an alternative to set theory based on partof relations. Sometimes this makes sense: for instance since set theory assumes atomic elements, elemOf(x, Water) ^ partof(y, x) => elemOf(y, Water) seems very odd, since x and y are atomic elements of the set of things that are Water. On the other hand, partof(x, Water) ^ partof(y,x) => partof(y, Water) seems very natural. So for the second half, you use partof relations instead of predicates (e.g. Water(x)) or set theory (elemof(x, Water) or "x \in Water"). Don't stress it too much, the focus is more on the first part.
11.4 As Josh pointed out, you need a "Holding" fluent and an "At" fluent - both are mentioned, but not made explicit. It already mentions "Go" and "Push" actions, so I disagree about the need for an additional "Move" action. It is indeed a blockworld-like world with only 3 positions.
I don't think I've gotten any question from Chapter 13 questions
20.13 - "Are we supposed to be describing what happens to the weights of a still single layered perceptron like it was talking about in the first sentence?" Yes. 4 input neurons feeding into one perceptron output unit trying to compute parity. "Does four-input refer to 00, 01, 10, and 11, or are there actually 4 bits of input?" Four bits of input. "Are we basically showing why single layer perceptrons fail?" I'd say partly yes, and partly getting some hands-on practice with perceptrons.
|
| Steffan McMurrin
|
151
|
 |
|
06-04-2007 04:18 AM ET (US)
|
|
How Long are ppl's learners taking? This seems really slow...
-bash-2.05b$ time java spamNBLearner > spamParams.txt
real 3m20.461s user 3m22.930s sys 0m2.360s
Almost all of the time is spent reading the email files in.
|
mhtong
|
150
|
 |
|
06-03-2007 08:46 PM ET (US)
|
|
Edited by author 06-03-2007 08:54 PM
So, as I said in the assignment, the files are in mbox format, the most commonly used format. So I'm a bit surprised that there's any problem getting them chopped up into separate emails. If you look up the format, there's a specified way of how to break them up, namely lines starting with "From ", with a blank line appended at the end. This is the official specification. I don't actually get the counts I'd expect (I think I get 290 and 598 with my quick check), but I did say they were mbox files so you should treat them as such.....
So, for instance, this is from the second hit Google provides:
A reader scans through an mbox file looking for From_ lines. Any From_ line marks the beginning of a message. The reader should not attempt to take advantage of the fact that every From_ line (past the beginning of the file) is preceded by a blank line.
Once the reader finds a message, it extracts a (possibly corrupted) envelope sender and delivery date out of the From_ line. It then reads until the next From_ line or end of file, whichever comes first. It strips off the final blank line and deletes the quoting of >From_ lines and >>From_ lines and so on. The result is an RFC 822 message.
Aside from the first msg, the following RegExp should work: "\n\nFrom .*\n". (That's from the next Google hit). So it seems like the answer to your question was out there with a pretty minimal amount of digging.....
|
| John
|
149
|
 |
|
06-03-2007 04:07 PM ET (US)
|
|
Matt, Stephen was saying that even if you split up the emails into chunks of 20 emails each, that doesn't help at all, since different ways of splitting up the emails can still yield different results. We need a standardized way of splitting them, so everyone can get the same results
|
mhtong
|
148
|
 |
|
06-03-2007 04:37 AM ET (US)
|
|
Clarification: When I said 20 email chunks, I meant files with 20 emails each, not 20 chunks of unknown amount.
|
| Erik Corona
|
147
|
 |
|
06-03-2007 03:00 AM ET (US)
|
|
I'm a bit confused on problem 10.1. I'm not 100% convinced I did it right. Is the format of the answer to the Result(a,s) function?
|
| Erik Corona
|
146
|
 |
|
06-03-2007 02:26 AM ET (US)
|
|
Yeah, I'm at around 580 spam and 290 ham/non-spam e-mails. It would be nice to have a standard way of splitting the messages so that I can output the correct number of 0's and 1's.
|
Stephen Boyd
|
145
|
 |
|
06-02-2007 05:48 PM ET (US)
|
|
I think that splitting on return-paths causes there to be problems. Consider the message on line 12569, in which the attached message has a return-path but no From line in the header. This is really one message with the bounced message attached but with the return-path technique it will be split into two messages. Doing a simple "[Ff]rom .*@" search I get 598 messages for the spam and 293 ham. Maybe it would be best if we were given a standard way to split messages, because I don't think 20 smaller chunks will help.
|
| Kei Shun Ma
|
144
|
 |
|
06-02-2007 05:10 PM ET (US)
|
|
Edited by author 06-02-2007 05:10 PM
I think one of the problem is that the email given is normally started with a sentence like "From abc@def WEEKDAY MONTH(one or two space)DATE TIME YEAR" and then the second line is "Return-Path: xxxx"
However in both spam and hams emails, some miss the first line and start with the second line "Return-Path: xxx" instead, so the numbers I found is by counting the lines start with "Return-Path: ", but I am not sure if there is any email missing both the first and second line....
|
mhtong
|
143
|
 |
|
06-02-2007 02:41 PM ET (US)
|
|
600 and 300 message files were used (+/- 1, I'd say). *Supposedly* breaking them apart is easy, but it's not something I've had to do, honestly. If people are having problems getting consistent separation, would it be helpful if the test set were in, say, 20 email chunks?
|
| Josh
|
142
|
 |
|
06-02-2007 12:21 AM ET (US)
|
|
Edited by author 06-02-2007 12:27 AM
for 11.4, i envision the problem a block world-like place, but where left position is A, middle position is B, and right position is C.
if so, shouldnt there also be an "At" fluent that is true if (box,monkey,banana) is at place A,B, or C? Thus we need a Move action for the monkey to go to and from positions?
|
| Kei Shun Ma
|
141
|
 |
|
06-01-2007 11:21 PM ET (US)
|
|
The numbers I get is 611 spams and 297 hams, but I am not sure it is correct or not...
|
| Steffan McMurrin
|
140
|
 |
|
06-01-2007 05:59 PM ET (US)
|
|
Anyone know yet how many spam/ham messages are in each of the files? Is there any best way to split up the emails other than trying to recognize what combination of strings a new email starts as? I'm sometimes having trouble figuring out when a new email starts and ends when I'm looking at the list... let alone abstracting the beginning or the end.
Right now i'm counting 608 spam, and 348 ham
|
mhtong
|
139
|
 |
|
06-01-2007 04:14 AM ET (US)
|
|
Just to be clear. Both the learner and the classifier take in the name of the email file (as text) and call the preprocessor to generate the features. The classifier does not call the learner, since it can be run on both the training and testing data.
|
| mhtong
|
138
|
 |
|
06-01-2007 01:01 AM ET (US)
|
|
For 11.4, there's also a "holding" fluent, which you should assume is false in the initial state. I'm not sure why it wasn't italicized in R&N.
|
| mhtong
|
137
|
 |
|
06-01-2007 12:59 AM ET (US)
|
|
Your answer isn't really what we're looking for. (Is "Water" a constant? What does it refer to?) Generally with logic we've done things like "forall x,y Dog(x) ^ Bone(y) -> Likes(x,y)". There's actually an example in the text of almost this exact same problem you ask about... Basically, use as basic and general propositions as possible. For (b) you shouldn't need to invent a proposition like IsLiquidBetween(...), but should identify the conditions under which something like IsLiquid(x) is true. I think it should be pretty obvious from the text what extensions are relevant.
|
mhtong
|
136
|
 |
|
05-31-2007 01:17 PM ET (US)
|
|
I'll be late for my office hours (probably at least half an hour). I'll still stay an hour from whenever I arrive.
|
| Josh
|
135
|
 |
|
05-31-2007 01:45 AM ET (US)
|
|
for problem 10.5 in the homework, it seems like there are a lot of "representations developed in the chapter" so I was wondering if something like this is what they are looking for--
b- "water boils at 100 degrees" answer- BoilsAt(Water, 100 degrees)
Also for the second part, i can't find any examples in the book of using the mereological approach. is it using the partof() and other like operators?
Thanks
|
mhtong
|
134
|
 |
|
05-30-2007 05:23 PM ET (US)
|
|
No, that simply refers to the report. I was pretty tired when I finalized it, I'll clarify the assignment. Thanks!
|
| Kei Shun Ma
|
133
|
 |
|
05-30-2007 02:17 PM ET (US)
|
|
I found that README/ README header were mentioned several times in PA4, does it mean besides the normal comment and the written report, we need to create a file README to describe how the program works?
|
mhtong
|
132
|
 |
|
05-30-2007 04:24 AM ET (US)
|
|
The ham training set was posted this afternoon.
|
| Erik Peterson
|
131
|
 |
|
05-29-2007 12:56 AM ET (US)
|
|
If anyone wants to work on this last lab together or has a group I can join, please message me Erik Peterson at erikpeters@gmail.com. Thank you.
|
mhtong
|
130
|
 |
|
05-25-2007 02:32 AM ET (US)
|
|
Edited by author 05-25-2007 02:34 AM
Stephen,
Yeah, after trying it out, you're right. Normally I wouldn't speak out of ignorance, but I wanted to be sure you got an answer ASAP (despite my lag on this more recent turn around). I'd really have expected them to have done something about that when they added typed containers.
Everyone can feel free to add Stephen's suggestion. I'll add it to the test copy too.
|
Stephen Boyd
|
129
|
 |
|
05-25-2007 12:47 AM ET (US)
|
|
Matt, This link has notes on equals methods http://www.ibm.com/developerworks/java/library/j-jtp05273.htmlI've tried printing out to stderr at the equals call of the code you gave and I got nothing. I admit that using the try catch is ugly and costly. It would probably be better to implement it as public boolean equals(Object obj) { return obj instanceof Coord && equals(this,(Coord)obj); }
|
mhtong
|
128
|
 |
|
05-25-2007 12:22 AM ET (US)
|
|
Stephen, I'm *relatively* sure that when you type a collection (ie Vector<Coords>) that it would correctly use the correctly typed equals, which means the one I provided below should be fine. It was definitely my intent to make the sort of thing you describe easy, so if I'm wrong I guess I can add the code you suggest (or equivalent using getClass instead of try/catch). Let me know what you find out.
(That try/catch block really bothers me a lot. It looks like the correct way would be: if (c2.getClass() == Coord.class) return false; but I haven't really tried it.)
|
Stephen Boyd
|
127
|
 |
|
05-24-2007 11:35 PM ET (US)
|
|
Matt, I was thinking it would make sense to have the overloaded equals function so we could easily look for the coordinate in the threats vector. I'm pretty sure the contains() call uses the overloaded function.
|
mhtong
|
126
|
 |
|
05-24-2007 11:14 PM ET (US)
|
|
Erik,
I did mean average... 14 seconds seems very high though.....
|
mhtong
|
125
|
 |
|
05-24-2007 11:13 PM ET (US)
|
|
Stephen,
I'm not sure I understand why there'd be any benefit to having an "equals" function that takes a generic Object... I do know that in general having a try/catch like that is generally better avoided (you could probably work out a check involving getClass()).
I'll add the following. Rather than rerelease, feel free to insert it into your code.
public boolean equals(Coord c2){ if ((x == c2.x) && (y == c2.y)) return true; return false; }
|
| Erik Corona
|
124
|
 |
|
05-24-2007 08:08 PM ET (US)
|
|
Am I correct in assuming that the average move should take 1 second? My competitive solver can take up to 14 seconds for some moves but more than makes up for it by taking just a few milliseconds in other moves, is this a problem?
|
Stephen Boyd
|
123
|
 |
|
05-24-2007 06:42 PM ET (US)
|
|
Could you please add
public boolean equals(Object obj) { try { return equals(this,(Coord)obj); } catch (ClassCastException e) { return false; } }
to the Coord object so we can easily search for coordinates in the threats vector?
|
mhtong
|
122
|
 |
|
05-24-2007 05:29 PM ET (US)
|
|
Kei,
The same state repeated four times would certainly be a sufficient condition. That's what I'm leaning towards, assuming I automatize tie deciding.
|
mhtong
|
121
|
 |
|
05-24-2007 05:17 PM ET (US)
|
|
Thanks Erik and John for the feedback. Since some of you may have been fine tuning for 500, at least part (and maybe all) will be run at that limit for the competition. But I'm still reserving the right to have higher limits in addition.
|
| Kei Shun Ma
|
120
|
 |
|
05-24-2007 11:50 AM ET (US)
|
|
Has the draw condition been decided? It would be good to know ahead so we can detect and avoid the draw and take other path if possible.
|
| Erik Corona
|
119
|
 |
|
05-24-2007 12:36 AM ET (US)
|
|
Edited by author 05-24-2007 12:37 AM
I tested my competitive solver. With a 1 second time limit it usually expands to around 20,000 nodes and also trims around another 16,000 nodes with alpha beta pruning.
With a 500 node limit my program has takes 20 milliseconds to select a move.
This is run on a 1.8ghz Pentium 4 laptop.
My competitive solver's performance varies greatly with depending on the expansion limit, is it staying at 500 nodes?
|
mhtong
|
118
|
 |
|
05-23-2007 11:59 PM ET (US)
|
|
Kei,
Tuesday is fine as long as it's the same as the pdf you submit when you turn in the project.
-Matt
|
| Kei Shun Ma
|
117
|
 |
|
05-23-2007 10:18 PM ET (US)
|
|
Is the hard copy of report due Friday office hour or next Tue?
|
mhtong
|
116
|
 |
|
05-23-2007 09:34 PM ET (US)
|
|
Also, I thought I'd made this clear, but I got asked about it today. Everyone will be tested using MY version of the Checkers package (which will be the same as the one I handed out to you). Your code should not be part of this package, but should import the necessary classes. The testing function (which I'll be running) will be very like the Player class provided - I'll be instantiating two Solvers (one yours, one someone else's) and calling on them to provide moves.
|
| Kei Shun Ma
|
115
|
 |
|
05-23-2007 09:29 PM ET (US)
|
|
Deleted by author 05-23-2007 09:29 PM
|
mhtong
|
114
|
 |
|
05-23-2007 09:28 PM ET (US)
|
|
I would assume this would go without saying, but BE SURE TO SITE ANY AND ALL SOURCES. I don't care if an idea isn't your own - doing research into a problem is part of good research. But if you don't cite it, it's plagiarism.
That said, using other people's code is not allowed, cited or not.
|
mhtong
|
113
|
 |
|
05-23-2007 09:26 PM ET (US)
|
|
You're welcome to have memorized values for particular states as part of your submission. The total size of your submitted code (so not counting your pdf) cannot be more than one MB.
|
| Erik Corona
|
112
|
 |
|
05-23-2007 05:56 PM ET (US)
|
|
Is programming specific finishing moves allowed via our utility function? Is anything allowed as long as we use the information available in the utility function and nothing else?
|
| John Egan
|
111
|
 |
|
05-22-2007 09:04 PM ET (US)
|
|
Edited by author 05-22-2007 09:05 PM
I wrote my competitive solver to search as much as possible within the 1 second time limit, and with not expansion limits, it usually expands around ~20,000 nodes and also trims around another ~20,000 nodes from the search tree using alpha beta pruning.
With a 500 node limit my program has a selectMove() runtime of about 0.02s
(Edit: This is run on a 3.4ghz Pentium 4 machine)
|
mhtong
|
110
|
 |
|
05-22-2007 05:22 PM ET (US)
|
|
Edited by author 05-22-2007 05:28 PM
Regarding competition params:
The intent is that if your program takes more than about a second on average per move at 500, you may be disqualified. Machines have come a long way since the last time I did this course, so the sec/move rule was just an educated guess. How's it working out in practice? How deep are people able to go in the first parts?
If people are far enough along, I wouldn't mind some feedback about how long things are taking per move at a limit of 500? It was just a guess at balancing three goals: -giving you enough space to work your magic -actually having the competition be feasible (I'm going to be running a LOT of games of checkers) -not giving you too much space so that clever pruning and evaluations aren't overly meaningful. What are people's perceptions so far of 500 as a limit?
If I get some useful feedback, I can try and nail down the specifics a bit more if people would like.
|
mhtong
|
109
|
 |
|
05-22-2007 05:09 PM ET (US)
|
|
Robin,
I don't know what your best solver is. It seems like its difference from alpha-beta could be huge or minor. Any chance you meant alpha-beta/minimax instead of best/alpha-beta?
Kei makes a good point that alpha-beta and minimax should be the same for the same depth. As he suggests, this is a good way to do some debugging. Your "best" shouldn't do worse than either of the vanilla methods, and it would be surprising if those would be beaten by random more than once in a blue moon (it is of course "possible", but it seems mighty unlikely).
|
mhtong
|
108
|
 |
|
05-22-2007 05:00 PM ET (US)
|
|
Edited by author 05-22-2007 06:09 PM
Ben,
Yes, it seems like that would currently be illegal since it seems like you'd have to calculate the possible moves (the expand function) to know how many there are. If you want to make a case for it, I'd at least consider adding Game.getNumMoves(b) I suppose.
I know it sometimes ends up being a somewhat arbitrary distinction. Basically, there are four good ways of providing limits: a) # of evaluations (probably most common for this sort of competition, but would be harder to provide common interface and make it easier to cheat the counter, plus a lot of gray area on what's evaluation and what's heuristic) b) depth (easy to implement and understand, not very useful for measure success in pruning) c) time (probably most used on commercial systems, but d) # of expansions (what I chose - easy to quantify and control, but can make the boundaries of what the evaluation function can do a bit murky)
Basically, expand returns the results of actions. You can't replicate this in your evaluation function. However, you can do some small local search around individual pieces (such as what's next to a piece in the directions it can move).
If you want your evaluation function to really know about what actions are possible and what the results are, you're going to have to call it on a node you've expanded (which is fine) rather than on a true leaf. It's more expensive in terms of # of expansions, but can make for more powerful evaluation function.
|
| Kei Shun Ma
|
107
|
 |
|
05-22-2007 06:04 AM ET (US)
|
|
Edited by author 05-22-2007 06:09 AM
I tested with depth limit 3 to 6, and they works the same. But when I set the expand limit, they come up with different result, as the better solver will search deeper.
I should say when I tried to modified the textbook's code to find also the best successor, the order of codes in the forloop made me trouble. I have to reorder the codes to make my algorithm works. The code itself is correct.
|
| Robin
|
106
|
 |
|
05-22-2007 05:07 AM ET (US)
|
|
Kei,
What values did you select for your testing? (i.e. depth limit, expand limit) What is wrong with the way the book describes it?
Matt,
"More guidelines on what reasonably quick means will be forthcoming, but it shouldnt take more than a second with reasonable limits."
"The exact limit will not necessarily be announced ahead of time, but will be at least 500 nodes. "
Should we try to optimize our solver based on 500 node expand limit? Or is there an official number?
Thanks,
Robin
|
| Kei Shun Ma
|
105
|
 |
|
05-22-2007 04:11 AM ET (US)
|
|
Edited by author 05-22-2007 04:40 AM
Robin,
How does your vanilla alpha-beta player play against the RandomPlayer? I think even the vanilla alpha-beta player should win all the game against the RandomPlayer. My old vanilla alpha-beta player sometimes lost to the RandomPlayer (about 1 in 10 games), but then I found a bug on it (the textbook's code doesn't really work). Now I have tested my new vanilla alpha-beta player against the RandomPlayer for more than 300 times, and it wins all.
Besides, the way I found that bug is that, for different solvers (e.g. Minimax against alpha-beta) with the same evaluation function (e.g. sum_up) and the same depth limit (but no expand limit), the result should always be the same againist the same player (except RandomPlayer). The only difference should only be the speed. That's what I get so far. It is true at least for using sum_up or some simple method as the evaluation function.
|
| Robin
|
104
|
 |
|
05-22-2007 02:32 AM ET (US)
|
|
If we test our Best Solver against the vanilla alpha-beta player, without changing any settings, won't it always compute the same game?
Also, does anyone else's Best solver still sometimes loose to the RandomPlayer?
|
| Ben
|
103
|
 |
|
05-21-2007 11:18 PM ET (US)
|
|
Edited by author 05-22-2007 12:23 AM
I noticed that there is no function Game.GetNumMoves(Board b).
Is computing the number of moves available for some board state which we are considering but have not yet expanded 'illegal'? It seems it vaguely resembles computing the successors of the state outside of the Game.expand function...?
|
mhtong
|
102
|
 |
|
05-20-2007 03:36 AM ET (US)
|
|
Kei,
Just the expansion limit for competition. That should take care of both parts of your question.
|
| Kei Shun Ma
|
101
|
 |
|
05-18-2007 02:03 PM ET (US)
|
|
Edited by author 05-18-2007 06:03 PM
For the competition, besides the lookup limit, would there be any depth limit?
Also, would we be allowed to know the depth limit directly?
|
| Erik Peterson
|
100
|
 |
|
05-17-2007 10:23 PM ET (US)
|
|
I would put the evaluation function in the node, that way, when you want to peek at which node looks best, you call each nodes eval() and choose accordingly.
just an idea, Erik
|
| melissa
|
99
|
 |
|
05-17-2007 10:00 PM ET (US)
|
|
Sorry if this is a really dumb question... but for #2 on the project... "write an evaluation function"... where does this function go? I understand what it does, but where do we put it? In the node class? In Board? In our solver?
|
mhtong
|
98
|
 |
|
05-17-2007 12:52 PM ET (US)
|
|
Yeah, there are oddles of variations, house rules, and minor tweaks out there. I probably could have looked things up to find out what the official word was on some of this, but it seemed silly for a game I'd been playing for SO many years.
I think it's usually pretty apparent if there's a tie. I may or may not take the time to code up a check.
Bummer about stopping when kinged - those were oodles of fun those VERY rare times when you could work out something huge. But it's a minor tweak, and I guess I'll make it later today. Want to be street legal if possible!
|
| Kei Shun Ma
|
97
|
 |
|
05-17-2007 06:04 AM ET (US)
|
|
Here is a rule about the American Checkers/English draughts http://www.darkfish.com/checkers/rules.htmlIt suggests several ways to consider a draw, but I think only the following one making sense for our project as we don't have a referee =) : If neither side has advanced a piece towards the king-row and if no pieces have been removed from the board within 50 (or 40) moves, the game is a draw. He also adds another set of conditions under which a draw can be declared: A draw shall be declared if a player can demonstrate that with his next move he would create the same position for the fourth time during the game.
|
| Kei Shun Ma
|
96
|
 |
|
05-17-2007 05:52 AM ET (US)
|
|
Edited by author 05-17-2007 05:55 AM
Forced jump is really fun =)
In wiki, there is a rule - If player's piece jumps into the kings row, the move terminates (it cannot jump out (as in a multiple-jump move) until that move has ended and the piece has been kinged)?
(The code doesn't enforce that, but I think we are playing a less restricted version making life easier)
|
mhtong
|
95
|
 |
|
05-17-2007 05:40 AM ET (US)
|
|
The wikipedia article on Checkers is mildly interesting, and actually has a fair amount of info on computer chess. One thing it mentions is that Checkers has not actually been "solved" in the sense of the search tree being completely, but that this should be doable in the next few years. http://en.wikipedia.org/wiki/English_draughtsIt also says that the current Player method is mildly wrong in that it's supposed to be a loss if you have no valid moves but still have pieces (it's currently tagged as a tie, as in chess). Doesn't come up that often, but you may want to fix it. I'll include the fix if I do another release.
|
mhtong
|
94
|
 |
|
05-17-2007 05:03 AM ET (US)
|
|
Edited by author 05-17-2007 05:26 AM
That's not a bug, it's part of the game of Checkers. "If you can jump, you must. And, a multiple jump must be completed; you cannot stop part way through a multiple jump. If you have a choice of jumps, you can choose among them, regardless of whether some of them are multiple, or not."
There's actually a really fun variant where you win if you force the opponent to take all your pieces. (If you finish early and get bored, this might be fun to try.)
Not-so-random tangent: I remember getting in a fight in something like 4th grade with some friend who refused to make a jump that was going to set him up for a triple jump. But if you poke around on the web, forced jumps are a pretty key part of Checkers strategy.
|
| Erik C
|
93
|
 |
|
05-17-2007 04:19 AM ET (US)
|
|
There appears to be a bug in the successor method. If a piece can be captured it'll only generate the successors that can capture a piece. If no piece can be captured then it does properly generate all possible successors.
Sometimes it's advantageous to play it safe and not capture a piece so this is limiting the usefulness of some strategies.
|
mhtong
|
92
|
 |
|
05-16-2007 07:07 PM ET (US)
|
|
Edited by author 05-16-2007 07:48 PM
Erik,
That's my problem to detect, not yours. :) Unless I extend the interface to include a "claim tie" option that both sides would agree to somehow (especially since nothing says your opponent won't be able to take advantage of suboptimal play, since not limited to minimax), it's best if the overall Player recognizes that it's looping or that there are just too few pieces left to resolve play. I'll either do this visually or by calling it a tie if the same state is repeated 2 or 3 times.
For your reporting, you can do that too.
That's a good point that you're often unable to take advantage of suboptimal play under minimax.
|
| Erik
|
91
|
 |
|
05-16-2007 04:44 PM ET (US)
|
|
Edited by author 05-16-2007 04:46 PM
I'm getting an infinite loop. Player R: minimaxSolver Player B: randomMoves solver
Board State: Shown below, it is B's turn.
| | | | | | | | | | | | | | | | | | | | | | | | | | | |B| | | | | | | | | | | | | | | | | | | R| | | | | | | | | | | | | | | |
Optimal moves would render this a tie so R is never detecting a better position to move and alternates between the position it is in and a bottom-right diagonal move indefinitely.
B is moving randomly but since R is assuming B is playing optimally, it'll never capitalize on B's future possible dumb moves and stays in the same two positions forever from which it can never capture B's last piece.
Are we expected to detect such situations and just call it a tie?
|
mhtong
|
90
|
 |
|
05-15-2007 06:02 PM ET (US)
|
|
Edited by author 05-16-2007 02:04 AM
Fixed, and with my default flags changed so it shouldn't happen again. And no, wasn't *quite* up to date (wrong Player there), so you may want to snag again.
Oh, and even more recently small modification to Game to avoid an off-by-one error on the #of accesses.
|
| Kei Shun Ma
|
89
|
 |
|
05-15-2007 04:31 PM ET (US)
|
|
Edited by author 05-15-2007 04:32 PM
Matt, the new version of current.tar is not allowed to be downloaded, could you fix it? (I copied the individual java files directly from the link http://www.cse.ucsd.edu/classes/sp07/cse150/pa3/ , but I am not sure it is the newest version or not)
|
mhtong
|
88
|
 |
|
05-15-2007 04:23 PM ET (US)
|
|
Erik,
Important question! The basic idea is that the initial board forms the root Node of your search tree. You call expand on the board you receive to find all the Boards reachable in one move, forming the first layer of your search tree. You then select a node to expand, add the result to your tree, etc.
|
mhtong
|
87
|
 |
|
05-15-2007 04:17 PM ET (US)
|
|
You all should have gotten an email from me on Sunday. If you didn't, or if the email where you received it isn't your preferred email, LET ME KNOW. Gary said a good chunk of you said you hadn't seen the project yet.... But I've been getting enough questions, I *know* some of you saw my email.
Also, a reminder that you're responsible for reading all emails from Gary or myself and for content of this board - quite a few people made mistakes on the HW that they couldn't have made if they'd been reading this board.
|
mhtong
|
86
|
 |
|
05-15-2007 04:13 PM ET (US)
|
|
Fairly significant code change, please refresh your copies!
* Added getThreats(Board b), which lets you see what pieces COULD be taken the next turn * Fixed bug for jumping * Mildly increased error checking
|
| Erik Peterson
|
85
|
 |
|
05-15-2007 08:51 AM ET (US)
|
|
so the expand function is used to peek at all the known possible moves right? I'm a little confused if we are allowed to expand once, then create nodes to search through, or we reuse this expand function as part of our search so that you track how deep we search etc... thanks Matt
|
| Erik Peterson
|
84
|
 |
|
05-14-2007 06:51 PM ET (US)
|
|
Edited by author 05-14-2007 07:13 PM
Matt, the main CSE 150 page doesn't link to the pa3 page fyi.
|
| Erik Peterson
|
83
|
 |
|
05-14-2007 06:04 PM ET (US)
|
|
If someone wants to partner up for this lab 3, email me at erikpeters@gmail.com
thank you
|
mhtong
|
82
|
 |
|
05-14-2007 07:08 AM ET (US)
|
|
Minor tweaks to Player class.
|
mhtong
|
81
|
 |
|
05-09-2007 02:20 AM ET (US)
|
|
Josh,
Chapters 1-9 and lectures up to last Thurs.
|
| Josh Rose
|
80
|
 |
|
05-09-2007 01:50 AM ET (US)
|
|
What section in the book will the midterm cover up to? Thanks in advance.
|
mhtong
|
79
|
 |
|
05-05-2007 10:01 PM ET (US)
|
|
The class notes weren't completely linked in. I tossed in a link to their directory to the web page, so you should be able to get to them.
|
mhtong
|
78
|
 |
|
05-04-2007 02:52 PM ET (US)
|
|
Yeah, rebooted at 8am. By my watch, people still have ~8 minutes.
|
| Kei Shun Ma
|
77
|
 |
|
05-04-2007 11:30 AM ET (US)
|
|
Edited by author 05-04-2007 11:31 AM
yep.... its just up. It was still down around 7:30am this morning... so we can hand in our project at 11:59:59 pm again?
|
| David Robles
|
76
|
 |
|
05-04-2007 11:11 AM ET (US)
|
|
ieng6's 2 compute servers were down last night so nobody could ssh into them. They are now up and running again. =)
|
mhtong
|
75
|
 |
|
05-04-2007 01:54 AM ET (US)
|
|
Edited by author 05-04-2007 02:24 AM
Should have just gotten an email about this. As long as your project is submitted by noon tomorrow it'll be ok.
We're still investigating the problem, since both Gary and I can log in fine...
|
| TBIRD
|
74
|
 |
|
05-04-2007 01:53 AM ET (US)
|
|
IENG6 IS BROKEN.
|
| piperFloyd
|
73
|
 |
|
05-04-2007 01:39 AM ET (US)
|
|
Edited by author 05-04-2007 01:39 AM
Yeah, unable to login to ieng6 and turn in. Now what?
|
| Hwy9Nightkid
|
72
|
 |
|
05-04-2007 01:12 AM ET (US)
|
|
is everyone not able to login, I can't get it at all to test or turnin
|
| Kei Shun Ma
|
71
|
 |
|
05-04-2007 12:18 AM ET (US)
|
|
Yep me too.... In the past several hours I can typed in password and then it frozed and refused to go to the welcome screen.... however now it completely refuse to connect to the server....
|
Stephen Boyd
|
70
|
 |
|
05-04-2007 12:13 AM ET (US)
|
|
I can't login in either.. but the error message has changed now to:
ssh_exchange_identification: Connection closed by remote host
so maybe someone is fixing it?
|
mhtong
|
69
|
 |
|
05-03-2007 11:34 PM ET (US)
|
|
Hmmm... I can log in fine from home currently... Anyone else having problems?
|
| Kei Shun Ma
|
68
|
 |
|
05-03-2007 11:01 PM ET (US)
|
|
Edited by author 05-03-2007 11:16 PM
I found that I cannot connect to the ieng6.ucsd.edu suddenly at home.... I have been waiting for an hour but the connection still doesn't come back yet... Did anyone know what's happened?
(ps. I used SSH to connect to ieng6.ucsd.edu, I have tried both my laptop and desktop and rebooted several times and reconnect the internet, but nothing help... however I can go to all other website without any problem (including ucsd.edu, cse.ucsd.edu, and acs email at ieng6 and ieng9)
I tried telnet and ftp problem too... but still no use...
Also I can successively login to ieng9... but not ieng6 of our server...
|
mhtong
|
67
|
 |
|
05-03-2007 08:16 PM ET (US)
|
|
Deleted by author 05-03-2007 08:26 PM
|
mhtong
|
66
|
 |
|
05-03-2007 06:16 PM ET (US)
|
|
Erik,
Probably no study guide per se. But my section next week will be prepping for the midterm (by request). And Gary mentioned to me he hopes to hold a review section as well (stay tuned for details).
The midterm covers up to the first part of today's lecture, corresponding to chapters 1-9 in the text.
Yes, in class May 10. You're allowed one cheat cheat sheet (standard 8.5"x11", single side, handwritten).
|
mhtong
|
65
|
 |
|
05-03-2007 06:07 PM ET (US)
|
|
Anon,
No. And it wasn't extended.
|
mhtong
|
64
|
 |
|
05-03-2007 06:04 PM ET (US)
|
|
Edited by author 05-03-2007 06:25 PM
I know it was announced in class, but for turning in the paper copies of your reports Gary said to bring them by his office hours. (Remember to turn in a pdf tonight as well, tho.)
(If for some reason this is a problem, please email me)
|
mhtong
|
63
|
 |
|
05-03-2007 06:02 PM ET (US)
|
|
|