Halaman
18

Perhitungan durasi dan semua parameter aliran lainnya menggunakan matriks disarankan untuk dilakukan dengan urutan sebagai berikut. Di tengah sel matriks ditunjukkan pada Gambar. 5.9, catat durasi kerja brigade di lokasi.

Perhitungan dilakukan dengan urutan sebagai berikut. Pertama, di akhir setiap kolom, tuliskan durasi kerja tim Σt i(, yang durasi kerjanya dijumlahkan di semua area. Jadi, untuk brigade 1 durasinya adalah 8 unit waktu, untuk brigade ke-2 - 12 unit, dst.

Selanjutnya, di sudut kiri atas sel pertama, waktu mulai brigade pertama pada 1 pegangan (biasanya nol) dimasukkan, dan di sudut kanan bawah, akhir pekerjaan brigade, yang sama dengan waktu mulai pekerjaan ditambah durasinya.

Karena waktu akhir pengerjaan pada grip pertama dianggap sebagai awal pekerjaan tim ini pada grip kedua, waktu tersebut dipindahkan tanpa perubahan ke sudut kiri atas sel kedua pada kolom yang sama (lihat Gambar 5.9). Menjumlahkan waktu ini dengan durasi pekerjaan pada pegangan kedua, ditentukan waktu akhir pekerjaan. Kali ini dicatat di pojok kanan bawah sel kedua. Dengan cara ini, awal dan akhir pekerjaan di semua lokasi brigade pertama dihitung. Perhitungan lebih lanjut menurut grafik dilakukan tergantung pada durasi kerja tim. Apabila durasi kerja tim selanjutnya lebih lama dari durasi kerja tim sebelumnya, maka perhitungan dilakukan dari atas ke bawah, dan jika kurang maka dari bawah ke atas.

Beras. 5.9. Matriks dengan hasil perhitungan aliran multiritmik

Karena total durasi pekerjaan brigade ke-2 pada contoh yang dipertimbangkan lebih besar daripada durasi pekerjaan brigade ke-1 (12\u003e 8), perhitungan awal dan akhir pekerjaan brigade ke-2 pada genggaman dimulai dari atas, yaitu sejak saya melepaskan genggaman. Untuk melakukan ini, dari sudut bawah sel pertama kolom pertama, waktu yang menandai penyelesaian pekerjaan pada pegangan pertama dipindahkan ke sudut kiri atas sel pertama kolom kedua. Perhitungan selanjutnya mirip dengan yang sebelumnya.

Karena durasi pekerjaan brigade ke-3 lebih kecil dari durasi pekerjaan brigade ke-2 (4<12), то расчет начал и окончаний работ 3-й бригады следует вести снизу вверх. Для этого вначале в левый угол последней клетки третьей графы переносят время окончания работ 2-й бригады на последней захватке. Одно­временно это время переносят в правый нижний угол вышележащей клетки, где это время соответствует окончанию работы 3-й бригады на предыдущей захватке. Начало работы бригады на этой захватке определяют как разность между этим временем и продол­жительностью работы бригады на захватке. Аналогичным образом заполняют все клетки матрицы. Цифра в нижнем углу последней клетки матрицы показывает общую продолжительность выполне­ния работ. В нашем примере она равна 20 ед. времени.

Setelah menghitung parameter aliran menggunakan matriks, disarankan untuk membuat diagram urutan aliran untuk kejelasan (Gbr. 5.10).

Perhitungan parameter aliran nonritmik menggunakan matriks sama dengan perhitungan aliran multiritmik, hanya saja dalam perhitungannya perlu ditentukan untuk setiap pasangannya.

Beras. 5.10. Sikogram aliran multi-ritmik dihitung

menggunakan matriks

brigade yang berdekatan, tempat konvergensi kritisnya, yang, berbeda dengan aliran ritme yang berbeda, dapat ditempatkan di area mana pun.

Sebagai contoh, kami menghitung parameter aliran non-ritmik, informasi

yang disajikan dalam matriks (Gbr. 5.11). Pada perhitungan tahap pertama, tempat pertemuan kritis setiap pasangan tim yang berdekatan (aliran pribadi) ditentukan. Caranya, carilah durasi pengerjaan grip terlama yang dilakukan oleh kedua tim tersebut dengan menjumlahkan durasi pengerjaan grip mereka, dengan syarat pendekatan kritisnya terlebih dahulu pada grip I, kemudian pada grip II, dst. Hasil penjumlahan dicatat pada baris terakhir matriks sebagai kolom. Misalnya, untuk brigade ke-1 dan ke-2, durasi ini sama dengan nilai-nilai berikut: dengan ketentuan bahwa pendekatan kritis adalah pada penangkapan pertama -3+1+2+2+2=10;

pada II--3+1+2+2+2=10; pada 111-3+1+1+2+2=9 dan terakhir pada IV --3+1+1+1+2=8. Nilai terbesar dari penjumlahan yang diperoleh adalah 10. Artinya pendekatan kritis kedua brigade yang dipertimbangkan ada pada tangkapan I dan II. Demikian pula, tempat pertemuan kritis semua tim lain (aliran pribadi) ditemukan.

Setelah menentukan tempat pendekatan kritis, penghitungan dimulai dari sel matriks tempat pendekatan kritis ditetapkan. Perhitungannya sendiri tidak berbeda dengan perhitungan di atas untuk aliran multiritmik.

Sikogram aliran non-ritmik yang dihitung berdasarkan matriks (Gbr. 5.11) ditunjukkan pada gambar. 5.12.

Kualitas aliran yang dirancang dinilai dengan menggunakan berbagai kriteria, yang meliputi: durasi aliran; tingkat kombinasi pekerjaan; tingkat ritme konsumsi sumber daya; membangun tingkat keseragaman

Kriteria durasi aliran sangat penting, karena durasi berdampak pada efisiensi konstruksi.

Beras. 5.11. Matriks dengan hasil perhitungan aliran tidak berirama

Optimalisasi waktu aliran non-ritmik

Durasi aliran tergantung pada intensitas tenaga kerja total, ukuran tim, dan untuk aliran tidak teratur, juga pada urutan penyertaan dalam pekerjaan penangkapan (bagian) di mana aliran beroperasi. Perhitungan menunjukkan bahwa selisih durasi kerja pada aliran nonritmik dengan urutan penyertaan paling sedikit dan paling rasional dalam kerja penangkapan (bagian) mencapai 15-20%.

Pencacahan lengkap semua opsi yang memungkinkan untuk memasukkan tangkapan (area) ke dalam pekerjaan, di mana durasi alirannya minimal, adalah tugas yang hampir tidak realistis, karena jumlah opsi mencapai nilai yang sangat besar - faktorial dari jumlah tangkapan (area). Jadi, misalnya hanya dengan 12 grip saja

pekerjaan brigade, jumlah opsi mencapai 479001600. Oleh karena itu, ketika mengatur aliran non-ritmik, masalah muncul dalam mengembangkan algoritma untuk pencacahan terarah dari urutan penyertaan dalam pekerjaan penangkapan (bagian).

Pertama dibenarkan algoritma enumerasi terarah diusulkan pada tahun 1954. Esensinya terletak pada meminimalkan periode penyebaran aliran yang terdiri dari dua aliran swasta karena transisi dari urutan acak pengembangan bidang kerja ke urutan yang teratur. Urutan yang terurut dicapai dengan fakta bahwa bagian depan pekerjaan untuk aliran parsial pertama disusun dalam matriks dalam urutan durasi pekerjaan, dan untuk aliran parsial ke-2 - dalam urutan menurun. Untuk melakukan ini, semua baris matriks yang terdiri dari dua kolom (aliran pribadi) dipertimbangkan dan pekerjaan dengan durasi lebih pendek diidentifikasi (jika ada beberapa, maka tindakan lebih lanjut dimulai dengan salah satu dari mereka). Jika pekerjaan ini terletak di kolom pertama (kiri) matriks, yaitu milik aliran swasta pertama, maka seluruh baris dengan elemen kanan tertentu dan yang berdekatan dipindahkan ke tempat pertama matriks yang sedang dibentuk. Jika pekerjaan dengan durasi minimum terletak di kolom kedua (kanan), yaitu milik aliran pribadi ke-2, maka seluruh baris dengan elemen kiri tertentu dan tetangganya dipindahkan ke tempat terakhir matriks yang sedang dibentuk. Operasi ini diulangi dengan sisa baris matriks asli hingga matriks tersebut dibangun kembali sepenuhnya.

Meningkatkan kehidupan Anda setelah menguasai keterampilan dasar manajemen waktu adalah dengan mengerjakan empat komponen utama hari yang baik (indah!):

Optimalisasi waktu sebagai latihan

Sebagai latihan Jarak Jauh, optimalisasi waktu terdiri dari tugas-tugas berikut:

1) Analisis "Bisnis - jasa - kekosongan" telah ditetapkan,

