Skip to content

Latest commit

 

History

History
80 lines (49 loc) · 8.35 KB

File metadata and controls

80 lines (49 loc) · 8.35 KB

ਜੈਨੇਟਿਕ ਐਲਗੋਰਿਥਮ

ਜੈਨੇਟਿਕ ਐਲਗੋਰਿਥਮ (GA) ਇੱਕ ਵਿਕਾਸੀ ਦ੍ਰਿਸ਼ਟੀਕੋਣ 'ਤੇ ਆਧਾਰਿਤ ਹਨ, ਜਿਸ ਵਿੱਚ ਆਬਾਦੀ ਦੇ ਵਿਕਾਸ ਦੇ ਤਰੀਕੇ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਦਿੱਤੇ ਗਏ ਸਮੱਸਿਆ ਲਈ ਇੱਕ ਉੱਤਮ ਹੱਲ ਪ੍ਰਾਪਤ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। ਇਹ 1975 ਵਿੱਚ ਜੌਨ ਹੈਨਰੀ ਹੌਲੈਂਡ ਦੁਆਰਾ ਪ੍ਰਸਤਾਵਿਤ ਕੀਤੇ ਗਏ ਸਨ।

ਜੈਨੇਟਿਕ ਐਲਗੋਰਿਥਮ ਹੇਠਾਂ ਦਿੱਤੇ ਵਿਚਾਰਾਂ 'ਤੇ ਆਧਾਰਿਤ ਹਨ:

  • ਸਮੱਸਿਆ ਦੇ ਵੈਧ ਹੱਲਾਂ ਨੂੰ ਜੀਨਸ ਵਜੋਂ ਦਰਸਾਇਆ ਜਾ ਸਕਦਾ ਹੈ
  • ਕਰਾਸਓਵਰ ਸਾਨੂੰ ਦੋ ਹੱਲਾਂ ਨੂੰ ਮਿਲਾ ਕੇ ਇੱਕ ਨਵਾਂ ਵੈਧ ਹੱਲ ਪ੍ਰਾਪਤ ਕਰਨ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ
  • ਚੋਣ ਨੂੰ ਕੁਝ ਫਿਟਨੈਸ ਫੰਕਸ਼ਨ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਵਧੇਰੇ ਉੱਤਮ ਹੱਲਾਂ ਦੀ ਚੋਣ ਕਰਨ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ
  • ਮਿਊਟੇਸ਼ਨ ਨੂੰ ਅਨੁਕੂਲਤਾ ਨੂੰ ਅਸਥਿਰ ਕਰਨ ਅਤੇ ਸਥਾਨਕ ਘੱਟੋ-ਘੱਟ ਤੋਂ ਬਾਹਰ ਨਿਕਲਣ ਲਈ ਪੇਸ਼ ਕੀਤਾ ਜਾਂਦਾ ਹੈ

ਜੇ ਤੁਸੀਂ ਜੈਨੇਟਿਕ ਐਲਗੋਰਿਥਮ ਲਾਗੂ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ, ਤਾਂ ਤੁਹਾਨੂੰ ਹੇਠਾਂ ਦਿੱਤੀਆਂ ਚੀਜ਼ਾਂ ਦੀ ਲੋੜ ਹੋਵੇਗੀ:

  • ਜੀਨਸ g∈Γ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਸਮੱਸਿਆ ਦੇ ਹੱਲਾਂ ਨੂੰ ਕੋਡ ਕਰਨ ਦਾ ਤਰੀਕਾ ਲੱਭੋ
  • ਜੀਨਸ ਦੇ ਸੈਟ Γ 'ਤੇ ਫਿਟਨੈਸ ਫੰਕਸ਼ਨ fit: Γ→R ਨੂੰ ਪਰਿਭਾਸ਼ਿਤ ਕਰੋ। ਛੋਟੇ ਫੰਕਸ਼ਨ ਮੁੱਲ ਵਧੀਆ ਹੱਲਾਂ ਨੂੰ ਦਰਸਾਉਂਦੇ ਹਨ।
  • ਦੋ ਜੀਨਸ ਨੂੰ ਮਿਲਾ ਕੇ ਇੱਕ ਨਵਾਂ ਵੈਧ ਹੱਲ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਕਰਾਸਓਵਰ ਮਕੈਨਿਜ਼ਮ ਪਰਿਭਾਸ਼ਿਤ ਕਰੋ crossover: Γ2→Γ।
  • ਮਿਊਟੇਸ਼ਨ ਮਕੈਨਿਜ਼ਮ ਪਰਿਭਾਸ਼ਿਤ ਕਰੋ mutate: Γ→Γ।

