Most Effective 7 Members Truss in Scilab

Click For Summary

Discussion Overview

The discussion revolves around calculating the most efficient layout for a 7-member truss using Scilab, specifically for a highway sign support. Participants explore methods for optimizing the truss design to minimize compression and tension forces, while also addressing the challenges faced by a beginner in programming.

Discussion Character

  • Exploratory
  • Technical explanation
  • Homework-related
  • Mathematical reasoning

Main Points Raised

  • One participant describes their current progress in Scilab, including the creation of matrices for joints and forces, and expresses uncertainty about how to approach the optimization problem.
  • Another participant inquires about a function that quantifies the "best layout," suggesting that having such a function would facilitate the use of optimization algorithms available in Scilab.
  • A participant clarifies that by "most efficient," they mean a layout that minimizes compression and tension forces in the truss members.
  • There is a discussion about different interpretations of "least" in terms of compression and tension, with suggestions for approaches that involve modifying coordinates and calculating design quality iteratively.
  • One participant proposes a method involving nested loops to systematically explore coordinate adjustments for optimization.
  • Another participant suggests a more sophisticated algorithm that evaluates all coordinates simultaneously to find improvements in the design.

Areas of Agreement / Disagreement

Participants express various ideas and methods for optimizing the truss layout, but there is no consensus on a specific approach or solution. The discussion remains open-ended with multiple competing views on how to proceed.

Contextual Notes

Participants note the limitations of their current knowledge and the need for further exploration of Scilab functions, particularly regarding optimization algorithms and the quantification of design quality.

PauloE
Messages
28
Reaction score
0
Hello everyone,
I'm attempting to come up with a way to calculate the most efficient 7 members truss layout using Scilab.
The assignment is to make a highway sign support.
  • It has to be L shaped and the truss system is only for the top horizontal part.
  • Two supports.
  • The sign is hanging at the furthest joint.
There are other constrains like size and height but are not relevant for my question.
Since this is my first programming language I do not know how to approach it in order to get the best layout. My professor doesn't require it for the assignment and expects us to change the coordinates of the joints manually and sort of brute force the best layout that way. My idea would be just for extra credit.

Homework Equations


Is this possible given that I only know Scilab language at a beginner level?
What examples can I look at to know where to start?

Thank you all!

The Attempt at a Solution


