Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

How to scale this expression

  1. Feb 10, 2012 #1
    Hello everyone,

    I have a bit of an issue regarding scaling of an expression. So, the scenario is as follows.

    I have a confidence value that can be associated with the solution given by an optimization routine and it is as follows:

    C = exp(-A)/(exp(-A) + exp(-B))

    where A, B and C are some energy values returned by the optimization routine and C represents the confidence or the probability assigned to the solution A. Also, B is always greater than A.

    After some simple manipulation, the expression becomes:

    C = 1.0 / (1 + exp(A-B))

    Now, in the beginning my issue was that the values A, B and C were usually quite large (in tens of thousands). So this expression was giving values of 0.5 when A and B were very close and when the difference was something a bit larger (in absolute numbers), then the expression would basically become 1.

    So, I realized I needed to do some normalization and the first thing I tried was divide everything by A. So, now the expression becomes:

    C = 1.0 / (1 + exp(1-B/A))

    Now typically B/A is something from 1 to 1.01. So, now I have a similar problem: As exp(1-B/A) will basically be 0.5.

    So, what I would like to do is introduce some scaling, normalization on this expression that would help me basically capture the changes in my data range. I would be grateful for any suggestions that anyone might have.

  2. jcsd
  3. Feb 10, 2012 #2
    For some reason, for me this formula resembles Statistical Mechanics, more exactly the Partition Function.

    If this formula didnt come directly from it, maybe you could read about it, see if it applies to your problem, and see if there is already some technique for doing what you want.
  4. Feb 11, 2012 #3

    it is sort of derived from the Ising model but actually it is just a coincidence that it looks like the partition function.

    My problem is actually much simpler:

    So, ok.

    C= 1 / (1 + e^(B/A)) for the moment assume B >= A, So C can range from 0.5 to 1.

    Typically, B/A ranges from 1 to 1.01. What I would like to do is have some sort of scaling so when B/A is "close" to 1, then C is close to 0.5 but when it starts to diverge, then C starts to get closer to 1. However, I do not want a linear scale as I want to exaggerate the differences.

    I can now a priori what the maximum B and A values will be. I was wondering what suitable function can I use. One thing that comes to mind is to actually use the exponential:


    C = 1 / (1 + e^(e^(factor)*B/A)).

    However, I am not sure how I can derive this "factor" term in a suitable way from B and A values that would make sense.


  5. Feb 11, 2012 #4


    User Avatar
    Science Advisor

    Hey pamparana.

    Have you considered modelling your variables on derivative information?

    Basically what I am getting at is using derivative information to work backwards to get an empirical value for your 'factor' variable. So if you specify specific derivative behaviour at some given point, then you can use that to get equations for 'factor' and hence evaluate it for those given conditions.
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook