Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.02.2012, 14:20   #1
zarinac
 
Регистрация: 29.10.2010
Сообщений: 3
По умолчанию Симплекс метод для решения задач линейного программирования

не могу работу в стрингриде оптимизировать....нужно найти мах элемент в последней строке подскажите пож-та!
zarinac вне форума Ответить с цитированием
Старый 01.02.2012, 15:30   #2
NetSpace
Участник клуба
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Сообщений: 1,814
По умолчанию

Код:
max:=-1000000;
i:=StringGrid1.RowCount-1;//это последняя трочка таблицы
for j:=0 to StringGrid1.ColCount-1 do//перебираем все стобцы
begin
   if(m<StringGrid1.Cells[j,i])then max:=StringGrid1.Cells[j,i];
end;
WriteLn(max);//выводим на экран или печатем на принтер, как угодно...
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.
NetSpace вне форума Ответить с цитированием
Старый 01.02.2012, 20:55   #3
Kazakhstan
 
Регистрация: 23.01.2012
Сообщений: 4
По умолчанию

zarinac. сможешь дать мне свою программу. пожалуйста
Kazakhstan вне форума Ответить с цитированием
Старый 16.03.2012, 16:02   #4
мария_nevelsk
Новичок
Джуниор
 
Регистрация: 16.03.2012
Сообщений: 1
По умолчанию

здравствуйте.написала прогу на симплекс метод, считает неправильно,помогите



Код:
type
  TForm1 = class(TForm)
    StringGrid1: TStringGrid;
    Button1: TButton;
    Button2: TButton;
    SpinEdit1: TSpinEdit;
    StringGrid2: TStringGrid;
    SpinEdit2: TSpinEdit;
    StringGrid3: TStringGrid;
    Edit1: TEdit;
    StringGrid4: TStringGrid;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
 n,i,j,m:integer;
  fun,x:array[1..100] of double;
  A:array [1..100,1..100] of double;
  basis:array [1..100] of integer;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

begin
  n:=spinedit1.value;
  m:=spinedit2.Value;
  stringgrid1.ColCount:=n;
  stringgrid2.ColCount:=n;
  stringgrid2.RowCount:=m;
  stringgrid3.ColCount:=m;
end;
procedure solve;
var i, j, i0, j0 : integer;
    tmp : double;
    opt : boolean;
begin
    opt := false;
    repeat
        j0 := -1; i0 := 0;
        while (j0 < m+n+1) and (A[m+1, j0] >= 0) do inc(j0);
        if A[m+1, j0] >= 0 then opt := true;

        if not opt then begin
            tmp := 10000;
            for i := 1 to m do
                if (A[i, j0] > 0) and (A[i, m+n+1] / A[i, j0] < tmp) then
                begin
                    tmp := A[i, m+n+1] / A[i, j0]; i0 := i;
                end;

            basis[i0] := j0;

            for i := 1 to m + 1 do
                    if i <> i0 then
                    begin
                            tmp := A[i, j0];
                            for j := 1 to m + n + 1 do
                                   A[i,j] := A[i,j] - A[i0,j]*tmp/A[i0,j0];
                    end;
            tmp := A[i0, j0];
            for j := 1 to m + n + 1 do
                    A[i0, j] := A[i0, j] / tmp;
        end;
    until opt;
end;
procedure TForm1.Button2Click(Sender: TObject);

begin


 for i:=1 to n do fun[i]:=strtofloat(stringgrid1.cells[i-1,0]);


 for i:=1 to n do
  for j:=1 to m do
         A[i,j]:=strtofloat(stringgrid2.Cells[i-1,j-1]);

      for i:=1 to m do A[i,n+m+1]:=strtofloat(stringgrid3.Cells[i-1,0]);
      for i := 1 to m do
        A[i, n+i] := 1;
    fillchar(A[m+1], sizeof(A[m+1]), 0);


    for i := 1 to m do
        basis[i] := n + i;
    for j := 1 to n do
        A[m+1,j] := -fun[j];

    solve;

    for i := 1 to m do
        if basis[i] <= n then

     for i:=1 to n do Stringgrid4.Cells[i-1,0]:=floattostr(x[i]);
             x[basis[i]] := A[i, m+n+1];
           edit1.Text:=floattostr(A[m+1,m+n+1]);
end;

end.

Последний раз редактировалось ACE Valery; 16.03.2012 в 16:46.
мария_nevelsk вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
исследовать метод квадратных корней и метод Холецкого для решения СЛАУ Vит@x@ Помощь студентам 0 22.11.2011 10:47
у кого есть исходник венгерский метод решения задач?паскаль или делфи seven123 Помощь студентам 0 06.02.2011 17:02
Метод линейного программирования, желательно в делфи Марат1510 Помощь студентам 0 08.12.2010 16:59
симплекс методом линейного программирование в строительстве nairi Помощь студентам 2 05.05.2010 07:33