2) Saya melihat Hiburan saya, keputusan telah dibuat;

3) Saya menerjemahkan kekosongan menjadi pelayanan, pelayanan menjadi perbuatan;

4) Saya suka menyusun kasus paralel.

Untuk contoh melakukan latihan, lihat:

Tolong bacakan saya latihan "Optimasi Waktu". 1) File penetapan waktu ada dan memperhitungkan setidaknya 3 hari per minggu (dalam versi gabungan: pagi hari, siang hari lainnya, malam hari ketiga, dan seterusnya) tanpa penipuan diri sendiri Fakta: "Memperbaiki diri sendiri dalam kekosongan adalah tidak mungkin karena hampir tidak adanya kekosongan." 3) Membuat komitmen: "Saya mengubah "kekosongan" menjadi "layanan" setidaknya 70% dari waktu. Fakta: Tidak ada yang bisa diubah menjadi layanan, sekali lagi karena kurangnya kekosongan 4) Saya menetapkan sendiri tugas berikut - merencanakan waktu dan menerjemahkan layanan menjadi tindakan.

File "pengoptimalan waktu" membantu memastikan bahwa sisanya menghabiskan sebagian waktu. Pada saat yang sama, ternyata istirahat bagi saya bisa menjadi sebuah jasa sekaligus perbuatan. Misalnya: menjauh saja dari komputer, mengobrol dengan pacar - layanan; Berjalan kaki 15 menit ke toko adalah kesepakatan (saya membeli bahan makanan untuk makan siang dan pulang). Ini adalah penemuan yang memperluas kemungkinan.

Saya lampirkan ilustrasi: statistik selama 3 hari menurut kelompok Bisnis / Jasa / Kekosongan dan statistik lengkap selama 1 hari. Statistiknya, tentu saja, merupakan perkiraan, karena beberapa kasus dapat dikaitkan dengan tugas kerja dan tugas pendidikan (misalnya: sinopsis permainan “Balon” adalah karya kreatif untuk SCP dan ringkasan pelatihan di bekerja). Pada saat yang sama, situasi umum masih menjadi lebih jelas.

Jika Anda ingin mempertahankan dokumen yang sama: Natalya Dvorkina memberi Anda formulir siap pakai dengan rumus perhitungan bawaan.

Pengoptimalan waktu cerdas namun feminin


Tujuan: 1) Untuk menganalisis arah utama pemborosan sumber daya sementara, merasa ngeri dan mulai hidup dengan cerdas dan sadar, seperti yang diajarkan Nikolai Ivanovich yang hebat dan terkasih. 2) Minimalkan omong kosong.

