Skip to content

Commit 4519b8a

Browse files
committed
Tüm Açılara Göre Rota Yaptırıldı
1 parent 3a599cc commit 4519b8a

File tree

9 files changed

+143
-57
lines changed

9 files changed

+143
-57
lines changed

.vs/GA-ARP-3/v16/.suo

512 Bytes
Binary file not shown.
0 Bytes
Binary file not shown.

GA-ARP-3/Form1.cs

+143-57
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ private void Form1_Load(object sender, EventArgs e)
3434

3535

3636
baglanti = new SqlConnection("Data Source = BASRI\\BASRI; Initial Catalog = GA-ARP-3; Integrated Security = True");
37-
da = new SqlDataAdapter("Select *From Müsteriler order by Acılar", baglanti);
37+
da = new SqlDataAdapter("Select *From Müsteriler", baglanti);
3838
ds = new DataSet();
3939
DataTable dt = new DataTable();
4040
baglanti.Open();
@@ -82,15 +82,15 @@ private void Form1_Load(object sender, EventArgs e)
8282

8383

8484

85-
for (i = 0; i < MüşteriSayısı; i++)
85+
/* for (i = 0; i < MüşteriSayısı; i++)
8686
for (j = 0; j < MüşteriSayısı; j++)
8787
{
8888
Uzaklık[i, j] = Math.Pow(Convert.ToDouble(MusteriGridWiew.Rows[i].Cells[1].Value) - Convert.ToDouble(MusteriGridWiew.Rows[j].Cells[1].Value), 2);
8989
Uzaklık[i, j] += Math.Pow(Convert.ToDouble(MusteriGridWiew.Rows[i].Cells[2].Value) - Convert.ToDouble(MusteriGridWiew.Rows[j].Cells[2].Value), 2);
9090
Uzaklık[i, j] = Math.Sqrt(Uzaklık[i, j]);
9191
Uzaklık[i, j] = Math.Ceiling(Uzaklık[i, j]);
9292
// listBox1.Items.Add(Uzaklık[i, j]);
93-
}
93+
}*/
9494
}
9595

9696
private void button1_Click(object sender, EventArgs e)
@@ -100,85 +100,163 @@ private void button1_Click(object sender, EventArgs e)
100100
int[] Çözüm = new int[MüsteriSayisi];
101101
int[] EnİyiÇözüm = new int[MüsteriSayisi];
102102
double[,] Uzaklık = new double[MüsteriSayisi, MüsteriSayisi];
103+
double[] Sonuç = new double[MüsteriSayisi];
103104
int i, j;
104-
double Sonuç, EnİyiSonuç;
105+
double EnİyiSonuç;
105106
for (i = 0; i < MüsteriSayisi; i++)
106107
for (j = 0; j < MüsteriSayisi; j++)
107108
{
108109
Uzaklık[i, j] = Math.Pow(Convert.ToDouble(MusteriGridWiew.Rows[i].Cells[1].Value) - Convert.ToDouble(MusteriGridWiew.Rows[j].Cells[1].Value), 2);
109110
Uzaklık[i, j] += Math.Pow(Convert.ToDouble(MusteriGridWiew.Rows[i].Cells[2].Value) - Convert.ToDouble(MusteriGridWiew.Rows[j].Cells[2].Value), 2);
110111
Uzaklık[i, j] = Math.Sqrt(Uzaklık[i, j]);
111112
Uzaklık[i, j] = Math.Ceiling(Uzaklık[i, j]);
112-
listBox1.Items.Add(Uzaklık[i, j]);
113+
//listBox1.Items.Add(String.Format("{0}\n {1} \n {2}", i, j,Uzaklık[i, j]));
114+
113115
}
114-
for (i = 0; i < MüsteriSayisi; i++)
116+
#region Parçacık Rotaları Süpürme Algoritması Yöntemi ile Oluşturulu
117+
//a'yı burda tanımlamamızın sebebi rota hafızası için
118+
int Mus1, Mus2, Min;
119+
EnİyiSonuç = 0;
120+
List<Musteri> bireyinMusterileri = MusteriListesi.CloneList().ToList();
121+
for (int c = 0;c<MüsteriSayisi-1;c++)
115122
{
116-
Çözüm[i] = i;
117-
}
118-
Sonuç = Geography.AmaçFonkHesapla(MüsteriSayisi, Çözüm, Uzaklık);
119-
Array.Copy(Çözüm, EnİyiÇözüm, Çözüm.Length);
120-
EnİyiSonuç = Sonuç;
123+
124+
List<Araclar> bireyinAraclari = Araclist.CloneList().ToList();
125+
//string Guzergah = " ";
126+
string[] Guzergah = new string[MüsteriSayisi];
127+
Sonuç[c] = 0;
128+
listBox1.Items.Add(String.Format("{0}", Guzergah));
129+
int a = 0;
121130