ਕਈ ਮਾਮਲਿਆਂ ਵਿੱਚ, ਕਰਾਸਓਵਰ ਅਤੇ ਮਿਊਟੇਸ਼ਨ ਅਕਸਰ ਸਧਾਰਨ ਐਲਗੋਰਿਥਮ ਹੁੰਦੇ ਹਨ ਜੋ ਜੀਨਸ ਨੂੰ ਸੰਖਿਆਤਮਕ ਕ੍ਰਮਾਂਕਾਂ ਜਾਂ ਬਿਟ ਵੇਕਟਰਾਂ ਵਜੋਂ ਮੈਨਿਪੁਲੇਟ ਕਰਦੇ ਹਨ।

ਜੈਨੇਟਿਕ ਐਲਗੋਰਿਥਮ ਦੀ ਵਿਸ਼ੇਸ਼ ਲਾਗੂ ਕਰਨ ਦੀ ਵਿਧੀ ਮਾਮਲੇ ਤੋਂ ਮਾਮਲੇ ਵਿੱਚ ਵੱਖ-ਵੱਖ ਹੋ ਸਕਦੀ ਹੈ, ਪਰ ਸਮੁੱਚੀ ਬਣਤਰ ਹੇਠਾਂ ਦਿੱਤੀ ਗਈ ਹੈ:

  1. ਸ਼ੁਰੂਆਤੀ ਆਬਾਦੀ G⊂Γ ਦੀ ਚੋਣ ਕਰੋ
  2. ਇਸ ਕਦਮ 'ਤੇ ਕੀਤੀ ਜਾਣ ਵਾਲੀ ਕਾਰਵਾਈ ਦੀ ਚੋਣ ਕਰੋ: ਕਰਾਸਓਵਰ ਜਾਂ ਮਿਊਟੇਸ਼ਨ
  3. ਕਰਾਸਓਵਰ:
  • ਦੋ ਜੀਨਸ g1, g2 ∈ G ਨੂੰ ਰੈਂਡਮ ਚੁਣੋ
  • ਕਰਾਸਓਵਰ ਦੀ ਗਣਨਾ ਕਰੋ g=crossover(g1,g2)
  • ਜੇ fit(g)<fit(g1) ਜਾਂ fit(g)<fit(g2) - ਆਬਾਦੀ ਵਿੱਚ ਸੰਬੰਧਿਤ ਜੀਨ ਨੂੰ g ਨਾਲ ਬਦਲੋ।
  1. ਮਿਊਟੇਸ਼ਨ - ਰੈਂਡਮ ਜੀਨ g∈G ਚੁਣੋ ਅਤੇ ਇਸ ਨੂੰ mutate(g) ਨਾਲ ਬਦਲੋ
  2. ਕਦਮ 2 ਤੋਂ ਦੁਹਰਾਓ, ਜਦੋਂ ਤੱਕ fit ਦਾ ਮੁੱਲ ਕਾਫ਼ੀ ਛੋਟਾ ਨਹੀਂ ਹੋ ਜਾਂਦਾ ਜਾਂ ਕਦਮਾਂ ਦੀ ਸੀਮਾ ਪੂਰੀ ਨਹੀਂ ਹੋ ਜਾਂਦੀ।

ਆਮ ਕੰਮ

ਜੈਨੇਟਿਕ ਐਲਗੋਰਿਥਮ ਦੁਆਰਾ ਹੱਲ ਕੀਤੇ ਜਾਣ ਵਾਲੇ ਆਮ ਕੰਮਾਂ ਵਿੱਚ ਸ਼ਾਮਲ ਹਨ:

  1. ਸ਼ਡਿਊਲ ਅਨੁਕੂਲਤਾ
  2. ਉੱਤਮ ਪੈਕਿੰਗ
  3. ਉੱਤਮ ਕਟਾਈ
  4. ਥਕਾਵਟ ਭਰੀ ਖੋਜ ਨੂੰ ਤੇਜ਼ ਕਰਨਾ

✍️ ਅਭਿਆਸ: ਜੈਨੇਟਿਕ ਐਲਗੋਰਿਥਮ

ਹੇਠਾਂ ਦਿੱਤੇ ਨੋਟਬੁੱਕ ਵਿੱਚ ਆਪਣਾ ਅਧਿਐਨ ਜਾਰੀ ਰੱਖੋ:

ਇਸ ਨੋਟਬੁੱਕ 'ਤੇ ਜਾਓ ਜਿੱਥੇ ਜੈਨੇਟਿਕ ਐਲਗੋਰਿਥਮ ਦੀ ਵਰਤੋਂ ਦੇ ਦੋ ਉਦਾਹਰਨ ਦਿੱਤੇ ਗਏ ਹਨ:

  1. ਖਜ਼ਾਨੇ ਦੀ ਨਿਆਂਪੂਰਨ ਵੰਡ
  2. 8 ਕਵੀਨਸ ਸਮੱਸਿਆ

ਨਿਸਕਰਸ਼