ORP: 1) Minggu pertama: pelacakan pasif di mana, mengapa, dengan hasil apa, dengan sensasi apa saya menghabiskan momen-momen berharga dalam hidup saya yang tidak kalah berharganya. Atas dasar ini, kembangkan anggaran waktu untuk minggu ke-2 dan ke-3. 2) 2-3 minggu: sesuai dengan anggaran waktu yang dikembangkan, kurangi waktu yang terbuang menjadi nol. Identifikasi hambatan dan kembangkan cara untuk memperbaikinya.

Modus kerja: aktif, waktu yang dihabiskan di kejauhan adalah waktu terjaga.

Membuat buku harian: setiap hari, catat segera setelah kejadian (interval - setiap 15 menit).

1. Waktu utama ditempati, apa pun yang dikatakan, dengan tidur (upaya untuk menguranginya telah menyebabkan penurunan efektivitas aktivitas siang hari). Tempat kedua adalah “terobosan” (studi bahasa borjuis diperlukan untuk kehidupan yang maksimal). Tempat ketiga - segala macam urusan saat ini (berbelanja, memasak, membersihkan apartemen, segala macam mencuci dan menyetrika, dll.). Ketika saya terbiasa dengan pekerjaan yang sangat asing bagi saya, waktu mulai terasa terhemat. Dan, selain itu, ternyata Anda bisa mengupas kentang dan menggumamkan kata kerja tidak beraturan pada diri sendiri, yang membuat pikiran dan perut terpuaskan J

2. Yang dimaksud dengan “aku” adalah segala macam kegiatan wanita, seperti: menggambar potret diri di wajah, mengunjungi psikoterapis pribadi (penata rambut), berputar-putar di depan cermin dengan seluruh bagian tubuh yang indah, dll. Bagi saya, tampaknya sangat perlu untuk mengurangi waktu untuk aktivitas yang sangat penting ini, karena berbahaya dan tidak berguna.

3. Item “Lainnya” sangat penting. Ini adalah percakapan dengan kerabat (kebanyakan bersifat psikoterapi sehubungan dengan kejadian baru-baru ini).

4. Menganalisis waktu yang dihabiskan untuk olahraga dan bermain-main, saya harus lebih banyak berolahraga, dan lebih sedikit melakukan hal-hal bermanfaat lainnya. Mengapa tidak suatu prestasi?!

Singkatnya, latihan itu tampaknya masuk akal bagi saya. Setidaknya, saya mulai lebih sering memikirkan pertanyaan-pertanyaan: sebenarnya apa yang saya lakukan sekarang dan mengapa; apa akibat yang saya harapkan jika saya membaca lelucon di Internet dengan tampilan cerdas sepanjang hari atau menyanyikan lagu-lagu di obrolan sepanjang malam); dan mengapa tidak mulai berbisnis sekarang juga, daripada membuang-buang waktu hidup Anda dengan bodohnya.

Satu-satunya kabar baik adalah tidak perlu banyak waktu untuk membuang sampah sembarangan. Meskipun Nikolai Ivanovich berpikir sebaliknya...

Awalnya, kami akan menggambarkan durasi operasi pertama pada siklogram sebagai 200 menit, karena operasi pertama adalah yang terpanjang. Kami juga akan menunjukkan waktu pembuatan setiap batch pengangkutan dengan tanda. (Gambar 3.6.) Total lot angkutan dalam contoh kita n/p=10/2=5 lot

Selanjutnya, kita akan menggambarkan pada siklogram pemrosesan batch pengangkutan pertama untuk operasi 2, 3 dan 4. Awal pemrosesan batch pengangkutan pertama pada operasi kedua bertepatan dengan akhir pemrosesan pada operasi pertama (Gambar 3.7.)

Beras. 3.7

Beras. 3.8

Beras. 3.9

Beras. 3.10

Beras. 3.11

Dengan demikian, siklogram siklus teknologi dengan pemrosesan bagian paralel akan terlihat seperti ini (Gbr. 3.12)

Beras. 3.12. Sikogram TC untuk pemrosesan suku cadang secara paralel

Perhitungan PC untuk pemrosesan bagian paralel:

Penentuan lamanya siklus produksi dan teknologi dengan bentuk pergerakan paralel-sekuensial.

Mari kita mulai menentukan durasi siklus dengan menghitung siklus teknologi.

Perhitungan TC untuk pemrosesan suku cadang secara paralel-sekuensial:

Hitung - tumpang tindih sebagian waktu eksekusi setiap pasangan operasi yang berdekatan.

Durasi Tc(terakhir)=650 menit.

Perhitungan durasi TC untuk pemrosesan suku cadang secara berurutan - paralel:

Τc (nar-nosl) = 650 - (120 + 80 + 80) = 370 menit = 6,17 jam.

Konstruksi siklogram siklus teknologi

Awalnya, kami akan menggambarkan durasi operasi pertama pada siklogram sebagai 200 menit. (Gambar 3.13.)

Beras. 3.13.

Beras. 3.14.



Beras. 3.15.

Beras. 3.16.

Beras. 3.17.

Beras. 3.18.

Beras. 3.19.

Dengan demikian, siklogram siklus teknologi dengan pemrosesan bagian-bagian yang berurutan secara paralel akan terlihat seperti ini (Gbr. 3.20)

3.20. Sikogram TC untuk pemrosesan suku cadang secara paralel-sekuensial

Perhitungan PC untuk pemrosesan suku cadang secara paralel-sekuensial:

Mari kita hitung durasi siklus produksi dengan mensubstitusi datanya ke dalam rumus (5):

Latihan

