File size: 738 Bytes
165ee00
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
import torch
import numpy as np
from .. import TrussSolvers




def Truss10D(individuals): 

    assert torch.is_tensor(individuals) and individuals.size(1) == 10, "Input must be an n-by-10 PyTorch tensor."

    n = individuals.size(0)
    
    fx = torch.zeros(n,1)

    # 10 bar stress constraints, 4 displacement constraints
    gx = torch.zeros(n,14)

    for ii in range(n):
        displace, stress, _, _, weights = Truss10bar(A)
        fx[ii,0] = weights

        for ss in range(10):
            gx[ii,ss] = abs(stress[ss])
            
        gx[ii,10] = displace[1][1]
        gx[ii,11] = displace[2][1]
        gx[ii,12] = displace[4][1]
        gx[ii,13] = displace[5][1]

    return gx, fx