Saya memiliki spreadsheet Excel yang berisi model dinamika kendaraan 5 DOF diferensial linier. Saya menggunakan pemecah bawaan dalam satu lingkaran untuk menyelesaikan persamaan secara numerik. Saya menggunakannya secara kualitatif untuk sementara waktu, tetapi kemudian untuk mencari akurasi yang lebih tinggi, saya perlu mengurangi langkah waktu secara drastis. Ini menyoroti kebutuhan untuk meningkatkan kecepatan makro dan meninjau potongan kode yang ditulis dengan tergesa-gesa
Dengan menggunakan fungsi Timer, saya dapat membuat pengaturan pemecah dan menyelesaikan waktu, jadi saya kemudian mulai mencoba mengurangi waktu yang dibutuhkan untuk setiap putaran. Perbaikan yang saya terapkan adalah
- Menonaktifkan pembaruan layar
- Mengatur perhitungan sheet ke manual dan hanya memperbarui baris yang diperlukan
- Menonaktifkan pembaruan bilah status
- Mematikan aktifkan acara
- Menggunakan mesin Simplex LP
- Mengurangi presisi penyelesaian yang diperlukan
- Menggunakan hasil dari langkah waktu sebelumnya sebagai titik awal untuk baris berikutnya
- Memindahkan semua kalkulasi turunan ke sheet lain sehingga hanya kalkulasi yang diperlukan saja yang diperbarui
- Mengonfigurasi ulang spreadsheet agar baris penyelesaiannya konstan (hasilnya kemudian disalin ke baris di bawahnya), artinya pemecah hanya perlu disetel satu kali
Peningkatannya sangat besar, mengurangi waktu penyelesaian per baris dari sekitar 1. 3 ke 0. 35 detik. Waktu saat ini 0. 35 detik hampir seluruhnya menyelesaikan waktu - beberapa milidetik yang tersisa adalah waktu penyalinan
Namun, minimal 1000 baris per proses, total waktu proses masih lebih dari 16 menit. Untuk lari penuh, itu akan menjadi 85 menit
Meskipun saya senang dengan peningkatannya, modelnya masih terlihat lambat hanya dengan 5 DOF. Jadi, pertanyaan saya adalah apakah ada yang tahu jika saya dapat meningkatkan waktu penyelesaian atau dapat mengomentari apakah saya telah mencapai batas bawah untuk 5 persamaan seperti itu?
Persamaannya adalah
$$(m \cdot \dot{v})+(m \cdot rad(r) \cdot u)+(m_s \cdot h' \cdot rad(\ddot{\varphi}))+(deg(C_{
$$(I_z \cdot rad(\dot{r}))+(I_{z,s} \cdot rad(\Theta_r) - I_{xz,s}) \cdot rad(\ddot{\varphi}))
$$((I_{x,s}+(m_s \cdot h'^2)) \cdot rad(\ddot{\varphi}))+(m_s \cdot h' \cdot \dot{v})+(
- Keseimbangan kecepatan sudut selip depan
$$rad(\dot\alpha_f)-(v/\sigma_f)-((a \cdot rad(r))/\sigma_f)+((u \cdot \varepsilon_f \cdot rad(\varphi))/\sigma_f
- Keseimbangan kecepatan sudut selip belakang
$$rad(\dot\alpha_r)-(v/\sigma_r)+((b \cdot rad(r))/\sigma_r)+((u \cdot \varepsilon_r \cdot rad(\varphi))/\sigma_r
Dimana (simbol. arti [satuan];
$m$. massa [kg];
$m_s$. massa bermunculan [kg];
$u$. kecepatan maju [m/dtk]; . 8; . 76311111
$a$. CG ke gandar depan [m]; . 608; . 88
$b$. CG ke gandar belakang [m]; . 335; . 82
$C_{\alpha f}$. kekakuan menikung depan [N/deg];
$C_{\alpha r}$. kekakuan menikung belakang [N/deg];
$I_z$. yaw momen inersia [kgm^2];
$i_s$. rasio kemudi [-]; . 3;
$\varepsilon_f$. koefisien kemudi gulungan depan [-]; . 052;
$\varepsilon_r$. koefisien kemudi gulungan belakang [-]; . 18;
$\Theta_r$. kemiringan sumbu gulungan [deg]; . 914941467;
$\sigma_f$. panjang relaksasi ban samping depan [m]; . 6408; . 001
$\sigma_r$. panjang relaksasi ban samping belakang [m]; . 3952; . 001
$C_\varphi$. kekakuan gulungan total [Nm/deg];
$c_f$. kemudi kepatuhan depan [deg/N]; . 000064;
$c_r$. kemudi kepatuhan belakang [deg/N]; . 000041;
$h'$. sprung mass CG tinggi wrt roll axis [m]; . 4435;
$I_{x,s}$. momen inersia rol massa pegas [kgm^2];
$I_{xz,s}$. produk roll-yaw massa bermunculan dari inersia [kgm^2];
$I_{z,s}$. momen inersia yaw massa bermunculan [kgm^2];
$K_{\varphi}$. redaman gulungan [Nms/deg];
$t_{pf}$. jejak pneumatik depan [m]; . 0364;
$t_{pr}$. jejak pneumatik belakang [m]; . 0236;
$I_{xz}$. produk roll-yaw inersia [kgm^2];
dan terakhir, masukkan riwayat waktu
$\delta$. sudut kemudi [derajat]; . 92; . 92
Di atas saya telah menyertakan satu set nilai yang khas untuk sedan modern dan satu set nilai yang mewakili model yang sangat disederhanakan yang saya gunakan untuk berkorelasi dengan model yang berbeda dengan DOF yang lebih rendah. Kedua set dimasukkan untuk melihat apakah ada perbedaan yang signifikan dalam kecepatan penyelesaian
Input riwayat waktu dapat berupa input langkah sederhana, dengan nilai 0 derajat dari 0-0. 1 detik, lalu 22. 92 derajat dari sana dan seterusnya selama beberapa detik
Persamaannya agak kikuk karena saya ingin parameter sudut dalam derajat daripada radian