# Learning & Optimization

This topic is 4309 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

## Recommended Posts

A program has access to M inputs and N outputs. It receives its inputs (x1...xM) and must choose its outputs (y1...yN) so that: Σ xi = Σ yi That is, its inputs are entirely redistributed to its outputs. The program then has a "gain" defined as: gain = Σ yi ci Where the coefficients ci depend on the values of ∀j, xj and ∀k, yk. In practice, only the input values are known to the program. However, the program has access to a learning step where the coefficients are revealed after the program has redistributed its input. I need a learning algorithm and a storage system that will allow the program to redistribute its input in a way that optimizes its gain, without knowledge of the coefficients, based only on the input values.

##### Share on other sites
I'm not understanding where the learning needs to occur. Could you give an example of a sample run with 1 value of x, ie. X=2.

What value are you trying to learn to predict? My math notation may be a bit rusty, but so far I see you want the sum of outputs to equal the sum of inputs. That's easy enough. Then the gain = sum of (outputs * coefficient). The coefficient you have also defined.

##### Share on other sites
Consider an input, two outputs, and some experiments that were performed:

X    Y1   Y2  C1   C2      gain1    1    0   0.5  0.5 -> 0.51    1    0   0.1  0.6 -> 0.11    0    1   0.3  1.2 -> 1.20.3  0.1  0.2 0.5  0.5 -> 0.150.3  0.3  0   0.7  0   -> 0.21

What would be the best (Y1,Y2) choice when X = 0.6? (by best, I mean that maximizes the expected gain?)

##### Share on other sites
So c is a funtion of y, and that function is known. And you want to find a function of x that will give you y?

How much can all this be simplified? It looks as though you can get rid of c all together, at which point it should be pretty easy.

*edit: I just looked over your example again and realized that you have two different gains given identical values for x and y. Which means my initial analysis was completely wrong, and I need quite a bit more information about what's going on.

CM

##### Share on other sites
Quote:
 Original post by Conner McCloudSo c is a funtion of y, and that function is known.

Quote:
 Original post by ToohrVykIn practice, only the input values are known to the program.

The relationship between y and c exists (it's not a function, but rather a correlation), but it is not known in general (only on learning sets). The goal of all this is to determine that relationship.

##### Share on other sites
Look at it this way: you're a trader on a stock exchange, you serve M investors and can buy N stocks. You get money from investors, invest it in stocks, and get money from there.

Now, the investors know things that you don't. For instance, investor p might be a steel tycoon, and q might be Arcelor stock, so if you get a lot of money from p, it means the coefficient of q must be high (since the tycoon, familiar with the siderurgical area, knows it's a good time to invest money). But you don't know this: you don't know what the stocks are and who the investors are.

It's up to you to determine the correlation between who invests in you (value of x), what you invest in each stock (value of y) and the gain from each stock (value of c) in order to maximize your expected gain.

##### Share on other sites
Quote:
 Original post by ToohrVykThe relationship between y and c exists (it's not a function, but rather a correlation), but it is not known in general (only on learning sets). The goal of all this is to determine that relationship.

But you have a step that gives you the relationship, based on that training data, right? So you figure out how y and c relate, and that turns the whole thing into a pretty straight forward optimization problem. I'm pretty sure linear programming was designed to solve just this sort of problem.

CM

##### Share on other sites
Quote:
Original post by Conner McCloud
Quote:
 Original post by ToohrVykThe relationship between y and c exists (it's not a function, but rather a correlation), but it is not known in general (only on learning sets). The goal of all this is to determine that relationship.

But you have a step that gives you the relationship, based on that training data, right?

See the emphasized text.

##### Share on other sites
This is all very confusing information, your explanation with the investors seemed to be alittle bit funny too. As you serve the investors, but they seem to know when to do your job of serving them? Or are you a company, that is looking at investors placing money into you and the relation between this.

Anyways, not that any of that really matters I just wanted to say that it looks much like your trying to do some computer AI here. Perhaps if you take a look into Fuzzy Logic it might give you some help as it sounds much like the theories behind fuzzy logic. I myself, can not answer the question as I don't have that much experience yet but hopefully that could point you in the right direction.

I'd also recommend asking this question in the computer AI forum as like I said to me it looks much like that is what you would like. Neural Networking might also help in this task since you are looking for a learning algorithm.

Good Luck!

##### Share on other sites
Quote:
 Original post by ToohrVykHowever, the program has access to a learning step where the coefficients are revealed after the program has redistributed its input.

Do you have a bunch of training data, or don't you? If you do, then figure out some relationship between y and c, and move forward from there. If you don't, can you create some? Just pick ys at random and see what comes from it. If you can't even do that, then just ignore c all together, and treat it like a typical optimization problem involving a single variable, y.

CM

##### Share on other sites
Quote:
 Original post by Conner McCloudDo you have a bunch of training data, or don't you? If you do, then figure out some relationship between y and c, and move forward from there.

Let's assume for a moment that I have access to a large amount of training data. How can I extract the relationship between y (and x) and c from that training data?

##### Share on other sites
Quote:
 Original post by Surg AKA KunarkNeural Networking might also help in this task since you are looking for a learning algorithm.

My end goal is to have a Trader Networking equivalent to Neural Networking, by taking a local optimization algorithm and simplifying it, to accelerate the learning speed. Market efficiency, and all that.

##### Share on other sites
Quote:
Original post by ToohrVyk
Quote:
 Original post by Conner McCloudDo you have a bunch of training data, or don't you? If you do, then figure out some relationship between y and c, and move forward from there.

Let's assume for a moment that I have access to a large amount of training data. How can I extract the relationship between y (and x) and c from that training data?

There are any number of ways. Depending on the complexity of the relationship, a simple linear fit may be sufficient, or a more complicated curve fitting [quadratic, exponential, et cetera]. If not, there's nearest neighbor, neural networks, decision trees. Basically, there's an entire field of AI that focuses entirely on function approximation, which appears to be what this last step wants to do. Definately check the AI forum, and search the internet for function approximation techniques.

CM

##### Share on other sites
Thank you for the input.

##### Share on other sites

This topic is 4309 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.