Wednesday, July 29, 2015
finalization
I think thats it. I have had fun here at Clemson. I have to add some other little stuff to the presentation and will be working on another paper but I am going home.
plication
... its a word, look it up... So I wanted to write a letter to a friend, but I didn't have a letter, so I wrote the letter and thought i could try to make one. so I did, and It fits the letter really well. Look at the pictures
line up letter to the center of paper
fold edges over letter
put letter on bottom of paper and fold to make crease.
open paper and make triangle fold so that the lips above the line are close and the lips below open
fold paper closed with letter inside the closed lips.
close open lips on back side.
fold bottom of paper up over the lips on the backside, a flap should remain
fold flap of paper into pockets.
you have an origami envelop customized for your letter.
This works best if letter is thinner then actual envelop
inculcation
So I have been using some cool programs like screen and ... um you know how when some one asked you what you do and then you instantaneously forget everything you do *_*... &. Im going to lay out a small description of them and some ways to use them. these are for terminals
Screen-----
allows for a user to have multiple screens in one terminal, and when terminal is closed no program progression is lost. I all ready did a small description earlier... look for it.
&---
allows for a program to be done in the background. to use just follow the command up with & and your done.
bg---
sends thing to background
fg -------
brings thing from the background
ctrl+z -------
stops program
git -----
git is like svn... kinda. its a repository.... not to be confused with respiratory.... git has some follow up programs.
---add
adds file to repository wait list
---help
shows all the stuff git can do
---commit
ensures stuff in wait list is going to go to repository
---clone
copies repository to local machine
---push
pushes all files on wait list to repository
--pull
brings new files into local directory
there's others but I used these the most.
Screen-----
allows for a user to have multiple screens in one terminal, and when terminal is closed no program progression is lost. I all ready did a small description earlier... look for it.
&---
allows for a program to be done in the background. to use just follow the command up with & and your done.
bg---
sends thing to background
fg -------
brings thing from the background
ctrl+z -------
stops program
git -----
git is like svn... kinda. its a repository.... not to be confused with respiratory.... git has some follow up programs.
---add
adds file to repository wait list
---help
shows all the stuff git can do
---commit
ensures stuff in wait list is going to go to repository
---clone
copies repository to local machine
---push
pushes all files on wait list to repository
--pull
brings new files into local directory
there's others but I used these the most.
documentation
This is sort of a catch up post. On Monday, the paper was being finalized.. fixing all the pictures and sorting to find mistakes.... I had some trouble with compiling that paper with latex. I used a online editor called overleaf, and I was great until the compiler timed out, then I tried a offline compiler that I downloaded... didn't work... I tried another offline program plug in to eclipse... didn't work. Then I tried a different online editor.... nadda . So Dr Remy did some magic and now it compiles nicely. On Tuesday I asked Peter and another guy who works in the lab...Brandon... to help me clean up my UI. It wasn't to bad. To run it the user needs some sort of background knowledge so I made sure the read-me was up and "nice". Today is going to be some backlog blog posts and two classes to help get around for the GA. they seem small so no biggy. Then at thing at 12 so Ill go. And after that, that's it. Tomorrow I will do a final presentation and be off to El Paso.
Thursday, July 23, 2015
teleportation
well more like really fast transportation but... Last night i was able to run 21 runs from clemson to actual utah. It was quit interesting that I was able to run 21 runs back to back. Anyway I was able to chart the data and got some interesting results. these results wont make sense with out context though. The network runs from last week where also charted... those pics should be a bit lower or a post back... Those depicted the best individuals ran from joey to joey and joey to clemson Utah. The hypothosis was that a good individual will be good... in relation to the others of that population... regardless of the topology that the individual is ran on. these new charts which are the same individuals ran in actual Utah support that .... lookee.
I know you can't see anything. All the fitness where really bad. The highest fitness was like 730. out of 15000. But take into consideration how hard it is to balance an egg on a spoon, its not that hard, but now make that spoon a couple to hundred miles long and the story is different. I redid the chart with so that the highest y value would be 1000 and got a better picture.
these are the same just with different zooms... i guess is the word... But the picture is quite similar to that of the network run and the local run.
Tuesday, July 21, 2015
accentuation
...light out... I spent the morning trying to figure out a way to single out the fitnesses of the most fit of the first generation using python. Doing so will answer some questions...like how good can one individual be? or what effect does the topology that the system is run on have on the same individuals.... Because the way my program is set up, so long as no files have been deleted all runs will start off with the same first generation... in one way or another, if the user chooses different seeded rate then the numbers will shift, but for all the experiment all the parameters where the same except for the mutation rate... Because of this all the runs have the exact same first generation. Except for the fitnesses all the logs look like the first generation has been copied and pasted. The program was kinda hard for me. In the end python was smaller, only like 43 lines of code and the first half was just imports. Arrays and indices are a little complex for me to use fluidly right now but im getting there. Anyway I made charts of 2 different typologies and the results are interesting.. to me at least .
The "Joey to Joey" plots show the same trend. the first box... actually both one and two have the same look to them, so does three... There is little difference in either "joey to joey", this make sense because it is the same individuals on the same topology. But in terms of meaning the mean fitness is really close. There are bound to be stragglers but the fitness tends to be the same... or at least in the same area. The trend can be seen when comparing both "Joey to 'Utah'". But when it comes to comparing JTJ... Joey to joey... and JTU... joey to utah... there is a difference. In JTU all the boxes are notably smaller then there correspondents in JTJ, meaning that across the internet the fitness of an individual is more likely to be close to the true fitness.
Joey to Joey |
Joey to Joey |
Joey to Utah |
Joey to Utah |
telecommunication
I've been slacking, so this post will be half friday, the weekend and monday.
Friday---------------------
I was able to make my program speak to me...
Whenever the program has more then 10% defaults... like 0.0 or .1928 etc... my program will send me this txt... it can also send emails...
there's still some problems but those are being fixed, for example the user need to input the phone number in a form of an email, and the system cant send the email until it is finished running, but i have some ideas of how to go around that.
Weekend--------------------------------
During the weekend I finished the run with a mutation rate of .15. I dont think i mentioned this.
backtrack ----
there was a problem with the Utah run so the internet run was moved to a closer network that had the same topology of Utah. I ran a set of simulation but in .15 mutation. Then there was the problem of I didn't have a .15 mutation run from joey to joey or a .1 mutation run from joey to "Utah", so that is what was being done.
----
So that was the weekend. just getting runs done and stuff. One point that I am happy about is that with the net catching all the defaults in place I dont have to go over the log files to make sure the run didn't collapse.... less work .. Laziness Prevails.
Monday---------------------
on Monday I had to finish one last little set of runs and bring the data together. There was an interesting trend. ...Looky
mutation rate 1 joey to joey |
mutation rate .1 joey to "Utah" |
mutation rate .15 joey to joey |
mutation rate .15 joey to "Utah" |
both of these charts show that when using the internet as a medium the simulation have a higher amount of good individuals. One of the papers I read written by Zach McNellis and Dr. Remy suggested that not enough noise and the performance was poor, but enough noise and the performance was good. Like the Goldilocks zone... kinda anyway... Over the internet there is noise, point blank so the program works with that. from joey to joey, if someone runs something then the program freaks out and performance drops.
Wednesday, July 15, 2015
acquisition
Right now as of 2:50, I am both happy and tired. I was able to finish my net for catching defaults. To do so I needed to make my own exception, and a new class to hold all the defaults that the system has. I don't know all the defaults and as time went on I discovered new defaults and learned others where not. So the class that holds the defaults is dynamic. the one thing that I'm really happy about is that i was able to get the system to send a message when something is caught. If a person where to run using Presentor... is was changed from PresentorSlim around version 2... then if the system gets too many defaults then it stops, that's it. But if a person used GenAlgo... which is getting better... then GenAlgo will not only stop the system, the program will also print out a statement that the program stopped on the terminal but also send out an email or text message. Its not what i wanted exactly but the job gets done. The one problem is that this makes GenAlgo platform dependent and can only send the message out through a Linux based system or Ubuntu... which is kinda the same but anyway... I'm happy with the results. I used a test directory so I could mess with code and not have to worry so now all i have to do is transfer over the files...
Tuesday, July 14, 2015
disconnection
Yesterday was a two part work. Some of the runs where corrupted so the data was skewed. These runs need to be redone... that is being worked on... I had this though before abut it didn't seem pertinent so it sat on the top self. But with collapse runs being passed through its important... at the very least convenient.... So I started constructing a net that sorts through the generations and if more then 10% of the population is a default then the system stops and a text is sent from the system to alert someone...The first part is done and installed, but the second part is still in the works.
The other part of yesterday was starting a run in "Utah"...which is a way of saying a network just like Utah in Clemson... For some reason whenever a manual fitness... the most basic form of fitness test... the value returned is zero, this is followed by the port being used to evaluate hitting an recursion error and crashing. I ran 5 simulations yesterday in the early afternoon and got no problems. I ran later in the day and all of the outcomes where defaults... either timeout or 0.0. So now I'm just continuing with the net so this doesn't happen.
Friday, July 10, 2015
discombobulation
So I'm using latex for my paper and for some reason I cant get the references to work out for me. I didn't have a latex editor so I used overleaf. There's some problems with it but for the most part they are just a little unuser friendly. So i downloaded texmaker and I dont know how to use it but im going to toy with it.
henicosaiconization
... okay, so it might seam like im grasping for words here but if im correct that is a real word. Using the prefix hen-, which is one, and icosa-, which is 20. i get 21, these are Greek . using the icon root word i have picture. and -ization is the act of making. so all together i get the act of making 21 pictures/images, if im using the laws of English correctly... Well I made a script that plotted all the finesses for each simulation. Here is the plots for mutation rate of one... idk why but when i run this script on joey i get this weird outcome. Some have a weird kind of sine wave flow to them, and others are strait forward. the top one is the chart with all of the following in one. This top one show that even though the average growth levels off at around 25 generations, the system still explores. The other charts shows that each time is a different case but for the most part the system looks around.
manifestation
following this post will be others.
one will be some of the charts that where made
another will be some problems I had/having with latex/bibtex
and this one will be about today
so... uh oh, the following is an email
collaboration computation integration discombobulation frustration
This problem is being worked on by the both of us. I am trying to make my program more user friendly, so thats on the agenda.
one will be some of the charts that where made
another will be some problems I had/having with latex/bibtex
and this one will be about today
so... uh oh, the following is an email
collaboration computation integration discombobulation frustration
As of now the genetic algorithm is ready for Peters program, the problem is that the system peters is using does not have any function for a feed back. The target zones are hard coded values, and the python back end cannot communicate those values back to the Ga. Peter is working of the issue, the change would allow for feed back, but its in the python.
Wednesday, July 8, 2015
quadrilateralization
With all the data collected, I now need to make charts and stuff to understand what the data is saying. I have already made a python script that could make a box and whiskers plot given a file, so all I need/needed to do was to get all the log files fitness. I thought i could do this in java, but i know so little of python that I would give it a try. So far I have been able to get plots of each simulation. Now i need to get the plot that represents all the generation of each simulation... so like superimpose all of the simulations into one file. I also want to make it a one stop so I dont have to call anything else. The challenge is that I have to add one array to the end of another array... I dont know how to do this... I think i can just call append, but I... well really i just have to toy with it...
Monday, July 6, 2015
pixelization
Friday, July 3, 2015
elation
finally. all 21 samples of all 10 mutation rates is complete. now I just have to averege out the data and plot it. yah. and it only took .....emm well im done any how.
Ps I have screen shots of computers i was using but its on the macs in the office...and its raining so i will get them later...
Ps I have screen shots of computers i was using but its on the macs in the office...and its raining so i will get them later...
Thursday, July 2, 2015
perpetuation
right now it is about 12:00 and I still have not been able to get solid good simulation. Starting at 10 in the morning I was just running the computers. after every run I would reset the evals and ballPlates. The problem is that after x amount of time...x being some number based on the machines feelings... the runs would have crash...meaning that all the finesses would be either 0.0 or .1928... in some cases when I would start all 10 runs all would fail. This is what my day consisted of. running resetting, waiting, evaluating, sorting, deleting and repeating. In many cases only one run would come out with out more then 10 % collapse per generation. I would not it was based on the mutation rate...more of the machines that I was using. I found that the simulations on joey25 and up would last. my guess is that they are used less then the rest so they last longer. In any case I'm going to leave the runs now going and check in the morning. up to this point I have .1-.8 and I'm just waiting on .99 and .9.
Ps I used .99 because my GenAlgo will not take any mutation rate out of 0-1 so i though .99 would be really close to 1
Ps I used .99 because my GenAlgo will not take any mutation rate out of 0-1 so i though .99 would be really close to 1
Wednesday, July 1, 2015
revitalization
It was discovered that the link to the Utah computer was rejecting my/ Clemson`s request, so that was put on the back burner. Yesterday and today are the same thing. I am running the mutation runs again, but with 40 threads 40 individuals and 50 generations. If all is okay I can sneak in three simulations before the machine starts to pop zeros. The cause is still not found, but there is a correlation to the work done by the machine. But in any case I'm just finishing up the simulation. In my GenAlgo there's some bugs... not stop the presses type but still... but there is also this nifty... yes, yes i did use that word... design that I can rerun a simulation with a simple yes. So all I have to do is restart the evals and the ballPlates... laziness prevails...
Monday, June 29, 2015
globalization
today is/was kinda chill. I ran a 100 by 100 on clemson network, I have to watch it because the threads tend to quit after a bit. I uploaded my code to a repository so if my computer crashes and cloud 9 crashes and clemson crashes then I will still have my code on the internet. After running a small simulation on a computer in utah, or ohio... it`s one of those... I learned that the source of the zeros in my program is two fold. it was found that there was a different type of error message... one that meant that two attempts for the fitness fail...this error message was a fitness with extremely low value. I had just made a method that rounded all the values to the 4th place, so the value was cut off. When the simulation was run, zeros still popped up, but so did the default value that was chaged. So there is potential another zero emitting entity in the system, but as for now Im just happy everything kinda works.
Friday, June 26, 2015
devaluation
Well all the problems seem to be caught to far, but for some reason some individuals no have a fitness of zero... "well whats the problem" you might ask,... well as far as I have seen no individual can have a fitness of zero and the value is usually a sign that the input was syntactically incorrect, and its not. This only happens in some threads and I know this because if I have 100 individuals and 50 threads then there needs to be 2 evaluations, and the number of 0.0 entries is an even number constant with every generation after some point. I looked at the raw data that was begin spit out from the http get request and it match that of the log files. Also I hand ran some individuals and there fitness in a reset machine was actually goodish... not excellent, but not zero. I have also noticed that if a machine has been running for a period then manually running a fitness loops... ie someone is at the door but no one is coming. just for the sake of sake Im going to rerun and If i get similar results then I will go from there. To ensure that Its not some haywire method over righting finesses zero I will refresh the evaluations.
Thursday, June 25, 2015
decolonisation
Well I figured out the reason for half of the zeroPop being zeros, it turns out that when I wrote the code I switched the parameters... oops =1... so that problem was fixed. the reason that it wasn't a problem was that when ran by file the seeded population was .5 instead of .05 so it was half and half. when i would test the Genalgo I would do whatever number I fancied at the time. Well problem fixed and put away. But I now have a different problem. When I run a simulation nearly all the fitness's come back as zero... before you think "well you had a problem with references before, look", This fitness is strait from the horses mouth... ie its printed right after it is returned from the website, my code barely touches it. So I tried running the individual manually and when I do the browser waits and then I get a time out as if the remote evaluation isn't running... you may ask "is it?", yes it its, ye of little faith... the terminal for it is right next to it, waiting for something. When I refresh the browser the terminal stays as is, so this means that the remote eval is not even getting the green light. Ill see whats up, or try another joey, but this is weird.. I have had this problem all day.
variegation
So on Monday, it was discovered that I was using references wrong and altering my programs genetic materiel in a wrong way. So Monday, Tuesday and Wednesday was used to discover and fix that problem. done. I ran a test program and for some reason when I run my program using the UI i made, things go haywire... like half of the population disappears. So today is ensuring that my program reads the popzero file correctly, ensuring that the results for any fitness test is correct, and trying to discover the root cause of the UI malfunction.
I know it is the UI because if I run the file that actually runs everything then everything works fine, but if I run the GenAlgo... which just asks for the parameters then dynamically fills them, I get half the population of Generations zero set to zero.
I know it is the UI because if I run the file that actually runs everything then everything works fine, but if I run the GenAlgo... which just asks for the parameters then dynamically fills them, I get half the population of Generations zero set to zero.
Tuesday, June 23, 2015
disambiguation
upon really fine examination of all the parts of the Ga program I found that two major parts of the program where not quite correct. The effects where seen when the numbers that the computer dealt with and the numbers that where presented in the log files where not matching up. It turns out that when the generation was being read to make the next generation the float arrays that where being altered where for the next generation was them selves being altered. ... ugg references...(-U_0-) Meaning that if a individual had a good fitness, it would share its genetic code, then have that code be altered to a better or worse fitness and the program would not notice. This could have lead to all the default values. I'm going to run the program again and see if It fails again.
Monday, June 22, 2015
misidentification
So there formed a problem with my program, and I didn't catch it because it was in a area that was pretty solid. So my program has the possiblility to die... ie no growth in population fitness. This could happen if the population zero is bad. The problem was that all the runs had the same population zero... or so I thought. I manipulated my popZero class so that its population is not mixed and is in order... this is not a problem, its like when you eat do you start from left to right, up to down bla bla bla... I found that some of the individuals read from the PopZero file spawned genes from nothing. I saw very closely and it turns out that the scanner reads the line, but sometimes forgets what line its on and reads a gene above or below the line. for example the file is
a b c d e f
g h i j k l
m n o p q
and you want the g line. the scanner might be like oh here--- g h i j k l
but it might make a mistake and be like --- g h c d p l
Its hard to read just one line it seams. So this error introduces randomness in the program form the start.
I think its cool... in a ha ha weird way. The thing is now how to fix it. I guess read a line over and over but Ill work it out.
Ps. I was tired of editing the file for the runs so I made a ui that asks for all the params, the runs it itself. and when the run is done it ask if you want a rerun. Work as smart as you have to
P.s.s
I found the problem, turns out that the way I was saving the float arrays where mixing randomly. I still dont know why, but I changed to strings being passed, Ill see how it goes
a b c d e f
g h i j k l
m n o p q
and you want the g line. the scanner might be like oh here--- g h i j k l
but it might make a mistake and be like --- g h c d p l
Its hard to read just one line it seams. So this error introduces randomness in the program form the start.
I think its cool... in a ha ha weird way. The thing is now how to fix it. I guess read a line over and over but Ill work it out.
Ps. I was tired of editing the file for the runs so I made a ui that asks for all the params, the runs it itself. and when the run is done it ask if you want a rerun. Work as smart as you have to
P.s.s
I found the problem, turns out that the way I was saving the float arrays where mixing randomly. I still dont know why, but I changed to strings being passed, Ill see how it goes
Thursday, June 18, 2015
explination
So since Monday i have not been making post. This single post will encompass all the events up to this point...
---------------------------------------Monday------------------------------------- (^_^)
Ran simulations for point .6-.8 mutation rates on 20 threads. Also tested out continue class, all done on either imp or hornet... both are an 8 bit so the results could be comparable.
--------------------------------------Tuesday--------------------------------------(n_n)
The continue class has a bug, I knew because I put it there... it had a good property... all I need to do is find a way to save the property but not the bug.
The test results were coming in but all the results from hornet where 0.0 or -0.0. nearly all the results from imp where 1.0E-4. Dr. Remy and I walked through what could be happening and ran a another test with, to test the machine, so the same run was ran on joey, imp and hornet. And I was to manually run the test again on joey.
------------------------------------Wednesday-------------------------------------(-_-)
Results came in and hornet for what-ever reason only returns 0.0s, imp works for about 1 generation and the finesses return a default value. joey was the only one that performed okay. So I ran .6-.8 again on joey, .6 and .7 I used 10 threads but for .8 i used 20... just to see if it was a work load thing.
later that day I came back and all where running. .8 had a weird pattern where everything was okay but the second to last 10 finesses in the entire generation was a time out default, in each generation. I kept it going to see the effects,
----------------------------------Thursday-today----------------------------------(U_U)
for some reason, there is timeout values popping up here and there in every run. in the 20 threads the time out happens in the third run. in the 10 threads time out happens in the fourth run. This means that I will have to do some alterations to the code to allow for a longer wait time, or run the evaluations with 10 threads which kinda defeats the purpose of a quick evaluation. Anyway Im just running the evals in small batches to see if the results are good
---------------------------------------Monday------------------------------------- (^_^)
Ran simulations for point .6-.8 mutation rates on 20 threads. Also tested out continue class, all done on either imp or hornet... both are an 8 bit so the results could be comparable.
--------------------------------------Tuesday--------------------------------------(n_n)
The continue class has a bug, I knew because I put it there... it had a good property... all I need to do is find a way to save the property but not the bug.
The test results were coming in but all the results from hornet where 0.0 or -0.0. nearly all the results from imp where 1.0E-4. Dr. Remy and I walked through what could be happening and ran a another test with, to test the machine, so the same run was ran on joey, imp and hornet. And I was to manually run the test again on joey.
------------------------------------Wednesday-------------------------------------(-_-)
Results came in and hornet for what-ever reason only returns 0.0s, imp works for about 1 generation and the finesses return a default value. joey was the only one that performed okay. So I ran .6-.8 again on joey, .6 and .7 I used 10 threads but for .8 i used 20... just to see if it was a work load thing.
later that day I came back and all where running. .8 had a weird pattern where everything was okay but the second to last 10 finesses in the entire generation was a time out default, in each generation. I kept it going to see the effects,
----------------------------------Thursday-today----------------------------------(U_U)
for some reason, there is timeout values popping up here and there in every run. in the 20 threads the time out happens in the third run. in the 10 threads time out happens in the fourth run. This means that I will have to do some alterations to the code to allow for a longer wait time, or run the evaluations with 10 threads which kinda defeats the purpose of a quick evaluation. Anyway Im just running the evals in small batches to see if the results are good
Monday, June 15, 2015
guesstimation
Right now Im running/going to rerun 20 iterations of GA with mutation rate of .6, .7, and .8. There was only one successful run of these so not much data will have to do to waste. If these run dont snag on anything I dont really know what to expect from the data. From what I have seen I would think that the .6 would have one of the higher averages and maximum finesses. Of the runs that completed, it looks like around 50% mutation rate is a point where fitness peaks and then falls.
This could be speculation, I have not done as many iterations as would have been appropriate, It would be quite interesting to see that final charts for this experiment. Some papers that I have read said that a large population in relation to mutation leaves a generation of better configuration, so much fascination...( /\ ./\) on a roll...anyway, some papers said that a smaller mutation rate would be good with a high population.. high meaning 16 , but this also meant a smaller chance for finding a good solution. With the parameters like 100 population and generation then it could also be that the mutation rate might level off at some point.
This could be speculation, I have not done as many iterations as would have been appropriate, It would be quite interesting to see that final charts for this experiment. Some papers that I have read said that a large population in relation to mutation leaves a generation of better configuration, so much fascination...( /\ ./\) on a roll...anyway, some papers said that a smaller mutation rate would be good with a high population.. high meaning 16 , but this also meant a smaller chance for finding a good solution. With the parameters like 100 population and generation then it could also be that the mutation rate might level off at some point.
Saturday, June 13, 2015
synchronization
I was able to finally complete that classes that enables a run to be continued if it is interrupted. Its not much but I was able to successfully run this class that started a run from start to finish and to continue where the run left off. If this program work on large scale all the data that was received before can be put to use, the only thing is that a header file will have to be made for each run, but that wont be much of a problem.
Thursday, June 11, 2015
alleviation
Finally the problem might have been caught... might. Dr.Remy and I ran a sample run with 60 threads and saw that the system average load was increasing to a max point of 8 or so. So the computation was stopped... by me so no prob... and reran the program but with 20 threads instead of 60. The average load didn't go past 5.. This was good. So the prevailing theory is that when the computer was running with 40+ threads, it was working as fast as it could on this one process. But when another program was run, by someone else on campus, the computer didn't could not think of what to do...so it stopped. When 60,70, and 100 threads where used the computer couldn't handle it so it would take longer to complete the task, or just stop altogether. So as of now, I'm going to work on the continuation class, and rerun all the mutations again but using 20 threads.
devastation
The problem still eludes me, but for some reason there is a snag in the program... at least in one of the programs being used. I thought that the problem was the readTimeout I added, turns out that this lead to another problem. So as of now the reason that my computations stop was because of X, a thread would wait for some data that did not come and would halt the program. this was "fixed" by adding a readTimeout, if the connection didn't give a value then it would return some value...0.19283746... this lead to nearly all the outcomes being some default value, either on my programs end or on the evaluation end. So Dr.Remy and I worked through what might be happening while another run was being processed. Not much could be done with out the data from this run....It came in, this run was time based so the data is still valid... I had a looked at the end results for the computations and it looks like the default value doesn't show up until some point and then is a present throughout the rest of the evolutionary process...(>_<)
Tuesday, June 9, 2015
deviation
I don`t quite know the exact reason why, but for some reason my program stops running after a while. I know where the problem lies, but it is more of an effect then the reason. So my program sends out threads to have a individual evaluated using different ports. Then when the threads return...all of them... then the program continues. The problem is that when a call is sent to evaluate a individual the call is sent to another program...called lets say eval.... Eval then call another program... lets say called show..., show then returns and eval returns with a number. My problem is that if a snag appears on eval to show, or show to eval, my program just sits idle. I added a connection time out but didn't realize that this did not count for actual time for the connection. I added a readTimeout and Im going to see if this works.
I am also making a class that will be able to work with the bits of data that a unfinished run leaves. As the run goes on each generation is saved along with its fitness. All I need to do is make a class that with the base name given, reads the left over file and continues where that calculation left off. Im running into a snag thou... well not a snag more of a moral memory decision . The file could potentially be very large and it would do to read the file over and over for each need. I don`t know of another easy way that I could read the file so that I know which generation was the last, with out altering the file in questions syntax, without reading the file once, then again to get the values of the last done generation, and then once more to adequately read all the fitness, sort them into the appropriate generation and also find the max and average of each generation. At least not all in one single method or function. But im working on it, as of now im just going to try to run an evaluation just to see if the readTimeout worked.
I am also making a class that will be able to work with the bits of data that a unfinished run leaves. As the run goes on each generation is saved along with its fitness. All I need to do is make a class that with the base name given, reads the left over file and continues where that calculation left off. Im running into a snag thou... well not a snag more of a moral memory decision . The file could potentially be very large and it would do to read the file over and over for each need. I don`t know of another easy way that I could read the file so that I know which generation was the last, with out altering the file in questions syntax, without reading the file once, then again to get the values of the last done generation, and then once more to adequately read all the fitness, sort them into the appropriate generation and also find the max and average of each generation. At least not all in one single method or function. But im working on it, as of now im just going to try to run an evaluation just to see if the readTimeout worked.
education
I've been using a nifty little program the past week and I must say, its very useful. When using a ssh terminal, any program that is running is stopped when the ssh terminal closes. screen allows you to leave the terminal and come back to it later. To use screen,,, type screen... yup, that's it. there's some other commands to get through it like ctrl+a d detaches from the port, ctrl+a c makes a new screen, a screen -ls shows you the name of all the screens and screen -r <name> attaches back to the screen. I'm also using top. It allows me to see who is using what of the computer. Its all little tricks and stuff. Top is useful, because if someone is using that computer with a cpu intensive task then the program to be run might become slow.
Sunday, June 7, 2015
actualization
This is just a short fyi post... I was able to make box and whisker plots with the data given from the last run. now all I need to do is call the program, the text file with the data and the name I want to save the chart as. this is taco.png mark two
I dont quite yet know how to change add words and stuff but this is the max values of the run, the x axis is the mutation rate, instead of 1 think of .1 mutation.
Friday, June 5, 2015
continuation
This morning, I tried my hand with python... i think i like it (n.n). I have made a plot off a run I made yesterday. lookie
I know its not much, but I was able to make a script to do this... Im ecstatic... The script takes in two parameters, for now, the file to be saved and the name of the file. Right now you are looking at taco.png. I'm now going to tackle making the chart more useful, the file i gave it only had one column and the larger runs have more, so this is going to be the focus of the rest of the day.
Ps, turns out that one of the runs I started last night was still chugging along so this morning I saw and I now have more data for the effects of mutation on the ga evolution.
assimilation
yesterday wasn't so grand, just some house keeping. The simulation ran and the data was collected just fine. As of now Im trying to learn python so that a script will make a chart of the data instead of using excel. As I was reading up on python I ran some other simulations, I used 2 sets of computers and I think I found a bug of sorts. One of the ball and plate stopped running, so I look ate the computer that was handling the evaluations and found that that computer stopped as well. The problem wasn't with the two so I can assume that it is a problem with the actual code. I think that I know where it is. Like I said...or it think i said it... the when the program is evaluating a generation different threads go and do the computations, then report to one method that reports when all the threads have returned, if one thread is stuck then the whole thing waits. But I don't see how this would happen because the Thread is has a time limit, and if it is met then the thread returns a default value. unless I commented it out hunting down another bug. I`ll check but It seems that is not it. Other then that there is not many while loops in the system, most are for so there would be no reason for a looping system.
I don't know if this is an actual problem, I tried it with the first set and didn't have this problem, It only happened when I tried to run both simulation at the same time. I made sure that there wasn't any overlap in machines so I don't know what could have caused the problem.
I don't know if this is an actual problem, I tried it with the first set and didn't have this problem, It only happened when I tried to run both simulation at the same time. I made sure that there wasn't any overlap in machines so I don't know what could have caused the problem.
Wednesday, June 3, 2015
vexation
Ug, (-_-)... So this morning I went back to my computer and saw that there was an error, a Java.net.SocketException: connection reset. So I tried again, and got the same thing. It turned out that I was calling computers that were not listening , lesson learned. The bulk of today was just hunting down bugs that seemed to magically appear... more like they just began to be a problem. It went from no floats being stored to no evolutionary growth, to this, and that. I also noticed that the initial population was really bad, like 1.00E-5 bad, this meant that my program wasn't good for really low numbers. the problem was showing up when the elite and fit were being seen, only maybe 2 where classified as good, two a generation does not make. To fix this problem I made the crossover of the fit come back again after the mutation, just to fill the population up to the population size, after the 3 or fourth this is not even used. Once that problem was finished and bow-Tied I was able to run all three programs... the one that evaluates the fitness, the one that draws out the eval, and the genetic algor... and its running as I type. I hope that I will go well. I read generation log file right now and im seeing some 500+ to 4000+. here's what the test look like... there's 20 threads running but i only show four, assuming if the first two and last two run then the rest should be okay
I did find something that might be a problem, if only one for a single generation. Some of the test results are like 7000+, in a population who is mostly 1.blaE-4. I ran these manually and the fitness was .0001bla. So if this proves to be a problem, then I guess i could make a little screen that if a number that is really high passes along, a method will rerun the individual and if another number, say plus or minus 25% is a result then the second will be used, or maybe that average of the two...idk right now.
Compulations
Ps. Yesterday was a bit full closer to the end of the day, I wrote down the blog forgot to publish it
Today was...(U_U) ... I found that my program is fickle, sometimes it runs like a dream, and other times it rises high just to crash an burn. But other then the little bugs and such the program works fine...ish. One problem that I had was that the class that has many threads uses one method to check back with...im using indexes and arrays so i dont have to worry about data contamination... This one method will not let the class be finished until all the threads have finished with there computations. Well one thread would get stuck, leaving my program frozen. I added a request Time out and set the gave the result variable a default value of 0.123456789. also I unknowing suited the program to the first url, and now that i have a second, I have to add some methods that would suit this url. But this one is that actual ball and plate... looky ( ^.^)
Its cool. Right now im running the program and hope it went well.
Monday, June 1, 2015
annexation
I was able to successfully alter my program so that only one generation of individuals is stored in run time and the rest are dynamically added to files. So instead of having at least I *N*G floats being stored all that is being stored is I by float. I also found some bugs in my code that made everything serial instead of concurrent. That was fixed but there was a bit of a bug that came with it, but it was nicely squashed. As of now I'm trying to log into the Clemson computers through a ssh terminal. The problem that im having is that i don't know if there's a deadlock in my code or if the terminal is just slow, but its taking along time for a small data call. Ill just wait. (- .-)
Ps. I went to get some water and the terminal is spitting out data, line by line, so ya the terminal is just slow (~...~)
Ps. I went to get some water and the terminal is spitting out data, line by line, so ya the terminal is just slow (~...~)
Sunday, May 31, 2015
recreation
I looked at my program and saw a bit of a memory issue. The way its set up, there is a data structure that holds a E number of evolution. The evolution have a G number of generations. The generation have I number of individuals, and these individuals have 6 floating point parameters. Meaning that for a given run my program has to hold E*G*I*6. assuming a 32 bit floating point that would be 192*E*I*G.... whaaaaaa(6-6)... so I'm trying to change my interface so that it only holds at most one evolution at a time, or if I can, I will get it to hold only one generation at a time. This will save on a lot of run time data.
verification
Sorry for that latenessness... On Thursday and most of Friday I had a fun-ish time. On Wednesday I ran my program with some large parameters using a cloud ide, and my guess is that just the activation, or calling the program made my poor little computer spazzed and freeze, but no problem. As stated, I could really read the data, so Dr.Remy help me see a pattern, but the data wasn't so clear on the max fitness but se la vie. I made a presentation about it and presented it to Dr.Remy. It was said that more data was needed, so I ran my simulations again with some tweaks to make it easier for me to compile the data... that took a hour (O_U), glad it wasn't my computer... and made a chart for it. That data didn't say much either. But It turns out that the file that i made to hold all the zero population... used for making sure that the test are more equal... had one particular individual that had a fitness that was really high, so the max couldn't really go any higher. But it was cool to run. Heres the presentation.
Wednesday, May 27, 2015
observation
On today's agenda, I made some more minor modification. Now once ran, my program will store the results of the simulation into a directory. This might not sound like much, but once I completed the task of storing a file into a directory... or making the directory if it doesn't exist, then storing it... I reveled in my nerdy accomplishment. Other then that I ran my simulation with very degrees of mutation rates. I made a chart of the outcome, but I dont know how to present the averages and the maxes.
if I average the outcomes...ie maxes and average fitness... then that would show the growth along the generation, and that would erase the value of the different mutation rates.
If I show the averages in a line/scatter graph, and the same for the maxes then this will show a trend, but I don't know if it would get the point across, being the effects of different mutation rates on the evolution of the system.
formalization
Yesterday was fun, I showed my code to my mentor and there were some adjustments to be made. It was just small details that I didn`t catch. It wasn`t hard at all, in fact, the way my program was set up a few new methods and functions finished it.
The only problem that I had was when I was trying to print out the final product... some back ground, as my program runs every generation is stored... The final product was a log file that contained all the information of all the generations in all the iterations and evaluations. My problem was that I wasn't getting the correct output. Instead of seven columns of data going down the screen, I would get 10 rows of data going across the screen. I didn`t know what was going on. After about half an hour of changing and checking... the checking part took the longest. I learned that one of the string I was using to hold all the data wasn't being set to "", so I added a whole seven characters, 1 whole line of code, and everything work perfectly. (& . &) . I still have to run my program on a cloud ide and Im having a bit of trouble, but I`ll work it out.
Monday, May 25, 2015
evaluations
Over the weekend I finished up the Genetic Algorithm implementation, and fine tuned it. On the first runs I was getting really low output, so I tweaked the population generator. At the time I thought it was cheating, but my reasoning was: if I need to build a bridge and I start out with random materials, I know that clouds will not be good, and I know that keeping bricks together with gum will be no good either. Turns out this is called seeding the population, and its a task for this week. ( ^ . ^) I change the method to now spit out random numbers between plus and minus 20 for now.
I made a new class that would automatically run a simulation of N parameters, X amount of time and would present the outcome in Excel friendly format, so all I have to do is copy the file content into a excel doc and output a graph. I ran the program for 20 simulations with 15 generations and I got some cool results. After the about three generations every generation after that just hovers around some number. I think its interesting that all the simulations showed this effect. I only did 20 simulations of 15 generations of 15 individuals because I wanted to get all the bugs out of the code and my computer is.. lets just say it is not top of the line, its good, just not intel good.
I made a new class that would automatically run a simulation of N parameters, X amount of time and would present the outcome in Excel friendly format, so all I have to do is copy the file content into a excel doc and output a graph. I ran the program for 20 simulations with 15 generations and I got some cool results. After the about three generations every generation after that just hovers around some number. I think its interesting that all the simulations showed this effect. I only did 20 simulations of 15 generations of 15 individuals because I wanted to get all the bugs out of the code and my computer is.. lets just say it is not top of the line, its good, just not intel good.
Saturday, May 23, 2015
alterations
As of now I'm finishing up my first genetic algorithm implementation. The actual structure was not hard, it was the small details that drove me up the wall. I had a problem that when I would run the program with vectors and individuals being tested , I would get vectors that were superior to the others in the generation. The problem that I had, well one of them, was that after say three iterations the clones would start to appear. After so many iterations ,I would have nothing but clones.
Part of the Generation Creation in the Iteration process... say that three times... all the individuals in the generation go through a process in which some are mutated. i.e some random variable in the vector is altered in some way.
The other problem that I was running into was that when the program would mutate a vector, every clone of that vector would also change. So these two problems really put a wrench in the cogs for my program. With a generation of clones and every change to one would effect them all, my program didn't have a chance.
Today I altered the structure of the data so that instead of ...ps i`m using java... my a class to hold the vector, its fitness, the time it took to run , bla bla bla, I have a class that just hold arrays of floats and doubles.
As far as the clones, I think when I fixed the problem with the references I fixed the problem with the clones. I have run the program and now I have a different problem, but one that can easily be fixed.
later ( 0 c 0 ) \m/
Part of the Generation Creation in the Iteration process... say that three times... all the individuals in the generation go through a process in which some are mutated. i.e some random variable in the vector is altered in some way.
The other problem that I was running into was that when the program would mutate a vector, every clone of that vector would also change. So these two problems really put a wrench in the cogs for my program. With a generation of clones and every change to one would effect them all, my program didn't have a chance.
Today I altered the structure of the data so that instead of ...ps i`m using java... my a class to hold the vector, its fitness, the time it took to run , bla bla bla, I have a class that just hold arrays of floats and doubles.
As far as the clones, I think when I fixed the problem with the references I fixed the problem with the clones. I have run the program and now I have a different problem, but one that can easily be fixed.
later ( 0 c 0 ) \m/
Wednesday, May 20, 2015
inclinations
I now have some inclination of what I will be doing this summer, or at least part of. The last two days I have done some reading, one of the papers was Evolving Networked Controllers at Scale in the Presence of Noise (ENC), done by another student, Zachary McNellis, and Dr. Sekou Remy, the other three where : Genetic Algorithms in Noisy Environments (GAN) by J.Micheal Fitzpatrick and John J. Grefenstette, Cloud Network Robotics by a whole lot of people (CNR), one being Koji Kamei, and The Effects of Static Fitness Function Upon the Performance of Genetic Algorithms (ESF) by Alexander Grushin. P.S. I'm using three capital notation just to be lazy, as I like to call it locution conservation. With these three papers I have been able to get a much better understanding of what I suspect to be my work this summer. I will be extending the ENC paper which is about the presence of noise in Genetic Algorithms. Let me break down the last sentence.
Genetic Algorithms are algorithms that when presented a set of information, say steps to solve a puzzle, try to give a better set of steps. This I learned with GAN and ENC.
Noise can be seen as..., well the best way I can describe it is with the illustration of a virus. As the genetic algorithm goes along, noise causes the outcome to have unwanted effects, much like a cold.if you have a cold, you cough, have aches, sneeze and go through a whole heap of tissues. Noise in genetic algorithms kinda works in the same way. I pieced this together with all the papers.
The work that I will be doing this summer, I believe, can be summed up in this: "how does the real time control effect the evolution for a genetic algorithm, for better or worst across different types of communication ". As is, the paper I will be extending, the ENC, suggest that if a system has some noise, this is good, but to much noise and this is bad. This is also supported with the articles GAN and ESF.
Genetic Algorithms are algorithms that when presented a set of information, say steps to solve a puzzle, try to give a better set of steps. This I learned with GAN and ENC.
Noise can be seen as..., well the best way I can describe it is with the illustration of a virus. As the genetic algorithm goes along, noise causes the outcome to have unwanted effects, much like a cold.if you have a cold, you cough, have aches, sneeze and go through a whole heap of tissues. Noise in genetic algorithms kinda works in the same way. I pieced this together with all the papers.
The work that I will be doing this summer, I believe, can be summed up in this: "how does the real time control effect the evolution for a genetic algorithm, for better or worst across different types of communication ". As is, the paper I will be extending, the ENC, suggest that if a system has some noise, this is good, but to much noise and this is bad. This is also supported with the articles GAN and ESF.
Sunday, May 17, 2015
initialization
Hello to all.
My name is Lee Curry. I am currently a undergraduate at the University of Texas at El Paso in the field of computer science. This summer, or a good two-thirds of it, will be spent doing research at Clemson University. This blog will be my journal about my time here at Clemson.
My name is Lee Curry. I am currently a undergraduate at the University of Texas at El Paso in the field of computer science. This summer, or a good two-thirds of it, will be spent doing research at Clemson University. This blog will be my journal about my time here at Clemson.
Subscribe to:
Posts (Atom)