Sesuai dengan opsi penugasan, menghitung siklus teknologi dan produksi, membangun siklogram siklus teknologi, menyelidiki pengaruh durasi siklus produksi pada parameter organisasi proses teknologi. Menarik kesimpulan tentang organisasi proses produksi yang paling tepat untuk kondisi tertentu.

Perintah kerja

Untuk melakukan pekerjaan yang Anda butuhkan:

a) ulangi peraturan keselamatan saat bekerja dengan peralatan komputer;

b) mempelajari bagian "Organisasi proses produksi" dari mata kuliah tersebut, serta bagian teoretis dari pengajaran metodologis ini;

c) melakukan perhitungan menurut metodologi yang dijelaskan pada ayat 3 sesuai dengan pilihan penugasan;

d) menarik kesimpulan berdasarkan hasil yang diperoleh

e) sesuai dengan persyaratan yang diberikan dalam bagian 6, menerbitkan laporan pekerjaan laboratorium;

e) melindungi pekerjaan laboratorium.

Persyaratan Laporan

Laporan laboratorium harus berisi:

1) halaman judul;

2) nama pekerjaan laboratorium, tujuannya;

3) perhitungan siklus teknologi dan produksi, siklogram siklus teknologi dengan deskripsi dan komentar

4) kesimpulan atas pekerjaan yang dilakukan.


Opsi tugas

Pilihan
Jumlah hari kalender
Jumlah hari kerja
Durasi shift kerja, h 7,8 7,8 7,9 7,85 7,9 7,85 7,9 7,85
Rasio pergeseran
Waktu rata-rata antar operasi tmo 45 menit 1 jam 15 menit 30 menit 45 menit 1 jam 15 menit 30 menit
Durasi proses alami te 30 menit 12 jam. 3 jam. 30 menit 6 jam. 12 jam 3 jam 6 jam
Ukuran lot bagian
Mentransfer ukuran lot

Detil A

Parameter proses teknologi pembuatan bagian A disajikan pada Tabel. A1, A2

Tabel A1

Proses teknologi pembuatan bagian A

Tidak operasi. nama operasinya Pilihan
Batasan waktu, min
Penggilingan
berputar
Membosankan
pengeboran
menggiling

Pengoptimalan program mereka menyebut transformasi yang memungkinkannya menjadi lebih efisien, yaitu. menjadikannya lebih hemat memori dan/atau lebih cepat dalam menjalankan fungsi yang sama seperti sebelum transformasi pengoptimalan.

Dua kriteria optimasi tertentu - waktu eksekusi program dan jumlah memori yang digunakan, secara umum saling bertentangan, seperti halnya penulisan program yang efisien disertai dengan peningkatan kerja programmer. Diketahui bahwa pengurangan waktu eksekusi program biasanya dapat dicapai dengan meningkatkan jumlah memori yang digunakan dan sebaliknya. Dalam hal ini, ketika memilih kriteria yang diinginkan, pertimbangan heuristik pemrogram mulai berlaku, memberikan preferensi pada salah satunya. Biasanya, keadaan tertentu menentukan pentingnya mengoptimalkan program untuk waktu atau memori. Misalnya, jika suatu program berjalan secara real time, maka program tersebut harus mengembalikan hasilnya tepat waktu.

Optimalisasi sebagian program dapat dilakukan oleh penerjemah pengoptimal (kompiler). Namun pada dasarnya proses kreatif ini bergantung pada kualifikasi pemrogram dan tidak mungkin memberikan algoritma yang mengoptimalkan program apa pun. Kita hanya dapat memperhatikan aspek-aspek di mana cadangan optimasi disembunyikan dan mengilustrasikannya dengan contoh.

Area optimasi dipahami sebagai bagian dari program, yaitu. sekumpulan operator di mana pengoptimalan transformasi dilakukan secara independen dari operator program lainnya. Secara khusus, keseluruhan program dapat menjadi area optimasi.

Ada dua pendekatan untuk optimasi program: "pembersihan" Dan pemrograman ulang. Kedua pendekatan tersebut mempunyai kelebihan dan kekurangan.

Pendekatan pertama adalah memperbaiki kecerobohan yang terlihat jelas dalam program aslinya. Keuntungannya adalah metode ini memerlukan sedikit waktu. Namun, peningkatan efisiensi biasanya dapat diabaikan.

Pendekatan kedua adalah membuat ulang program aslinya. Anda dapat mengulang bagian program yang, misalnya, paling banyak menghabiskan waktu. Pendekatan ini biasanya memberikan hasil terbaik, namun juga paling mahal. Dapat diterima jika program yang dioptimasi telah mengalami perubahan yang signifikan.

Dalam setiap kasus tertentu, peningkatan efisiensi program bergantung pada sejumlah faktor, seperti biaya peningkatan program, frekuensi penggunaannya, kecepatan relatif dalam melakukan berbagai operasi di mesin, cara berbagai operasi dikompilasi. , dan seterusnya.

Diinginkan untuk mengembangkan seperangkat aturan yang akan berkontribusi pada penyusunan program yang lebih efektif, yang optimalisasinya tidak diperlukan di masa depan.

Mari kita pertimbangkan metode utama pengoptimalan program yang tidak bergantung pada mesin.

1) Header pesan . Jika sebagian besar pesan berisi spasi (atau karakter berulang lainnya), maka untuk menghemat memori komputer, Anda harus menggunakan perintah yang mengisi bagian pesan ini dengan spasi (karakter).

2) Memulai Variabel . Jika nilai awal ditetapkan ke variabel (atau konstanta) bersamaan dengan nilai tersebut
deklarasi, memori dan waktu eksekusi disimpan.
program, karena dalam hal ini, variabel menjadi awal
nilai pada waktu kompilasi, bukan pada waktu kompilasi.
eksekusi.

