Pytorch學(xué)習(xí)筆記11:汽車防傾桿工程設(shè)計(jì)優(yōu)化實(shí)例
#需要import的lib
import torch
import time
import platform
#import CV2
from torch.utils.data import DataLoader
from torchvision import datasets, transforms
#需要import的lib
#運(yùn)行環(huán)境tesla k20/python 3.7/pytorch 1.20
print('——————————運(yùn)行環(huán)境——————————')
print('Python Version:',platform.python_version())
print('Torch Version:',torch.__version__)
#print('OpenCV Version:',CV2.__version__)
print('CUDA GPU check:',torch.cuda.is_available())
if(torch.cuda.is_available()):
print('CUDA GPU num:', torch.cuda.device_count())
n=torch.cuda.device_count()
while n > 0:
? print('CUDA GPU name:', torch.cuda.get_device_name(n-1))
? print('CUDA GPU capability:', torch.cuda.get_device_capability(n-1))
? print('CUDA GPU properties:', torch.cuda.get_device_properties(n-1))
? n -= 1
print('CUDA GPU index:', torch.cuda.current_device())
print('——————————運(yùn)行環(huán)境——————————')
time_start=time.time()
device=torch.device('cuda:0')
#工程優(yōu)化應(yīng)用,GPU不一定更快
#device=torch.device('cpu')
#防傾桿設(shè)計(jì)優(yōu)化實(shí)例,設(shè)計(jì)在下面這個(gè)連接能看到
#https://wenku.baidu.com/view/b9f455ef534de518964bcf84b9d528ea81c72f6a.html
E=210000 #彈性模量
d=30 #防傾桿直徑mm
I=d2*L)))
y=torch.tensor(20000.0).to(device)#防傾桿扭轉(zhuǎn)剛度
y.requires_grad=False#先把數(shù)據(jù)搬運(yùn)到指定設(shè)備,再設(shè)置require grad
x=torch.tensor([130.0,130.0,4.0]).to(device)#防傾桿設(shè)計(jì)參數(shù)[拖拽臂長(zhǎng)度,拖拽臂長(zhǎng)度,桿件的截面直徑]
x.requires_grad=True#先把數(shù)據(jù)搬運(yùn)到指定設(shè)備,再設(shè)置require grad
loss_func=torch.nn.MSELoss().to(device)#損失函數(shù)
optim=torch.optim.Adam([x],lr=1e-3)#優(yōu)化器,優(yōu)化的是防傾桿設(shè)計(jì)參數(shù)
for step in range(40000):
? ?loss=loss_func(func1(x),y)#損失函數(shù)計(jì)算損失
? ?optim.zero_grad()
? ?loss.backward()
? ?optim.step()
? ?if step % 200 == 0:
? ? ? ?print('step {}:x={},f(x)={}'
? ? ? ? ? ? ?.format(step,x.tolist(),loss.item()))
time_end=time.time()
print('Totally cost',time_end-time_start,'s')