ਜੈਨੇਟਿਕ ਐਲਗੋਰਿਥਮ ਨੂੰ ਕਈ ਸਮੱਸਿਆਵਾਂ ਹੱਲ ਕਰਨ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ, ਜਿਵੇਂ ਕਿ ਲਾਜਿਸਟਿਕਸ ਅਤੇ ਖੋਜ ਸਮੱਸਿਆਵਾਂ। ਇਹ ਖੇਤਰ ਮਨੋਵਿਗਿਆਨ ਅਤੇ ਕੰਪਿਊਟਰ ਸਾਇੰਸ ਦੇ ਵਿਸ਼ਿਆਂ ਨੂੰ ਮਿਲਾ ਕੇ ਕੀਤੇ ਗਏ ਖੋਜ ਤੋਂ ਪ੍ਰੇਰਿਤ ਹੈ।

🚀 ਚੁਣੌਤੀ

"ਜੈਨੇਟਿਕ ਐਲਗੋਰਿਥਮ ਲਾਗੂ ਕਰਨ ਲਈ ਸਧਾਰਨ ਹਨ, ਪਰ ਉਨ੍ਹਾਂ ਦੇ ਵਿਹਾਰ ਨੂੰ ਸਮਝਣਾ ਮੁਸ਼ਕਲ ਹੈ।" ਸਰੋਤ। ਜੈਨੇਟਿਕ ਐਲਗੋਰਿਥਮ ਦੇ ਲਾਗੂ ਕਰਨ ਦਾ ਕੋਈ ਉਦਾਹਰਨ ਲੱਭੋ, ਜਿਵੇਂ ਕਿ ਸੁਡੋਕੂ ਪਜ਼ਲ ਹੱਲ ਕਰਨਾ, ਅਤੇ ਇਸ ਨੂੰ ਇੱਕ ਸਕੈਚ ਜਾਂ ਫਲੋਚਾਰਟ ਵਜੋਂ ਸਮਝਾਓ।

ਸਮੀਖਿਆ ਅਤੇ ਸਵੈ ਅਧਿਐਨ

ਇਹ ਸ਼ਾਨਦਾਰ ਵੀਡੀਓ ਦੇਖੋ ਜੋ ਦਿਖਾਉਂਦੀ ਹੈ ਕਿ ਕੰਪਿਊਟਰ ਜੈਨੇਟਿਕ ਐਲਗੋਰਿਥਮ ਦੁਆਰਾ ਪ੍ਰਸ਼ਿਕਸ਼ਿਤ ਨਿਊਰਲ ਨੈਟਵਰਕ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਸੁਪਰ ਮਾਰੀਓ ਖੇਡਣਾ ਕਿਵੇਂ ਸਿੱਖ ਸਕਦਾ ਹੈ। ਅਸੀਂ ਅਗਲੇ ਭਾਗ ਵਿੱਚ ਇਸ ਤਰ੍ਹਾਂ ਦੀਆਂ ਖੇਡਾਂ ਖੇਡਣ ਲਈ ਕੰਪਿਊਟਰ ਸਿੱਖਣ ਬਾਰੇ ਹੋਰ ਸਿੱਖਾਂਗੇ।

ਤੁਹਾਡਾ ਲਕਸ਼ ਡਾਇਓਫੈਂਟਾਈਨ ਸਮੀਕਰਨ - ਇੱਕ ਸਮੀਕਰਨ ਜਿਸਦੇ ਪੂਰਨ ਅੰਕ ਰੂਟ ਹਨ, ਨੂੰ ਹੱਲ ਕਰਨਾ ਹੈ। ਉਦਾਹਰਨ ਲਈ, ਸਮੀਕਰਨ a+2b+3c+4d=30 ਨੂੰ ਵੇਖੋ। ਤੁਹਾਨੂੰ ਉਹ ਪੂਰਨ ਅੰਕ ਰੂਟ ਲੱਭਣੇ ਹਨ ਜੋ ਇਸ ਸਮੀਕਰਨ ਨੂੰ ਪੂਰਾ ਕਰਦੇ ਹਨ।

ਇਹ ਅਸਾਈਨਮੈਂਟ ਇਸ ਪੋਸਟ ਤੋਂ ਪ੍ਰੇਰਿਤ ਹੈ।

ਸੰਕੇਤ:

  1. ਤੁਸੀਂ ਰੂਟਾਂ ਨੂੰ [0;30] ਅੰਤਰਾਲ ਵਿੱਚ ਮੰਨ ਸਕਦੇ ਹੋ
  2. ਜੀਨ ਵਜੋਂ, ਰੂਟ ਮੁੱਲਾਂ ਦੀ ਸੂਚੀ ਦੀ ਵਰਤੋਂ ਕਰਨ ਬਾਰੇ ਸੋਚੋ

Diophantine.ipynb ਨੂੰ ਸ਼ੁਰੂਆਤੀ ਬਿੰਦੂ ਵਜੋਂ ਵਰਤੋ।