Pada saat yang sama, dokumentasi internal program difasilitasi dan kesalahan dihindari jika suatu variabel belum diberi nilai awal.

3) Pada variabel yang lebih sedikit. Menghabiskan "sementara"
variabel di bagian program (misalnya, kontrol
variabel loop) terus menempati wilayah memori dan
sepanjang sisa program.
Itu harus dihilangkan (dibersihkan).

Karena pengidentifikasi variabel, sebagai suatu peraturan, menunjukkan sel memori tertentu, hasil dari pelaksanaan prosedur yang dipertimbangkan adalah penentuan jumlah minimum sel yang diperlukan untuk menyimpan hasil antara.

Ada kasus ketika variabel yang diberi nilai tidak digunakan di mana pun nanti, atau tidak ada satu pun penggunaan variabel tersebut di antara dua definisi dari satu variabel. Kami menyebut definisi variabel seperti itu tidak digunakan. Prosedur optimasi dalam hal ini adalah menghilangkan penetapan nilai yang berlebihan pada variabel yang tidak digunakan dari program.

Peningkatan jumlah variabel sementara dan tidak terpakai biasanya terjadi pada programmer pemula dan ceroboh. Kesalahan umum mereka adalah memilih struktur data pertama yang terlintas dalam pikiran. Gaya pemrograman dianggap baik jika tidak ada variabel yang tidak diperlukan dalam program.

4) Memilih Tipe Data . Variabel dari tipe data yang berbeda di
Komputer diproses dengan biaya waktu dan memori yang berbeda. DI DALAM
Dalam hal ini, diperlukan pemahaman minimal tentang fitur-fiturnya
program.

Misalnya, jika elemen array A(1) adalah bilangan bulat, maka pada FOR I :=l TO 1000 DO A (I ):= 0.0; akan ada 1000 jenis konversi dari real ke integer. Di sini Anda perlu menulis: A(1):= 0;.

5) Menghapus pernyataan tugas yang berlebihan . Prosedur yang dipertimbangkan adalah menghapus beberapa dari program
operator penugasan dan substitusi pada beberapa operator lainnya
(penugasan atau lompatan bersyarat) variabel di sisi kiri operator yang akan dihapus, ekspresi di sisi kanan operator yang akan dihapus, yaitu operator digabungkan. Misalnya, empat pernyataan penugasan berikut

C1:= 5. + B 1*D **2;

C2:= B+ DOSA(R);

C3:= 5.+ SEBUAH(1)*SEBUAH(2);

C: = (C1 + C2) * C3;

dapat digantikan oleh satu

C: = (5 + B 1 * D **2 + B + SIN (R)) * (5 + A (1) * A (2));

Saat mengganti hanya dalam satu pernyataan penugasan variabel di sisi kiri operator yang akan dihapus dengan ekspresi di sisi kanan operator yang akan dihapus, selalu ada efek optimasi positif, karena dalam hal ini hanya ada pengurangan jumlah operasi transfer informasi.

Diasumsikan bahwa variabel yang berada di sebelah kiri pernyataan yang dihapus tidak digunakan dalam pernyataan lain.

6) Identifikasi variabel . Jika programnya punya
operator berbentuk A:=B, maka di semua pernyataan program berikutnya Anda dapat mengganti variabel A dengan variabel B atau nilai numerik dari variabel B, dan menghapus operator A: = B.

Jika variabel A merupakan variabel yang diindeks, maka pernyataan A: = B tetap ada dalam program, dan variabel A pada beberapa pernyataan digantikan oleh variabel B.

7) Menghapus Operator Identitas . Inti dari prosedur ini
terdiri dari menghapus pernyataan yang identik dari program, mis.
operator bentuk A: = A. Operator tersebut mungkin muncul di
program akibat melakukan optimasi dan lain-lain
transformasi.

8) Hilangkan pernyataan yang tidak dapat dieksekusi . Dalam program nyata, mungkin ada bagian yang berisi pernyataan yang tidak dapat dieksekusi, yaitu pernyataan yang tidak dijalankan untuk kumpulan data awal mana pun.

Munculnya operator tersebut dapat dijelaskan oleh dua alasan:

1) c. dalam proses men-debug suatu program atau memodifikasinya, pemrogram lupa tentang operator tersebut, atau tidak ingin mencarinya, atau tidak dapat mengikuti semua konsekuensi yang disebabkan oleh koreksi pada beberapa bagian program;

2) kompleksitas logis atau informasional yang besar dari program tidak memungkinkan pemrogram untuk "melihat" operator tersebut atau bahkan seluruh bagian program yang tidak dapat dieksekusi.

Arti dari prosedur yang dimaksud adalah untuk menghapus pernyataan yang tidak dapat dieksekusi dari program.

9) penggunaan I/O. Operasi I/O memakan waktu lama dan harus dikurangi seminimal mungkin. Data yang dapat dihitung dalam program tidak perlu dimasukkan!

Dua perintah I/O berturut-turut untuk perangkat yang sama dapat digabungkan menjadi satu perintah. Hal ini mengurangi jumlah panggilan ke rutinitas I/O sistem, yang tentu saja mengurangi waktu eksekusi program.

Jangan lupa untuk menghapus semua pernyataan I/O yang tidak perlu (biasanya untuk debug) setelah men-debug program.

I/O yang tidak diformat biasanya lebih cepat daripada I/O yang diformat. Dapat digunakan jika data dimasukkan ke memori eksternal dan kemudian dibaca kembali oleh program yang sama atau berbeda. Dalam hal ini tidak perlu lagi mengubah data dari bentuk representasi internal ke bentuk eksternal dan sebaliknya. Metode I/O ini lebih akurat karena Digit penting mungkin hilang selama konversi format data.

