Автор: Пользователь скрыл имя, 27 Декабря 2011 в 14:59, курсовая работа
Задачи покрытия являются разновидностью задач упаковки, в которых условие непересечения заготовок заменяется на условие пересечения друг с другом и с границами области упаковки.
Постановка и математическая модель задачи
Метод решения, структограмма или пошаговое описание алгоритма
Описание параметров программы
Вычислительный эксперимент
Анализ результатов
{
case 20:
{
for (int i=0;i<18;i++)
{ b[i]=c[i-(i/3)];
b[i+1]=c[num-((i/3)+1)];
b[i+2]=c[i-(i/3)+1];
i=i+2;}
b[18]=c[12];
b[19]=c[13];
break;}
case 50:
{
for (int i=0;i<48;i++)
{ b[i]=c[i-(i/3)];
b[i+1]=c[num-((i/3)+1)];
b[i+2]=c[i-(i/3)+1];
i=i+2;
b[48]=c[32];
b[49]=c[33];
break;}
case 100:
{
for (int i=0;i<99;i++)
{ b[i]=c[i-(i/3)];
b[i+1]=c[num-((i/3)+1)];
b[i+2]=c[i-(i/3)+1];
i=i+2;
b[99]=c[66];
break
}
upakovka(b);
break
}
this->Invalidate();
textBox1->Text=v.ToString();
}
void quick1(kusok* a, int N)
{
int i = 0, j = N; // поставить указатели на исходные места
kusok temp, p;
p = a[N>>1]; // центральный элемент
// процедура разделения
do { while ( a[i].l < p.l ) i++;
while ( a[j].l > p.l ) j--;
{
temp = a[i]; a[i] = a[j]; a[j] = temp;
}
} while (i<=j);
//рекурсивные вызовы,если есть,что сортировать
if ( j > 0 ) quick1(a, j);
if ( N > i ) quick1(a+i, N-i);
}
void upakovka(kusok* m)//функция упаковки
{
while
glist.clear();//очистка глобального списка
mqueue std_set;//стандартная очередь
std_
glist.push_back(std_set);
for(i
{
if((
}
{
}
}
}
private: System::Void Form1_Paint(System::Object^
sender, System::Windows::Forms::
if(
{
int w=int(ClientSize.Width);
int h=int(ClientSize.Height);
array<Pen^>^ pens=gcnew array<Pen^>(2);//массив карандашей
pens[0]=gcnew Pen(Color::Green);
pens[1]=gcnew Pen(Color::Red);
Drawing::Font^shrift=gcnew System::Drawing::Font("Courier New",10);//шрифт для строкового вывода
Drawing::Brush^pencil1=gcnew System::Drawing::SolidBrush(
Drawing::Brush^pencil2=gcnew System::Drawing::SolidBrush(
Drawing::Point oxy(240,10);//точка начала для стержня
int dx=(w-400)/100;
int dy=(h-20)/(glist.size());
int n1=1,n2=1;
queue<kusok> bufer;
for(
{
e->Graphics->DrawString("L"+
e->Graphics->DrawLine(pens[0],
{ bufer.push((*i).Q.front());
e->Graphics->DrawLine(pens[1],
e->Graphics->DrawString("x"+(*
}
{ (*i).Q.push(bufer.front());
bufer.pop();
}
oxy.X=20;
oxy.Y=60;
n1=(int)ceil((double)(h-60)/
n2=(int)ceil((double)num/((dou
for(int i=0;i<n2;i++)
{
for(int j=0;(j<n1)&&(k<=num);j++)
e->Graphics->DrawString("x"+b[
}
}
}
private: System::Void button3_Click(System::Object^ sender, System::EventArgs^ e)
{
this-
}
private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e)
{
Close();
}
private: System::Void button4_Click(System::Object^ sender, System::EventArgs^ e)
{
Form_d^ SecondForm;
SecondForm=gcnew Form_d;
SecondForm->Show();
}
Информация о работе Простые однопроходные эвристики для решения одномерной задачи покрытия