Topic
  • 2 replies
  • Latest Post - ‏2013-03-22T01:11:20Z by SystemAdmin
SystemAdmin
SystemAdmin
378 Posts

Pinned topic Help!! I cannot figure out where the problem is...

‏2013-01-29T00:36:24Z |
Hello everyone!

Please someone help explain why when I try to generate vertices for more than one floor, I get vertices for one floor and (0,0)vertices for other floors. the aim of this program is to generate vertices for a building with minimized building envelope(i.e the area of the whole building). Attached is the source code created in IBM ILOG CPLEX Optimisation Studio version 12.4

Any help rendered will be highly appreciated.
Thank you.
Updated on 2013-03-22T01:11:20Z at 2013-03-22T01:11:20Z by SystemAdmin
  • rdumeur
    rdumeur
    26 Posts

    Re: Help!! I cannot figure out where the problem is...

    ‏2013-03-01T18:13:28Z  
    Hi,

    First, my apologies for getting back to you so lately, and I hope you have solved your problem independently.
    I've been running your model with COS12.5 and tried your model with TimeLimit=120 to see what kind of solution you get:

    
    250.7454098705181 1 0 0 0 0 0 0 0 0 250.7454098705181 2 7 13 4 0 0 0 0 0 193.1655047636558 1 0 0 0 0 0 0 0 0 193.1655047636558 2 0 0 4 7 9 3 0 0 191.4177897940998 1 0 0 0 0 0 0 0 0 191.4177897940998 2 0 0 4 8 7 1 0 0 189.8425598373151 1 0 0 0 0 0 0 0 0 189.8425598373151 2 2 0 1 0 3 6 10 4 179.5644436179416 1 0 0 0 0 0 0 0 0 179.5644436179416 2 2 0 10 3 4 6 2 4 168.5311006424702 1 0 0 0 0 0 0 0 0 168.5311006424702 2 5 0 2 3 4 6 10 4 166.4180795051958 1 0 0 0 0 0 0 0 0 166.4180795051958 2 5 0 2 3 4 7 9 4 165.1535019386117 1 0 0 0 0 0 0 0 0 165.1535019386117 2 5 0 2 4 4 7 9 4 163.7964645562817 1 0 0 0 0 0 0 0 0 163.7964645562817 2 5 0 2 4 5 7 9 4
    

    which is normal you don't have set per floor area constraint, so it is normal that some floor may have null area. Your constraint is on the sum of areas. So your model should probably state:
    
    forall(f in Floor) 
    { Area3[f] >= 49 ; Area3[f] <= 70; 
    }
    

    instead of :
    
    Area >= 49 && Area <= 70;
    

    which only constrains the global area. And you need also to replace:
    
    dexpr 
    
    float Area1[f in Floor] = ((sum(f in Floor, i in aPoints)((x[f][i-1]*y[f][i])-(x[f][i]*y[f][i-1])))); dexpr 
    
    float Area2[f in Floor] = ((sum(f in Floor)((x[f][numPoints]*y[f][1])-(x[f][1]*y[f][numPoints]))));
    

    where expressions won't actually uses the index of the floor since 'f' is redefined in the sum, with:
    
    dexpr 
    
    float Area1[f in Floor] = ((sum(i in aPoints)((x[f][i-1]*y[f][i])-(x[f][i]*y[f][i-1])))); dexpr 
    
    float Area2[f in Floor] = ((x[f][numPoints]*y[f][1])-(x[f][1]*y[f][numPoints]));
    


    I hope this helps, and sorry again for the late answer.

    Cheers,
  • SystemAdmin
    SystemAdmin
    378 Posts

    Re: Help!! I cannot figure out where the problem is...

    ‏2013-03-22T01:11:20Z  
    • rdumeur
    • ‏2013-03-01T18:13:28Z
    Hi,

    First, my apologies for getting back to you so lately, and I hope you have solved your problem independently.
    I've been running your model with COS12.5 and tried your model with TimeLimit=120 to see what kind of solution you get:

    <pre class="jive-pre"> 250.7454098705181 1 0 0 0 0 0 0 0 0 250.7454098705181 2 7 13 4 0 0 0 0 0 193.1655047636558 1 0 0 0 0 0 0 0 0 193.1655047636558 2 0 0 4 7 9 3 0 0 191.4177897940998 1 0 0 0 0 0 0 0 0 191.4177897940998 2 0 0 4 8 7 1 0 0 189.8425598373151 1 0 0 0 0 0 0 0 0 189.8425598373151 2 2 0 1 0 3 6 10 4 179.5644436179416 1 0 0 0 0 0 0 0 0 179.5644436179416 2 2 0 10 3 4 6 2 4 168.5311006424702 1 0 0 0 0 0 0 0 0 168.5311006424702 2 5 0 2 3 4 6 10 4 166.4180795051958 1 0 0 0 0 0 0 0 0 166.4180795051958 2 5 0 2 3 4 7 9 4 165.1535019386117 1 0 0 0 0 0 0 0 0 165.1535019386117 2 5 0 2 4 4 7 9 4 163.7964645562817 1 0 0 0 0 0 0 0 0 163.7964645562817 2 5 0 2 4 5 7 9 4 </pre>
    which is normal you don't have set per floor area constraint, so it is normal that some floor may have null area. Your constraint is on the sum of areas. So your model should probably state:
    <pre class="jive-pre"> forall(f in Floor) { Area3[f] >= 49 ; Area3[f] <= 70; } </pre>
    instead of :
    <pre class="jive-pre"> Area >= 49 && Area <= 70; </pre>
    which only constrains the global area. And you need also to replace:
    <pre class="jive-pre"> dexpr float Area1[f in Floor] = ((sum(f in Floor, i in aPoints)((x[f][i-1]*y[f][i])-(x[f][i]*y[f][i-1])))); dexpr float Area2[f in Floor] = ((sum(f in Floor)((x[f][numPoints]*y[f][1])-(x[f][1]*y[f][numPoints])))); </pre>
    where expressions won't actually uses the index of the floor since 'f' is redefined in the sum, with:
    <pre class="jive-pre"> dexpr float Area1[f in Floor] = ((sum(i in aPoints)((x[f][i-1]*y[f][i])-(x[f][i]*y[f][i-1])))); dexpr float Area2[f in Floor] = ((x[f][numPoints]*y[f][1])-(x[f][1]*y[f][numPoints])); </pre>

    I hope this helps, and sorry again for the late answer.

    Cheers,
    Oh my God!! Thank you very much.....It works perfectly. No worries about the late reply, I am so happy to get the solution...WOW!!! :)