10) Pemilihan prosedur (fungsi) . Jika programnya punya
urutan operator identik yang berbeda
hanya pengidentifikasi dan nilai konstanta yang berbeda
mungkin berguna untuk memisahkannya menjadi suatu prosedur (atau fungsi). Ini
memberikan pengurangan yang signifikan dalam teks program, tetapi memperlambat
pelaksanaannya, karena prosedur masuk-keluar adalah operasi yang memakan waktu, dan bekerja dengan parameter lebih lambat dibandingkan dengan variabel lokal.

Lebih baik tidak menggunakan prosedur, tetapi modul terpisah.

11) Mengurangi jumlah prosedur (fungsi). Prosedur komunikasi
(fungsi) dengan program utama disediakan oleh operator
panggilan di program utama yang memperlambat program.

Bila kriteria optimasinya adalah waktu penghitungan program, maka Anda perlu berpikir matang sebelum memisahkan suatu bagian program menjadi prosedur (fungsi) tersendiri.

Jika banyak pernyataan dieksekusi berkali-kali dan di tempat yang berbeda dalam program, maka tentu saja pernyataan tersebut harus dipisahkan ke dalam prosedur tersendiri. Namun tidak bijaksana untuk memanggil prosedur kecil dua (tiga...?) kali.

Pengurangan jumlah prosedur (fungsi) dilakukan dengan mengganti operator pemanggilnya dengan badan prosedur (fungsi) tersebut dan menggantinya

parameter formal dengan parameter aktualnya. Tetapi teks program bertambah dengan jumlah perintah yang sesuai.

Prosedur yang dijelaskan adalah contoh bagaimana dua kriteria optimasi - waktu komputasi program dan jumlah memori yang digunakan - saling bertentangan.

12) Alternatif. Ketika sebuah variabel perlu dibandingkan dengan beberapa nilai, beberapa pemrogram menulis seperti ini (gaya pemrograman yang sangat buruk):

IFA= 1KEMUDIAN... ;

IFA=2LALU... ;

IFA= 3 LALU... ;

Dalam hal ini, meskipun A = 1, semua pernyataan IF bersyarat akan dieksekusi.

Saat menggunakan konstruksi ELSE, perbandingan akan berhenti segera setelah kondisi sebenarnya ditemukan:

JIKA A=1 MAKA...

LAINNYA JIKA A=2 MAKA...

LAINNYA JIKA A=3 MAKA...;

Peningkatan lebih lanjut dalam efisiensi waktu (yang dapat mengakibatkan rendahnya keterbacaan program) adalah dengan mendahulukan kondisi yang paling mungkin benar (memiliki probabilitas tertinggi untuk menjadi benar), kemudian kondisi lainnya dalam dalam urutan menurun, probabilitasnya untuk menjadi benar.

Pernyataan yang sama berlaku untuk konstruksi pilihan (CASE).

13) Operasi aritmatika. Operasi aritmatika dilakukan dengan kecepatan berbeda.

Kami mencantumkannya dalam urutan waktu pelaksanaannya:

1) penjumlahan dan pengurangan;

2) perkalian;

3) pembagian;

4) eksponen.

Terkadang disarankan untuk mengganti satu operasi dengan operasi lainnya. Misalnya 3*1 bisa diganti dengan I +I +I atau X**2 bisa diganti dengan X*X. Selain itu, eksponensial biasanya memerlukan program perpustakaan.

Mengganti eksponensial dengan perkalian ganda akan menghemat memori dan waktu jika eksponennya berupa bilangan bulat kecil.

Perkalian hampir dua kali lebih cepat dari pembagian.

Alih-alih A/5, Anda dapat menulis 0,2*A;

Alih-alih A1 = B / D / E + C, Anda bisa menulis A1 = B / (D * E) + C;

persegi(A); lebih cepat dan lebih akurat dibandingkan A**0,5;

14) Konversi ekspresi . Transformasi awal (penyederhanaan) ekspresi dapat menyebabkan penghapusan banyak operasi aritmatika.

Misalnya X: = 2*Y + 2*T; dapat diganti dengan X: = 2*(Y+T);

Transformasi terakhir menghilangkan satu operasi perkalian.

15) Optimalisasi ekspresi. Inti dari prosedur ini adalah mengganti semua subekspresi kompleks yang setara secara semantik dengan satu subekspresi sederhana.

Subekspresi dianggap setara secara semantik jika setara secara aljabar (yaitu, subekspresi dapat dikonversi satu sama lain dengan menerapkan transformasi aljabar) dan operan terkaitnya memiliki nilai numerik yang sama.

Efek optimasi dalam hal ini adalah mengurangi waktu eksekusi program dan mengurangi jumlah memori yang ditempati.

16) Perhitungan awal subekspresi aritmatika. Sebagai gantinya, misalnya:

A: = (M * B * C) / (D - E);

K: = D -E -B * C * M;

kamu bisa menulis:

T: = N*B*C;

kamu:=D-E;

A: = T / U;

K: = U -T;

Teks program dan waktu eksekusinya dikurangi dengan mengurangi jumlah operasi yang dilakukan. Tapi mungkin memori untuk T dan U sedikit meningkat.

17) Hilangkan tanda kurung tambahan . Inti dari prosedur ini adalah menghilangkan pasangan tanda kurung dalam ekspresi aritmatika atau logika yang mubazir.

18) Hilangkan label yang berlebihan . Karena sejumlah alasan, ada label dalam program sebelum pernyataan dimana tidak ada transfer kendali.

Label seperti itu mubazir dan harus dihapus dari program.