122-
int Mus1,Mus2,Son;
131+
if (c != 0 && c < MüsteriSayisi-1)
132+
{
133+
134+
_ = new Musteri();
135+
Musteri insert = bireyinMusterileri[1];
136+
bireyinMusterileri.RemoveAt(1);
137+
bireyinMusterileri.Add(insert);
138+
139+
for (int b = 0; b < bireyinAraclari.Count; b++)
140+
{
123141

142+
if (a != 0 && a < MüsteriSayisi )
143+
{
144+
Mus1 = bireyinMusterileri[0].ID;
145+
Guzergah[c] += "*" + Convert.ToString(Mus1);
146+
Mus2 = bireyinMusterileri[a].ID;
147+
Sonuç[c] += Uzaklık[Mus1,Mus2];
148+
}
149+
if (a == MüsteriSayisi)
150+
{
151+
Mus2 = bireyinMusterileri[0].ID;
152+
Guzergah[c] += "*" + Convert.ToString(Mus2);
153+
listBox1.Items.Add(String.Format("{0}", Guzergah[c]));
154+
Mus1 = bireyinMusterileri[a - 1].ID;
155+
Sonuç[c] += Uzaklık[Mus1, Mus2];
156+
for (i = 0; i <= c; i++)
157+
{
158+
if (EnİyiSonuç > Sonuç[i])
159+
EnİyiSonuç = Sonuç[i];
160+
}
161+
listBox1.Items.Add(Sonuç[c].ToString());
162+
listBox1.Items.Add(EnİyiSonuç.ToString());
163+
break;
164+
}
165+
for (a = a; a < MüsteriSayisi; a++)
166+
{
167+
try
168+
{
169+
if (bireyinAraclari[b].Kullanildimi == false && bireyinMusterileri[a].Talep <= bireyinAraclari[b].Kapasite && bireyinMusterileri[a].Gidildimi == false)
170+
{
171+
Mus1 = bireyinMusterileri[a].ID;
172+
bireyinAraclari[b].Kapasite = bireyinAraclari[b].Kapasite - bireyinMusterileri[a].Talep;
173+
Guzergah[c] += "*" + Convert.ToString(Mus1);
174+
Mus2 = bireyinMusterileri[a+1].ID;
175+
// bireyinMusterileri[a].Gidildimi = true;
176+
if (bireyinMusterileri[a+1].Talep < bireyinAraclari[b].Kapasite)
177+
{
178+
Sonuç[c] += Uzaklık[Mus1, Mus2];
179+
}
180+
}
181+
else
182+
{
183+
//döngü bitince Yeni araca geçer fakat a değeri kaldığı yerden devam eder.
184+
Mus1 = bireyinMusterileri[a - 1].ID;
185+
Mus2 = bireyinMusterileri[0].ID;
186+
Guzergah[c] += "*" + Convert.ToString(Mus2) + "---";
187+
//bireyinAraclari[b].Kullanildimi = true;
188+
Sonuç[c] += Uzaklık[Mus1, Mus2];
189+
break;
190+
}
191+
}
192+
catch (Exception)
193+
{
124194

125-
List<Araclar> bireyinAraclari = Araclist.CloneList().ToList();
126-
List<Musteri> bireyinMusterileri = MusteriListesi.CloneList().ToList();
127-
//a'yı burda tanımlamamızın sebebi rota hafızası için
128-
int a = 0;
129-
string Guzergah = " ";
130-
Sonuç = 0;
131-
for (int b = 0; b < bireyinAraclari.Count; b++)
132-
{
133-
if (a == MüsteriSayisi)
134-
{
135-
Mus1 = bireyinMusterileri[0].ID;
136-
Guzergah += "*" + Convert.ToString(Mus1);
137-
listBox1.Items.Add(String.Format("{0}", Guzergah));
138-
Sonuç += Uzaklık[a-1, 0];
139-
listBox1.Items.Add(Sonuç.ToString());
140-
break;
141-
}
142-
if (a != 0 && a<MüsteriSayisi-1)
143-
{
144-
Mus1 = bireyinMusterileri[0].ID;
145-
Guzergah += "*" + Convert.ToString(Mus1);
146-
Sonuç += Uzaklık[0, a];
195+
}
196+
}
197+
}
147198
}
148-
for (a = a; a < MüsteriSayisi; a++)
199+
else
149200
{
150-
try
201+
for (int b = 0; b < bireyinAraclari.Count; b++)
151202
{
152-
if (bireyinAraclari[b].Kullanildimi == false && bireyinMusterileri[a].Talep <= bireyinAraclari[b].Kapasite && bireyinMusterileri[a].Gidildimi == false)
203+
204+
if (a != 0 && a <MüsteriSayisi)
153205
{
154-
Mus1 = bireyinMusterileri[a].ID;
155-
bireyinAraclari[b].Kapasite = bireyinAraclari[b].Kapasite - bireyinMusterileri[a].Talep;
156-
Guzergah += "*" + Convert.ToString(Mus1);
157-
bireyinMusterileri[a].Gidildimi = true;
158-
if(bireyinMusterileri[a+1].Talep<bireyinAraclari[b].Kapasite)
159-
{
160-
Sonuç += Uzaklık[a, a + 1];
161-
}
206+
Mus1 = bireyinMusterileri[0].ID;
207+
Guzergah[c] += "*" + Convert.ToString(Mus1);
208+
Mus2 = bireyinMusterileri[a].ID;
209+
Sonuç[c] += Uzaklık[Mus1, Mus2];
162210
}
163-
else
211+
if (a == MüsteriSayisi)
164212
{
165-
//döngü bitince Yeni araca geçer fakat a değeri kaldığı yerden devam eder.
166-
Mus1 = bireyinMusterileri[0].ID;
167-
Guzergah += "*" + Convert.ToString(Mus1) + "---";
168-
169-
bireyinAraclari[b].Kullanildimi = true;
170-
Sonuç += Uzaklık[a-1,0];
213+
Mus2 = bireyinMusterileri[0].ID;
214+
Guzergah[c] += "*" + Convert.ToString(Mus2);
215+
listBox1.Items.Add(String.Format("{0}", Guzergah[c]));
216+
Mus1 = bireyinMusterileri[a - 1].ID;
217+
Sonuç[c] += Uzaklık[Mus1, Mus2];
218+
EnİyiSonuç = Sonuç[c];
219+
listBox1.Items.Add(Sonuç[c].ToString());
220+
listBox1.Items.Add(EnİyiSonuç.ToString());
171221
break;
172222
}
173-
174-
}
175-
catch (Exception)
176-
{
223+
for (a = a; a < MüsteriSayisi; a++)
224+
{
225+
try
226+
{
227+
if (bireyinAraclari[b].Kullanildimi == false && bireyinMusterileri[a].Talep <= bireyinAraclari[b].Kapasite && bireyinMusterileri[a].Gidildimi == false)
228+
{
229+
Mus1 = bireyinMusterileri[a].ID;
230+
bireyinAraclari[b].Kapasite = bireyinAraclari[b].Kapasite - bireyinMusterileri[a].Talep;
231+
Guzergah[c] += "*" + Convert.ToString(Mus1);
232+
Mus2 = bireyinMusterileri[a + 1].ID;
233+
//bireyinMusterileri[a].Gidildimi = true;
234+
if (bireyinMusterileri[a+1].Talep < bireyinAraclari[b].Kapasite)
235+
{
236+
Sonuç[c] += Uzaklık[Mus1, Mus2];
237+
}
238+
}
239+
else
240+
{
241+
//döngü bitince Yeni araca geçer fakat a değeri kaldığı yerden devam eder.
242+
Mus1 = bireyinMusterileri[a - 1].ID;
243+
Mus2 = bireyinMusterileri[0].ID;
244+
Guzergah[c] += "*" + Convert.ToString(Mus2) + "---";
245+
bireyinAraclari[b].Kullanildimi = true;
246+
Sonuç[c] += Uzaklık[Mus1, Mus2];
247+
break;
248+
}
249+
}
250+
catch (Exception)
251+
{
177252

253+
}
254+
}
178255
}
179256
}
180-
181257
}
258+
#endregion
259+
listBox1.Items.Add(EnİyiSonuç.ToString());
182260
}
183261
}
184262
internal static class Extensions
@@ -187,5 +265,13 @@ public static IList<T> CloneList<T>(this IList<T> list) where T : ICloneable
187265
{
188266
return list.Select(item => (T)item.Clone()).ToList();
189267
}
268+
public static IList<T> Swap<T>(this IList<T> list, int indexA, int indexB)
269+
{
270+
T tmp = list[indexA];
271+
list[indexA] = list[indexB];
272+
list[indexB] = tmp;
273+
return list;
274+
}
190275
}
276+
191277
}

GA-ARP-3/bin/Debug/GA-ARP-3.exe

512 Bytes
Binary file not shown.

GA-ARP-3/bin/Debug/GA-ARP-3.pdb

0 Bytes
Binary file not shown.
Binary file not shown.
Binary file not shown.

GA-ARP-3/obj/Debug/GA-ARP-3.exe

512 Bytes
Binary file not shown.

GA-ARP-3/obj/Debug/GA-ARP-3.pdb

0 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)