Bagaimana saya bisa mengotomatiskan proses mengoptimalkan desain objek fisik?


9

Saya mencoba untuk mengoptimalkan distributor aliran di tangki sehingga kecepatan dan distribusi suhu di setiap penampang relatif seragam. Ada banyak parameter yang dapat saya sesuaikan dengan keseragaman lintas bagian maksimum, seperti jumlah pipa saluran masuk, posisi, orientasi, dan arahnya. Saya tahu bahwa saya dapat membuat sejumlah geometri yang berbeda dan menguji masing-masing secara individual, tetapi ini sangat memakan waktu. Saya ingin dapat menulis sebuah program yang dapat secara berulang menguji beberapa kasus sekaligus (secara paralel), dan secara adaptif memilih serangkaian geometri baru untuk diuji berdasarkan hasil sebelumnya. Bagaimana saya bisa melakukan ini?


1
Bagian pencarian parameter, bagi saya, adalah bagian yang mudah. Bagian nontrivial adalah parameterisasi geometri.
Geoff Oxberry

Jawaban:


4

Apa yang ingin Anda lakukan adalah optimasi bentuk menggunakan metode berbasis gradien. Ini pada dasarnya berarti bahwa Anda perlu menghitung gradien fungsi fungsi wrt ke parameter model Anda.

Untuk sejumlah kecil parameter Anda dapat menggunakan FD tetapi untuk sejumlah besar parameter Anda perlu melihat metode adjoint. Jika Anda menggunakan kode komersial atau kode orang lain yang tidak bisa menyelesaikan persamaan adjoint maka FD adalah satu-satunya pilihan Anda.

Lihatlah ke buku-buku dasar optimasi bentuk dasar.

Sunting: Untuk masalah struktural FE Anda dapat memeriksa buku karya Choi dan Kim I dan II


Beberapa parameter hanya bilangan bulat ... Dapatkah pendekatan berbasis gradien masih berlaku?
Paul

Apakah Anda merekomendasikan tutorial / buku bagus tentang pengoptimalan bentuk?
Paul

Untuk sesuatu yang pendek / sederhana, Anda dapat membaca ini: acdl.mit.edu/mdo/mdo_06/EulerAdjoint.pdf . Seperti yang saya katakan dengan FD itu sepele karena Anda hanya perlu menghitung gradien (artinya jalankan kode CFD Anda beberapa kali, tergantung pada jumlah parameter) dan kemudian gunakan gradien untuk melakukan optimasi. Biasanya dibutuhkan beberapa iterasi sebelum estimasi parameter bertemu. Untuk parameter besar ini menjadi mahal dan Anda harus menggunakan metode adjoint untuk menghitung gradien.
stali

Terima kasih, stali. Itu adalah pengantar yang sangat bagus untuk metode adjoint.
Paul

5

Jika Anda membuat parameter bagian konstruksi geometri dengan tepat, ini merupakan masalah optimasi kotak hitam dengan parameter campuran diskrit dan kontinu.

DAKOTA http://dakota.sandia.gov/ dan NOMAD http://www.gerad.ca/NOMAD/Project/Home.html adalah dua paket berguna yang memungkinkan Anda memilih secara otomatis pemilihan parameter terbaik. (DAKOTA memiliki dukungan aplikasi yang lebih baik, tetapi NOMAD mungkin memiliki pengoptimal yang lebih baik.)

Untuk memvariasikan geometri, perkenalkan parameter diskrit atau kontinu untuk setiap kontrol yang ingin Anda pengaruhi geometri, dan otomatisasi konstruksi geometri dari kumpulan kontrol. Perhatikan bahwa metode bebas-derivatif cukup lambat dalam dimensi tinggi, jadi jaga agar jumlah parameter tetap kecil.

