Jump to content

alan2here

Senior Members
  • Posts

    641
  • Joined

  • Last visited

Posts posted by alan2here

  1. I heard recently on the BBC about a period of time after trees but before fungi were able to break down wood. Apparently this meant that a lot of carbon ended up stored in the wood of dead trees that wouldn't get broken down, insects became very big during this period too due to the high carbon atmosphere.

     

    Does this mean that there were mountains of wood laying around, trees would die and just lay there? If so is this self balencing due to eventually no light being able to get to the soil below?

  2. I'm interested in new materals with interesting properties.

     

    Recently online Iv'e seen a paint that is transparent when over 27°C and one that is transparent when wet.

     

    It's occured to me that a building painted with three layers of paint that are normal, then thease two paints could appear one color when dry, another in the rain and a 3rd when the weather is hot.

  3. This seems like how 2 + 2 can seem to = 5, ∞^2 or whatever if the algebra is rearranged correctly, but there is always a good reason why it's not valid.

  4. Thanks. I don't understand much of that but what you'r saying is that indeterminate dosn't mean that it cannot be determined. It's instead to do with limits and the such.

  5. 1^∞ ≠ 1?

     

    What, Is this really indeterminate?

     

    1 * 1 * ... * 1 = 1

     

    1 * 1 = 1 = a

    a * 1 = 1 = a

     

    edit: I misunderstood "indeterminate"

  6. Does something like this exist, cheap, maybe 10 or 20 cm cubed on the inside and only slightly larger outside, with a precise temperature control capable of various temperatures including those around (just above and just below) the freezing point of water?

  7. It was made years ago :¬P feels a bit daft now. Wouldn't mind re-shooting with just the most impressive things and include a new rather unique item, and all in a nicer surroundings.

     

    I have some of those. I stick stuff to the fridge with them then my housemates get baffled as to why they can't get them OFF the fridge.

    :¬)

  8. you don't have straight walls to put something against. The curvature would require custom made (expensive) furniture.

     

    I don't like the idea of an earth brick igloo but this is not a valid reason against it. You just end up with some space behind the sofa, like you often get anyway, many people use this space as storage. It can't be that hard to make a bendy skirting board and skirting boards guarentee a gap behind practically everything else anyway, nothing wrong with making this a curved gap, more room for multi-sockets, in extreme cases a standing lamp.

     

    If you want a kitchin and for this to have a fairly standard design then the units could be mounted onto something wooden and have that attached to the inside edge of the building to create a sort of for example octagonal instead of smoothly curved part of the house.

  9. Does the term "random mutation optimization" take into account that programs in the population can die out and others can duplicate in future generations of the populus?

     

    This term then could be a good one. What I'm doing is similar to genetic algorythms but not the same and with programs instead of data. I consider the term genetic programming to be fairly accurate but it's usefull to now have the more accurate term "random mutation optimization".

     

    Brute force would eventually find the best solution\s. This system of evolving would find gradually improved solutions for as long as it's left to run.

     

    I expect to be able to evolve correct solutions in that a program can be evolved to start by outputing the correct integers. The exact solutions of the smallest possible program to achieve this might not ever be found, although close is not bad.

     

    Below are some examples, in these examples I've simplified the way the algorythm computes to plain english.

     

    input: 1, 2, 4, 8

     

    program A outputs 1, 5, 2, 0 and is wrong

    program B outputs 1, 2, 4, 8 by "output 1 then output 2 then output 3 then output 4" and is correct but long

    program C is the best, it outputs 1, 2, 4, 8 which is correct by "start with 1 and repeatedly double and output"

     

    Therefore program C:

    is extremely small

    always produces the correct output

    isn't actually a program like a piace of software, it's just data and is safe to run to produce the output even if it comes from an untrusted source

    and can predict future values although may not always be accurate depending on how often the simplest correct solution is the best

     

    Whats more both programs B and C can be further optimised at a later date with no input from the user.

  10. Initially (unevolved programs) every byte is random.

     

    I don't understand the 2nd question.

     

    I needn't go into mutation is detail but it's based on changing a small number of randomly chosen bytes of the program to random values and\or expanding\contracting the length of the program a byte. The larger the mutation the less likely it is to happen, normally mutation is verry small.

     

    Programs are scored based on how well they match the input series. Values output can still contribute some points if they are wrong by a small amount, but not as many as if they are correct or closer to the target values.

  11. Yes.

     

    To be optimal the start of the series of numbers the program outputs when evaluated should be as close as possible to the input series.

     

    Of lower importance but that when most programs output series starts correctly becomes significant is program length which should be as short as possible.

     

    Have I made it clear what happens inside a program when it runs? The list of instructions in my first post.

  12. 195.3 KB per generation. If I kept all data (which I'm not doing atm and probably won't) then it would still only add another 195.3 KB each generation as you say my population is capped at a maximum size and only the best half go though and are doubled each generation, the other half die out each generation and don't contribute to subsequent ones, thats a linear size over time not exponential.

     

    The source code is here: with-logic.co.uk/a/main.cpp

  13. Thanks :¬)

     

    So, simply you are working on Genetic Programming, so what is the search you are using ? .. ex: Simulated Annealing

    I'm afraid I don't know, there isn't much beyond what I have described as to how it works.

     

     

    and this search is to optimize a Program, where a Program is a set of Instructions, an Instruction is an unsigned 8-bit Integer

     

    Number of Instruction types = 2^8 = 256

    yes

     

     

    Program [math]P = \{ I_1, I_2 .., I_m \}[/math] where [math]m = ?[/math]

     

    So, what is the value of m, is it static, dynamic, or a range of values?

    'm' can change while running (evaluating) the program but the changes won't stick for future generations. It can also change size during mutation between generations. If 'm' ever exceeds 200 then the program stops and scores 0 making it unable to continue to the next generation. Also a program cannot mutate to a larger size than 200.

     

     

    -- is your search linear, exponential, local, or guided ?

    Again I'm not sure what thease terms are.

     

     

    -- what is the size of your buffer, queue, list .. in terms of Max Number of Programs?

    At most and most of the time 1000 programs per generation although this is easily changed.

     

     

    -- do you keep previously processed states (Programs) ? .. so that you don't go over the same one once again, & don't get stuck in loops

    No, between each generation the previous generations programs are lost except those that get mutated.

     

    This is however an intresting idea though that I've considered. While it would cause a huge amount of extra information to be stored it could be stored intelligently. For example where programs mutates back to as it was in a previous generation then that program (state) wouldn't have to be stored twice, even a mutation could just be stored as exactly how and to what program it mutates. There is a lot of potential complexity here but I'm probbably going to keep it simple for now and not do this for now.

     

     

    -- how did you define SELECTION, MERGE, and MUTATION functions, in terms of algorithm?

     

    The programs that scored more than 0 and are in the top half of the scores are selected with at most half the intended population selected. There is no breeding between programs (cross-slicing) it's all just mutation. 2 mutated verstion of each of thease programs are then created and taken forward to the next generation.

     

     

    As we have covered limits a lot, also programs are alloud to run (evaluate) for at most 100 steps.

  14. Giant African Land Snails are really big for snails, and make great pets. I was wondering however especially given how easy they are to look after and breed if breeding for traits such as extra size has been tried?

  15. My program creates many instances of a structure I call a "program" to compare and evolve to create an optimal program for a specified task. It uses integer sequances as inputs and outputs, the goal is to create the simplest program that produces an integer sequance starting with the input sequance.

     

    For example:

     

    Input 2, 4, 6

    Output 2, 4, 6, 8, 10 ...

     

    A program consists of a list of 8bit unsigned integer units. Running a program starts the program at the first unit reading it as an instruction. The instruction may take parameters, thease are the subseqent few units. After the instruction has finished then the program moves on to reading the next instruction, moving forward one unit and if the instruction takes parameters then skipping over them as well. Some instructions change the program but the changes are not perminent, the changes are discarded in the next generation of the program.

     

    The program is written in C++. PM me for source code.

     

    The scoring of programs is hard coded to 0, 1, 2, 3, 4 ... for as long as the number of outputs each program produces.

     

    Having descovered the search space was larger and the programs ran slower that I expected iv'e tried to optimise the program for speed. Although I have still opted for good abstraction instead in places, for example in making the program object robust.

     

    The instructions are currently:

     

    "value" refers to the value of a parameter. "value at absolute" refers to an absolute position in the program (from the start of the program) defined by the value of a parameter. "value at relative" refers to a relative position in the program (from the current position) defined by the value of a parameter. Each time one of thease three elments is mentioned it shows that the instruction takes another parameter that will be read and acted upon and that the programs execution position will move forward that many units after the instruction has been executed.

     

    end

    1 byte absolute goto

    1 byte relative goto

    if then 1 byte absolute goto

    if then 1 byte relative goto

    1 byte 'value at absolute = value'

    1 byte 'value at relative = value'

    1 byte 'value at absolute = value at absolute'

    1 byte 'value at relative = value at relative'

    1 byte 'value at absolute = value at relative'

    1 byte 'value at relative = value at absolute'

    1 byte 'value at absolute = value + value'

    1 byte 'value at relative = value + value'

    1 byte 'value at absolute = value at absolute + value at absolute'

    1 byte 'value at relative = value at relative + value at relative'

    1 byte 'value at absolute = value - value'

    1 byte 'value at relative = value - value'

    1 byte 'value at absolute = value at absolute - value at absolute'

    1 byte 'value at relative = value at relative - value at relative'

    toggle value at absolute - 1 becomes 0, 0 becomes 1

    toggle value at relative

    output value - add the parameters value to the output, increasing the outputs size by 1.

    output value at absolute

    output value at relative

    increase size - increases the size of the program by 1 adding a "0" unit to the end.

     

    It probbably can't be determined if a given unit (8-bit unsigned integer) in the program is an instruction, parameter or both without runing the program or performing a similar amount of computation.

     

    When the programs mutate as part of the evolution process then they mutate a random amount where larger mutations are progressively less likely.

     

    Completely useless programs (that score 0) are not mutated but instead replaced with new random programs, otherwise the programs are duplicated into two mutated coppies of the original for the next generation. At most half the target population count number of programs are chosen to contribute to the next generation, as a result the number of programs during evolution successively through generations starts low and increases up to to the target population count untill the best program is sufficently good to stop the evolution.

  16. Why should the iPhone control the plane?

     

    Just get the camera linked to the phone/tablet/laptop. That's relatively easy I think.

    And then control the plane with its regular controller...

    Yeah. That sounds good too.

  17. It's somewhat disappointing that the dragonfly uses petrol instead of being electric.

     

     

    get a wireless security camera with decent picture quality and a good range that can transmit to your laptop

    Intriguing, and great, thanks. Presumably some software on your laptop wirelessly receives the feed and shows you it on the screen.

     

     

    Be prepared for a lot of crashes until you get the hang of flying it.

    I presume that adding the weight of the camera to the plane hinders stability. Thanks for the info, I would presume that this would be the case.

     

     

    There's a video tutorial on how to make one here

    What, it must be assembled after it has been bought, and this takes 7 to 10 hours! and it's huge! Even if I was going to attempt this it better be indistructable when it comes to crashing.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.