19) Hilangkan pernyataan lompat yang berlebihan. Setelah banyak perubahan optimasi pada program, operator lompatan tanpa syarat (GO TO ) mungkin muncul di dalamnya, yang mentransfer kendali ke operator dengan label yang tidak ada. Mereka harus disingkirkan.

20) operasi implisit. Operasi T: = M(1) memerlukan waktu dan memori 1,5-2 kali lebih banyak dibandingkan T: = A;, dan jika M adalah parameter atau fungsi, maka 2,5-3 kali lebih banyak. Dimana sering kali M(1) digunakan, variabel sederhana MI := M(I) dapat digunakan, dll.

Tetapi jika indeks I adalah konstanta, maka pengindeksan tidak akan dilakukan: selama translasi, pergeseran elemen relatif terhadap awal array dihitung, dan selama eksekusi program diperlakukan sebagai variabel sederhana.

21) Siklus pembersihan. Sedikit tentang memori. Biasanya programmer
tidak peduli dengan memori sampai melebihi ukurannya.
Maka menjadi jelas bahwa ingatan bukanlah sesuatu yang tidak berdimensi. Ada prediksi bahwa kita akan segera memiliki cukup memori untuk menyelesaikan masalah apa pun. Namun ukuran tugas yang harus diselesaikan juga bertambah seiring dengan bertambahnya ukuran memori komputer.

Jika seorang programmer menghabiskan banyak waktu untuk mencoba meningkatkan efisiensi programnya dengan memperbaiki pernyataan yang hanya dijalankan satu kali, itu seperti mencoba mengurangi bobotnya dengan memotong kukunya.

Waktu eksekusi suatu program sangat bergantung pada waktu eksekusi bagian yang diulang berulang kali - berdasarkan siklus. Oleh karena itu, fokusnya harus pada siklus.

Prosedur pembersihan loop mengurangi waktu eksekusi loop (dan juga programnya) dengan menghapus ekspresi aritmatika dari tubuhnya atau bagian-bagiannya yang tidak bergantung pada variabel kontrol loop.

Ekspresi yang tidak mengubah nilainya di badan perulangan harus dievaluasi sebelum perulangan. Hal ini tidak mengubah durasi program, namun memberikan peningkatan pada kecepatan eksekusinya.

UNTUK I: = 1 SAMPAI 100 LAKUKAN UNTUK J: = 1 SAMPAI 10 LAKUKAN X: = Y*Z + C;

Di sini Y *Z akan dievaluasi seribu kali, namun dalam contoh berikut, hanya sekali:

YZ:=Y*Z;

UNTUK SAYA : = 1 KEMUDIAN 100 LAKUKAN UNTUK J:=1 SAMPAI 10 LAKUKAN X:=YZ+C;

Dengan pengecualian ekspresi invarian dari loop, sejumlah kecil biaya dibebankan dalam bentuk sebagian memori yang diperlukan untuk mengingat dan berulang kali menggunakan hasil ekspresi invarian.

Variasi yang menarik dalam pembersihan loop adalah dengan mengubah urutan loop:

LoopFOR I : = 1 TO N DO UNTUK J : = 1 TO M DO...

di N< М выполняется быстрее, чем цикл

UNTUK I : = 1 SAMPAI M LAKUKAN UNTUK I : = 1 SAMPAI N LAKUKAN...

Karena dalam kasus pertama, operasi bersepeda M*N+N dilakukan, dan dalam kasus kedua, M*N+M.

22) Menggunakan Loop . Loop memerlukan beberapa memori tambahan untuk memulai, menguji, mengubah variabel kontrol, dan mengatur semua konstanta.

Terkadang berguna untuk berhenti menggunakan loop.

Urutan pernyataan yang tidak berulang dan memerlukan perulangan yang kompleks sering kali dapat ditulis dalam suatu program secara berurutan (linier) daripada secara berulang.

23) Menggabungkan siklus . Ketika setiap siklus diterjemahkan dari bahasa tingkat tinggi ke dalam kode mesin, operasi muncul di program objek yang mengimplementasikan header siklus, yaitu meningkatkan variabel kontrol siklus sebesar nilai langkahnya; perbandingan variabel kontrol dengan nilai batasnya; pengalihan kendali.

Tata cara penggabungan siklus menggabungkan beberapa siklus dengan judul yang sama menjadi satu. Misalnya:

UNTUK I: = 1 SAMPAI 500 LAKUKAN X[I]: = 0;

UNTUK J: = 1 SAMPAI 500 LAKUKAN Y[J]: = 0;

dapat digabungkan menjadi satu loop, yang mengurangi waktu eksekusi program dan memori:

UNTUK I: = 1 SAMPAI 500 JANGAN MULAI X[I]: = 0; Y: = 0 AKHIR;

24) Menghapus cabang dari satu lingkaran . Biarkan siklus aslinya terdiri dari
dua bagian, dan tergantung pada kinerja tertentu
kondisi dipenuhi oleh salah satu bagian ini.

UNTUK I = 1 SAMPAI 200 DO

JIKA K = 2 MAKA A(I) = B(I)*C(I) LAINNYA A(I) = B (Saya) + 2;

Kemudian loop asli dapat diganti dengan dua loop yang sesuai dengan dua bagian dari loop asli:

JIKA K = 2 MAKA UNTUK 1=1 SAMPAI 200 LAKUKAN A(I) = B(I)*C(I);

LAINNYA UNTUK 1=1 SAMPAI 200 LAKUKAN A (I) = B (I) + 2...

Akibat percabangan loop, waktu komputasi program berkurang karena berkurangnya jumlah pemeriksaan kondisi.

25) Menghapus loop kosong. Inti dari prosedur ini adalah
menghapus siklus kosong dari program.

Siklus seperti itu dapat muncul dalam program sebagai akibat dari kelalaian pemrogram, dan paling sering sebagai akibat dari optimasi dan transformasi lainnya.