Here is the most "advanced" thing I've done with Scilab so far:
Code:
//Create matrix called "joints" that stores the values of the coordinates
    //of Joints 1 (first row), 2 (second row) 3(third row)
   
    //Declare my variables (some of them)
    joints = [-3 6;-3 4;7 6]//after a semicolon a new row starts.
    members = [1 2; 1 3; 2 3]
    weight = 850
    wind = 320
   
    //Now we display the matrix
    printf("\n\n")// We add some space to make the console look cleaner
    printf("Coordinates of Joint 1 = x = %3.3f y = %3.3f \n", joints(1,1), joints(1,2))
    printf("Coordinates of Joint 2 = x = %3.3f y = %3.3f \n", joints(2,1), joints(2,2))
    printf("Coordinates of Joint 3 = x = %3.3f y = %3.3f \n", joints(3,1), joints(3,2))
   
    //now we store the coordinates in variables to call them later.
    j1x = joints(1,1)
    j1y = joints(1,2)
    j2x = joints(2,1)
    j2y = joints(2,2)
    j3x = joints(3,1)
    j3y = joints(3,2)
   
    //now we get the distances.
    d13x = abs(j3x - j1x)
    d12x = abs(j2x - j1x)
   
    //now create a matrix from the equilibrium equations.
    A = [1    0    0;
         0    0    1;
         0    0   d12x;]
  
    disp(A, "Matrix A")                 
   
    //matrix B
    B = [wind;
         weight;
         weight*d13x]
  
    disp(B, "Matrix B")
   
    //Solve matrix
    x=A\B
   
    //display results
    printf("\n Ax = %3.3fN\n Cx = %3.3fN\n Cy = %3.3fN\n\n",x(1,1), x(2,1), x(3,1))
   
    //Calculate the distances between the joints to be used later on the unit vector.
    d12 = sqrt( (j2x - j1x)^2 + (j2y - j1y)^2 );
    d13 = sqrt( (j3x - j1x)^2 + (j3y - j1y)^2 );
    d23 = sqrt( (j3x - j2x)^2 + (j3y - j2y)^2 );
   
    //now we calculate unit vectors
    e31x = (j1x - j3x) / d13      //x component of unit vector from 3 to 1
    e31y = (j1y - j3y) / d13      //y component of unit vector from 3 to 1
    e32x = (j2x - j3x) / d23      //x component of unit vector from 3 to 2
    e32y = (j2y - j3y) / d23      //y component of unit vector from 3 to 2
    e12x = (j2x - j1x) / d12      //x component of unit vector from 1 to 2
    e12y = (j2y - j1y) / d12      //y component of unit vector from 1 to 2
   
    //unit vectosr in either direction are the same
    e13x = -e31x
    e13y = -e31y
    e23x = -e32x
    e23y = -e32y
    e21x = -e12x
    e21y = -e12y
   
    //Create Matrix A
    //Coefficients
    //   T12    T13    T23    Ax    Ay    Bx  
    A = [e12x   e13x    0     1     0     0;//JOINT 1 x forces
         e12y   e13x    0     0     1     0;//JOINT 1 y forces
         e21x    0     e23x   0     0     1;//JOINT 2 x forces
         e21y    0     e23y   0     0     0;//JOINT 2 y forces
          0     e31x   e32x   0     0     0;//JOINT 3 x forces
          0     e31y   e32y   0     0     0;//JOINT 3 y forces
]
    //MATRIX M
    B = [0;
         0;
         0;
         0;
         wind;
         weight;]
    x = A\B
   
    //Now print the results
    printf("\n\n T12 = %7.3f LB\n T13 = %7.3f LB\n T23 = %7.3f LB \n", x(1,1), x(2,1), x(3,1))
    printf("\n\n Ax = %7.3f LB\n Ay = %7.3f LB\n Bx = %7.3f LB \n", x(4,1), x(5,1), x(6,1))
 
Physics news on Phys.org
Thanks for the post! Sorry you aren't generating responses at the moment. Do you have any further information, come to any new conclusions or is it possible to reword the post?
 
Do you have a function that quantifies "best layout"? Something you put your coordinates in, and it tells you how "good" those coordinates are?
That is the interesting part - if you have it, every optimization algorithm can find a good solution, and there are probably algorithms written for Scilab.
 
mfb said:
Do you have a function that quantifies "best layout"?
Not at this point on the assignment. But what I mean by most efficient is whichever layout makes the compression and tensions forces to a minimum. I've been looking at the loop function but I'm not really sure how to use it yet.

To reinstate the problem as Mr Bernhardt suggested,

I want to get the layout of a 7 members truss that results on the least compression and tension forces on its members.
 
Least maximum compression/tension? Least average compression/tension?

PauloE said:
I've been looking at the loop function but I'm not really sure how to use it yet.
Hmm okay. Then it will get tricky, as a solution will likely need nested loops unless you do some parts manually.

One approach that is relatively easy to implement: start with a reasonable design, modify one coordinate only, calculate the "quality" of the design (see questions above) for various different values of this coordinate with a loop, find the optimal position. Write it in your program, modify the next coordinate. Do this for all coordinates, then your final solution should be better than the initial design. Repeat as long as you like.

A more clever algorithm looks at all coordinates at the same time to find possible improvements, picks the best one and repeats that process until further changes do not improve the design any more.
 

Similar threads

  • · Replies 1 ·
Replies
1
Views
2K
  • · Replies 2 ·
Replies
2
Views
2K
  • · Replies 4 ·
Replies
4
Views
2K
  • · Replies 1 ·
Replies
1
Views
2K
  • · Replies 5 ·
Replies
5
Views
7K
  • · Replies 4 ·
Replies
4
Views
6K
  • · Replies 3 ·
Replies
3
Views
2K
Replies
14
Views
2K
Replies
3
Views
2K
  • · Replies 3 ·
Replies
3
Views
8K