Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Основы теории расписаний, Задача Джонсона 
:(
    Опции темы
MrDmitry
Дата 12.10.2015, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 556
Регистрация: 10.11.2006

Репутация: нет
Всего: нет



Здравствуйте, возник такой вопрос. У меня есть задание


Цитата

Разработать приложение для составления расписания системы конвейерного типа (задача Джонсона). 
Входными данными являются количество машин и работ. Результат выполнения программы: расписание в форме таблицы, суммарное время простоев по каждой машине и время завершения всех работ.


На сколько я понимаю задача Джонсона решается для 2 машин. Но если выходными данными является кол-во машин и работ, то это подразумевает что машин может быть больше 2 и соответственно решить задачу при помощи алгоритма Джонсона уже не получиться. 
Вопрос: Я что то не правильно понял или задание сформулировано не правильно? 
PM MAIL   Вверх
Агрох
Дата 13.10.2015, 13:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 176
Регистрация: 6.4.2013
Где: Москва

Репутация: 3
Всего: 6



Как вариант: рассчитываешь порядок подачи деталей для первой и второй машины, потом считаешь, что первая и вторая машина это одна машина (машина 1-2), у которой есть некое общее время между подачей детали на вход и выдачей готовой на выходе. Теперь рассматриваешь эту машину 1-2 и машину 3. И т.д.: машина 1-2-3 и машина 4, машина 1-2-3-4 и машина 5...
--------------------
Putin here, Putin there, Putin almost everywhere!
PM MAIL   Вверх
MrDmitry
Дата 14.10.2015, 18:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 556
Регистрация: 10.11.2006

Репутация: нет
Всего: нет



Я извиняюсь, а вы не могли бы помочь с реализацией задачи Джонсона для 2 машин? Накидал вот такую вот программу, но она выдает мне критическую ошибку (

Присоединённый файл ( Кол-во скачиваний: 1 )
Присоединённый файл  Source.rar 164,79 Kb
PM MAIL   Вверх
MrDmitry
Дата 14.10.2015, 21:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 556
Регистрация: 10.11.2006

Репутация: нет
Всего: нет



Ну или хотя бы подскажите почему ошибка выходит )
PM MAIL   Вверх
MrDmitry
Дата 15.10.2015, 20:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 556
Регистрация: 10.11.2006

Репутация: нет
Всего: нет



Снова попытался реализовать алгоритм джонсона

Код

Type TMinus=array[0..3] of integer;
....
function TMain.Minus: TMinus;
var
 min,min1,i:integer;
 machine1,machine2:Tminus;
begin
min:=25;
min1:=25;
//Минимальное число 1 машины
for i := 0 to length(matrix[0])-1 do
 begin
  if (matrix[0,i]>0) and (matrix[0,i]<min) then
  begin
   min:=matrix[0,i];
   Machine1[0]:=matrix[0,i];
   Machine1[1]:=matrix[1,i];
   Machine1[2]:=i;
   Machine1[3]:=0;
  end;
 end;

//Минимальное число 2 машины
for i := 0 to length(matrix[0])-1 do
begin
 if (matrix[1,i]>0) and (matrix[1,i]<min1) then
 begin
  min1:=matrix[1,i];
  Machine2[0]:=matrix[0,i];
  Machine2[1]:=matrix[1,i];
  Machine2[2]:=i;
  Machine2[3]:=1;
 end;
end;

if min<=min1 then
 begin
  Result[0]:=Machine1[0];
  Result[1]:=Machine1[1];
  Result[2]:=Machine1[2];
  Result[3]:=Machine1[3];
 end
else
 begin
  Result[0]:=Machine2[0];
  Result[1]:=Machine2[1];
  Result[2]:=Machine2[2];
  Result[3]:=Machine2[3];
 end;

matrix[0,Result[2]]:=0;
matrix[1,Result[2]]:=0;

Result[2]:=Result[2]+1;
end;

procedure TMain.OptimizationJhonson;
var
 i,j:integer;
 MinusMatrix:TMinus;
 M:Tmatrix;
 Tmax, Cmax:integer;
begin
SetLength(m, 4,length(matrix[0]));
for i := 0 to length(matrix[0])-1 do
begin
 minusMatrix:=minus();
 m[0,i]:=MinusMatrix[0];
 m[1,i]:=MinusMatrix[1];
 m[2,i]:=MinusMatrix[2];
 m[3,i]:=MinusMatrix[3];
end;


for i := 0 to length(m[0])-1 do
begin
if m[3,i]=0 then
 begin
  StringGrid2.Cells[i+1,0]:=inttostr(m[2,i]);
  StringGrid2.Cells[i+1,1]:=inttostr(m[0,i]);
  StringGrid2.Cells[i+1,2]:=inttostr(m[1,i]);
 end;
end;
for i := 0 to length(m[0])-1 do
begin
if m[3,i]=1 then
 begin
  StringGrid2.Cells[StringGrid2.ColCount-i,0]:=inttostr(m[2,i]);
  StringGrid2.Cells[StringGrid2.ColCount-i,1]:=inttostr(m[0,i]);
  StringGrid2.Cells[StringGrid2.ColCount-i,2]:=inttostr(m[1,i]);
 end;
end;
end;


Вроде бы все считается, но почему то иногда в StrinGrid 2 встречаются пустые ячейки... Не понимаю почему (
PM MAIL   Вверх
MrDmitry
Дата 19.10.2015, 20:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 556
Регистрация: 10.11.2006

Репутация: нет
Всего: нет



Блин помогите сделать последний рывок и доделать эти задания. Не могу сделать задачу Джонсона для 2 машин. А именно правильно вывести данные в таблицу и все потом посчитать.

Присоединённый файл ( Кол-во скачиваний: 0 )
Присоединённый файл  Source.rar 60,04 Kb
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1108 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.