Namun, perlu dicatat bahwa dalam beberapa kasus loop kosong digunakan sebagai teknik pemrograman khusus, misalnya, dalam program real-time untuk membuat penundaan.

Secara umum, melakukan prosedur penghapusan loop kosong menghemat waktu eksekusi program dan jumlah memori yang digunakan.

26) Kompresi Siklus . Dalam beberapa kasus, badan perulangan berisi
kondisi yang dapat membatasi ruang lingkup variabel kontrol siklus.

UNTUK I = A KE B LAKUKAN JIKA I<= С THEN R(I) = P(I);

Prosedur kompresi siklus mentransfer batasan berikut ke header siklus:

DO I = A SAMPAI C DO R(I) - P(I);

Di sini diasumsikan bahwa A<: С < В.

Sebagai hasil dari prosedur kompresi loop, operator lompatan logis dihapus dari badan loop dan jumlah eksekusi badan loop berkurang.

27) Kontrol pilihan . Dalam pernyataan pilih, kelompok perintah pertama dijalankan jika kondisi pemilihannya benar.

Oleh karena itu, untuk meningkatkan kecepatan eksekusi program, perlu untuk mengatur kelompok perintah dalam pernyataan pilih dalam urutan frekuensi kemungkinan penggunaannya.

Dengan kata lain, dalam pernyataan pilih, Anda harus terlebih dahulu menempatkan sekelompok perintah yang paling sering perlu dijalankan. Yang kedua adalah kelompok perintah berikutnya dalam frekuensi eksekusi. Dan seterusnya. Sekelompok perintah yang sangat jarang dijalankan harus ditempatkan terakhir dalam pernyataan.

Sikogram adalah grafik yang mencerminkan urutan pergerakan seluruh elemen, mekanisme, dan perangkat yang termasuk dalam sistem peralatan mesin. Pada sumbu horizontal, waktu diplot pada skala tertentu, dan pada sumbu vertikal, diberikan daftar sebutan elemen-elemen yang terlibat dalam pekerjaan, yaitu bergerak, menghabiskan waktu. Tujuan konstruksi adalah untuk mendapatkan nilai durasi siklus operasi (TC) peralatan (dalam kasus kami, seluruh ASM) untuk penentuan kinerja modul selanjutnya, serta kemungkinan optimasi siklus dengan mengurangi waktu yang dihabiskan untuk transisi.

Ini mencerminkan urutan pengoperasian semua mekanisme (elemen) modul dalam waktu siklus pemrosesan lengkap bagian tersebut. Untuk membangun suatu siklogram perlu diketahui kecepatan gerak sudut dan linier badan eksekutif robot industri, serta nilainya sesuai dengan tata letak yang dikembangkan.

Pada gambar. 2.74 menunjukkan siklogram pengoperasian AFM menggunakan model PR MP20.40.01 yang dilengkapi dengan gripper mekanis (grip). Sebelum membuat siklogram, dibuat tabel yang menunjukkan sifat gerakan, jumlah siklus dan waktu pelaksanaannya sesuai dengan program yang diberikan kepada robot. Waktu pengoperasian mesin CNC dapat diindikasikan sebagai segmen umum, tanpa dipecah menjadi transisi teknologi yang terpisah, karena diketahui dan dihitung di bagian teknologi proyek. Paling mudah untuk mengatur waktu dalam hitungan detik. Perhitungan dan konstruksi interval waktu harus dilakukan dengan akurasi yang cukup sebesar 0,1 detik.

Interval waktu itu sendiri diplot pada sumbu horizontal grafik dan ditentukan untuk setiap transisi dengan perhitungan. Dalam hal ini cukup mengetahui kecepatan gerak (diketahui dari karakteristik teknisnya) dan besarnya gerak (ukuran), yang diatur secara konstruktif dalam batas kemungkinan pergerakan robot model yang dipilih.

Waktu untuk “menjepit-melepaskan” alat pencengkeram (grip) yang sulit dihitung, dapat memakan waktu kurang lebih hingga 1 detik. Penting untuk menyediakan waktu tambahan untuk pemasangan dan pemasangan suku cadang oleh pekerja-operator jika digunakan dalam versi modul mesin non-otomatis.

Di meja. 2.13 menunjukkan isi transisi teknologi yang dilakukan oleh unsur GPM dan waktu yang dihabiskan untuk pelaksanaannya.

tab. 2.13. Isi transisi teknologi yang dilakukan oleh unsur AFM

nomor siklus Konten perintah yang dapat dieksekusi Waktu siklus, s
t1 Menurunkan lengan robot secara vertikal ke bawah sebesar 0,1 m 0,5
t2
t3 Putar lengan 90º dan sekaligus putar tangan 90º berlawanan arah jarum jam 1,5
t4 1,5
t5 Pergerakan counter spindel mesin ke kiri dan menjepit benda kerja dengan bubungan chuck mekanis 1,5
t6 Pengoperasian gripper PR pada "unclamp"
t7 1,5
t8 Perpanjangan lengan dalam arah horizontal ke depan sepanjang sumbu OX sebesar 0,79 m 1,5
t9 Pengoperasian gripper pada "penjepit"
jilid 10 Membuka rahang chuck mekanis
jilid 11 Retraksi lengan pada arah horizontal sepanjang sumbu OX ke belakang sebesar 0,79 m 1,5
jilid 12 Memutar lengan 135º dan sekaligus memutar tangan berlawanan arah jarum jam 90º 2,25
jilid 13 Pengoperasian gripper pada "unclamp"
jilid 14 Memutar lengan PR sebesar 45º dan sekaligus mengangkat lengan secara vertikal sebesar 0,1 m 0,75