Setelah selesai menjelajahi ruang dengan salah satu paket di atas, Anda dapat memperbaiki analisis dengan melakukan optimasi yang lebih akurat di mana semua parameter diskrit dan semua parameter kontinu diperbaiki yang Anda tidak bisa mendapatkan turunan analitik. Tetapi Anda dapat meningkatkan jumlah parameter bentuk berkelanjutan sehubungan dengan yang Anda dapat menghitung turunan analitik, sebagai pengoptimal berbasis gradien (seperti IPOPT https://projects.coin-or.org/Ipopt ) dapat secara efisien menangani masalah yang jauh lebih besar .

Jika Anda tidak tahu cara mendapatkan turunan tetapi ketergantungannya lancar, Anda dapat mempertimbangkan untuk menggunakan program diferensiasi otomatis, atau mengkodekan masalah kontinu Anda di AMPL, dalam hal ini antarmuka pemecah akan menangani turunan.

Untuk dasar-dasar pengoptimalan bentuk, lihat, misalnya, Haftka, RT dan Grandhi, RV, pengoptimalan bentuk struktur - Sebuah survei, Metode Komputer dalam Mekanika dan Teknik Terapan 57 (1986), 91-106. (Percayai deskripsi tentang pemodelan; tetapi jangan gunakan solver yang mereka rekomendasikan, karena teknologi optimisasi telah jauh meningkat sejak saat itu.)


Pendekatan apa yang bisa saya ambil untuk parameterisasi geometri?
Paul

Lihat tambahan untuk jawaban saya.
Arnold Neumaier

@ Paul: Saya baru saja memperbaiki kesalahan konyol dalam tulisan saya - parameter geometri tentu saja bisa diskrit atau kontinu!
Arnold Neumaier


3

Ada juga optimasi ruang adjoint, yang tampaknya jauh lebih cepat daripada optimasi parametrik standar dalam CFD. Baru-baru ini telah memiliki peningkatan besar dalam popularitas di dalam komunitas CFD secara umum, dan di OpenFOAM khususnya. Kami sedang menyelenggarakan lokakarya tentang OpenFOAM saat ini, dan kami menerima banyak pengiriman abstrak mengenai metode ini. Jika Anda tertarik, lihat ini , untuk info lainnya, cukup google "adjoint optimasi bentuk ruang di CFD".

Informasi tambahan:

Jika Anda bisa menggunakan OpenFOAM, ada pustaka berbasis Python yang digunakan untuk hal semacam itu, untuk memanipulasi sejumlah besar kasus dan mengubah parameter mereka yang disebut PyFoam . Untuk geometri sederhana, Anda bisa mendefinisikan mesh sebagai blockMesh sederhana dan beralih ke apa pun yang Anda suka. Untuk kasus sederhana, ini adalah pertanyaan untuk menulis beberapa loop dengan Python. Begini tampilannya skrip jika Anda mengubah kecepatan kondisi batas "inlet". Perubahan geometri mesh sederhana akan menjadi beberapa baris kode ...


2

Anda akan membutuhkan:

  1. pengoptimal dan
  2. alat CFD yang mampu (fleksibel) cukup untuk menangani desain yang berbeda dalam konsep konkret atau bahkan milik konsep yang berbeda.

Fitur-fitur berikut sangat penting untuk alat CFD:

  • Efisiensi komputasi tinggi (kecepatan) untuk menangani sejumlah besar desain terpisah dalam kerangka waktu yang masuk akal.
  • Fleksibilitas dan keramahtamahan yang tinggi dari teknik numerik untuk mengecualikan intervensi manual ke dalam proses pencarian / analisis.
  • Manipulasi geometri terprogram.

Jadi saya dapat merekomendasikan perangkat lunak berikut:

  1. Insight Toolkit yang menyediakan sejumlah pengoptimal yang baik yang dapat digabungkan dengan
  2. Perpustakaan Simulasi Lanjut yang menawarkan

    • Performa tinggi:

      • Pustaka adalah akselerasi perangkat keras, yaitu mampu menggunakan perangkat keras GPU atau FPGA (jika tersedia) yang berarti program 10-10 percepatan vs berbasis CPU. Juga pada CPU biasa ini menggunakan fitur-fitur canggih seperti SIMD.
      • Ini didasarkan pada pendekatan kompilasi dinamis yang berarti bahwa tidak perlu mengorbankan kinerja untuk fleksibilitas. Ini menghasilkan hingga 10 kali percepatan vs teknik kompilasi standar.
      • ASL dapat digunakan dalam infrastruktur cluster dan komputer multi-GPU.
    • Fleksibilitas dan keramahan yang tinggi:

      • The jala bebas teknik numerik didasarkan pada kotak persegi panjang dan pendekatan batas tenggelam. Fitur-fitur ini memungkinkan optimasi desain otomatis , karena tidak ada generasi mesh diperlukan.
      • Perpustakaan didasarkan pada pendekatan kompilasi dinamis yang berarti bahwa tidak perlu mengorbankan kinerja untuk fleksibilitas. Ini memungkinkan untuk merumuskan algoritma umum dan efisien tunggal untuk desain / konsep yang berbeda.
    • Generasi dan manipulasi primitif geometri .

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.