亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? jisuan.pas

?? 運(yùn)輸問(wèn)題-西北角法的源程序
?? PAS
字號(hào):
unit jisuan;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, StdCtrls, Buttons, ExtCtrls,math;

type
  Tfrmjisan = class(TForm)
    Label3: TLabel;
    panel2: TPanel;
    BitBtn2: TBitBtn;
    StringGrid1: TStringGrid;
    BitBtn3: TBitBtn;
    BitBtn4: TBitBtn;
    BitBtn1: TBitBtn;
    procedure BitBtn3Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure BitBtn4Click(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmjisan: Tfrmjisan;

implementation

{$R *.dfm}
uses shuju;
function  find_r:Integer;
var i:integer;
begin
Result:=1;
for i:=1 to m do
  if i in rr then
     begin
       Result:=i;
       break;
     end;//從可選集合中選取關(guān)鍵行
if Result=0 then
  begin
    ShowMessage('程序出現(xiàn)初始數(shù)據(jù)錯(cuò)誤');
    Application.Terminate;//出現(xiàn)異常終止程序的運(yùn)行
  end;
end;
{--------------西北角法原理第一步,尋找待分配的供應(yīng)站---------------------}

function  find_s:Integer;
var i:integer;
begin
Result:=1;
for i:=1 to n do
  if i in ss then
     begin
       Result:=i;
       break;
     end;//從可選集合中選取關(guān)鍵列
if Result=0 then
  begin
    ShowMessage('程序出現(xiàn)初始數(shù)據(jù)錯(cuò)誤');
    Application.Terminate;//出現(xiàn)異常終止程序的運(yùn)行
  end;
end;
{--------------西北角法原理第一步,尋找待分配的需求站---------------------}

procedure  first;
var i,j:Integer;
begin
for i:=1 to long do
  for j:=1 to long do
    d[i,j]:=-1;//初始化檢驗(yàn)數(shù)
for i:=1 to m do
  for j:=1 to n do
    if x[i,j]>0 then
      d[i,j]:=0;//設(shè)置關(guān)鍵輸?shù)臋z驗(yàn)數(shù)為零
end;
{--------------對(duì)應(yīng)步近法求解的第一步-----------------------------------}

procedure  second;
var i,j:Integer;
    cishu:Integer;//累加while執(zhí)行的次數(shù)
    temp_u:array[1..long] of Boolean;
    //長(zhǎng)位long的boolean型變量數(shù)組,輔助判斷是否已求出所有的u
    temp_v:array[1..long] of Boolean;
    //長(zhǎng)位long的boolean型變量數(shù)組,輔助判斷是否已求出所有的v
    temp_all:boolean;//判斷是否求出所有的u和v的位勢(shì)
    label 1;//定義標(biāo)簽控制循環(huán)
begin
for i:=1 to long do
  begin
    temp_u[i]:=False;
    temp_v[i]:=False;
  end;//給局部變量賦初值為false表示沒(méi)有求出該點(diǎn)的位勢(shì)
for i:=1 to long do
  begin
    u[i]:=-1.11;
    v[i]:=-1.11;
  end;//初始化位勢(shì)值,此處無(wú)特別意義,只為防止浮點(diǎn)數(shù)運(yùn)算的出錯(cuò)
{------------初始化變量-----------------------------------------------}

1:v[1]:=0;
temp_v[1]:=True;//參考位勢(shì)點(diǎn)
temp_all:=False;//判斷是否求出所有的u和v的位勢(shì)
cishu:=0;
while (not temp_all) and  (cishu<(m+n)) do
  begin
    for i:=1 to m do
      if not temp_u[i] then
      begin
        for j:=1 to n do
          if temp_v[j] and (d[i,j]=0) then
             begin
               u[i]:=c[i,j]-v[j];
               temp_u[i]:=True;
               break;
             end;
      end;//根據(jù)v的位勢(shì),搜索求解u的位勢(shì)
    for j:=1 to n do
      if not temp_v[j] then
      begin
        for i:=1 to m do
          if temp_u[i] and (d[i,j]=0) then
            begin
               v[j]:=c[i,j]-u[i];
               temp_v[j]:=True;
               break;
             end;
      end;//根據(jù)u的位勢(shì),搜索求解v的位勢(shì)
    temp_all:=True;
    for i:=1 to m do
      if temp_u[i]=False  then
         temp_all:=False;//如果有任一行的位勢(shì)沒(méi)有求出,則ttemp_all為false
    for j:=1 to n do
       if temp_v[j]=False  then
         temp_all:=False;//如果有任一列的位勢(shì)沒(méi)有求出,則ttemp_all為false
    cishu:=cishu+1;
  end;//while語(yǔ)句的結(jié)束

if cishu=2*m*n then
   begin
     //showmessage('退化解');
     for i:=1 to m do
       if temp_u[i]=False then
         for j:=1 to n do
           if temp_v[j]=False then
              begin
                d[i,j]:=0;
                goto  1;
              end;
   end;
end;
{--------------對(duì)應(yīng)步近法求解的第二步-----------------------------------}

procedure  third;
var i,j:Integer;
begin
for i:=1 to m do
  for j:=1 to n do
    if d[i,j]=-1 then
       d[i,j]:=u[i]+v[j]-c[i,j];
  //計(jì)算非基變量的檢驗(yàn)數(shù)
end;
{--------------對(duì)應(yīng)步近法求解的第三步-----------------------------------}

procedure  four;
var i,j:Integer;
begin
for i:=1 to m do
  for j:=1 to n do
    biaoshi[i,j]:=#0;//初始化標(biāo)識(shí)符
for i:=1 to long do
  for j:=1 to long do
    if (x[i,j]=0) and (d[i,j]=0) then
        biaoshi[i,j]:='*';
//若運(yùn)輸矩陣和檢驗(yàn)數(shù)的某一格同時(shí)為零,則標(biāo)以*號(hào)
end;
{--------------對(duì)應(yīng)步近法求解的第四步-----------------------------------}

procedure five;
var i,j:Integer;
    temp:real; //最大值
begin
temp:=d[1,1]; //初始化最大值
r:=1;
s:=1;//記錄最大值的位置
for i:=1 to m do
  for j:=1 to n do
    if d[i,j]>temp then
      begin
        temp:=d[i,j];
        r:=i;
        s:=j;
      end;//尋找定位最大值
end;
{--------------對(duì)應(yīng)步近法求解的第五步-----------------------------------}

procedure seven;
var i,j:Integer;
    temp:boolean;//判斷是否找到閉回路
    temp_s:integer;//關(guān)鍵行
    temp_r:integer;//關(guān)鍵列
    biaoshishuliang:Integer;//輔助判斷看是否回到初始列
    label 1;//定義標(biāo)簽控制循環(huán)
begin
biaoshi[r,s]:='+';//標(biāo)明帶“+”的元素x[r,s]
temp_r:=r;//從第r行開(kāi)始找
temp_s:=s;
biaoshishuliang:=1;
1:for j:=1 to n do
    if (j<>temp_s) and (x[temp_r,j]>0) then //找大于零的元素
       begin
         temp:=False;
         for i:=1 to m do
           if i<>temp_r then //除去當(dāng)前行
           begin
             if  (x[i,j]>0) or (biaoshi[i,j]='*')  then
               begin
                 temp:=True;
                 Break;
               end;//判斷改列中是否有大于零或標(biāo)識(shí)為*的元素
           end;
         if (biaoshishuliang>1) and odd(biaoshishuliang) and (j=s) then
            temp:=true;//回到初始列,找到閉回路
         if temp then
           begin
              biaoshi[temp_r,j]:='-';
              temp_s:=j;
              biaoshishuliang:=biaoshishuliang+1;
              Break;
           end;
       end;//在r行中找出一個(gè)大于零的元素,在其相應(yīng)的列中至少有一個(gè)
            //大于零或標(biāo)以*號(hào)的元素
temp:=False;
for i:=1 to m do
  if biaoshi[i,s]='-' then
    begin
      temp:=True;
      Break;
    end;
if not temp then
  begin
    for i:=1 to m do
      if (i<>temp_r) and ((x[i,temp_s]>0) or (biaoshi[i,temp_s]='*')) then
         begin
           temp:=False;
           for j:=1 to n do
             if  (j<>temp_s) and (x[i,j]>0) then
               begin
                 temp:=True;
                 Break;
               end;
           if temp then
             begin
               biaoshi[i,temp_s]:='+';
               temp_r:=i;
               biaoshishuliang:=biaoshishuliang+1;
               break;
             end;
         end;//在r行中找出一個(gè)大于零的元素,在其相應(yīng)的列中至少有一個(gè)
            //大于零或標(biāo)以*號(hào)的元素
     goto 1;
  end;
end;
{--------------對(duì)應(yīng)步近法求解的第七步-----------------------------------}

procedure eight;
var i,j:Integer;
    temp:real; //最小值 
begin
temp:=0;
for i:=1 to m do
  for j:=1 to n do
    if biaoshi[i,j]='-' then
      begin
        temp:=abs(x[i,j]);
        break;
      end; //確定一個(gè)初始最小值
for i:=1 to m do
  for j:=1 to n do
    if (biaoshi[i,j]='-') and (abs(x[i,j])<temp) then
        temp:=abs(x[i,j]);//尋找最小值
for i:=1 to m do
  for j:=1 to n do
     begin
       if  biaoshi[i,j]='+' then
          x[i,j]:=x[i,j]+temp
       else if biaoshi[i,j]='-' then
          x[i,j]:=x[i,j]-temp;
     end;//更新運(yùn)輸矩陣
end;
{--------------對(duì)應(yīng)步近法求解的第八步-----------------------------------}


procedure Tfrmjisan.BitBtn2Click(Sender: TObject);
var i,j:Integer;
    temp:Integer;
    //臨時(shí)變量,輔助在供應(yīng)站和需求站種尋找最小的供需量
    sum1,sum2:integer;
begin 
sum1:=0;
sum2:=0;//初始化總供應(yīng)量和總需求量
for i:=1 to m do
 sum1:=sum1+a[i];//計(jì)算總供應(yīng)量
for j:=1 to n do
  sum2:=sum2+b[j];//計(jì)算總需求量
if sum1>sum2 then //對(duì)供大于需情況的處理
   begin
     ShowMessage('供大于需,需加入虛擬采購(gòu)站');
     n:=n+1;
     for i:=1 to m do
       c[i,n]:=0;
     b[n]:=sum1-sum2;
     with StringGrid1 do
       begin
         ColCount:=ColCount+1;//表格列數(shù)加一
         Width:=Width+DefaultColWidth;//根據(jù)需要調(diào)整表格寬度
         cells[ColCount-2,0]:='虛站點(diǎn)';
       end;
   end
else if sum1<sum2 then //對(duì)需大于供情況的處理
   begin
     ShowMessage('需大于供,需加入虛擬供應(yīng)站');
     m:=m+1;
     for j:=1 to n do
       c[m,j]:=0;
     a[m]:=sum2-sum1;
     with StringGrid1 do
       begin
         RowCount:=rowCount+1;//表格新增一行
         Height:=Height+DefaultRowHeight; //根據(jù)需要調(diào)整表格高度
         Cells[0,rowCount-2]:='虛站點(diǎn)';
       end;
   end;
with StringGrid1 do
  begin
    for i:=1 to m do
      Cells[ColCount-1,i]:=IntToStr(a[i]);
    for j:=1 to n do
        Cells[j,RowCount-1]:=IntToStr(b[j]);
    top:=(panel2.Height-Height) div 2-50;
    Left:=(panel2.Width-Width) div 2;//動(dòng)態(tài)調(diào)整位置
    Cells[ColCount-1,0]:='供應(yīng)量';
    Cells[0,RowCount-1]:='需求量';
    for i:=1 to m do
      cells[ColCount-1,i]:=IntToStr(a[i]);
    for j:=1 to n do
      cells[j,rowCount-1]:=IntToStr(b[j]);
  end;
rr:=[];
ss:=[];
for i:=1 to m  do
  rr:=rr+[i];//設(shè)置初始待分配的供應(yīng)站的下標(biāo)集合
for j:=1 to n do
  ss:=ss+[j];//設(shè)置初始待分配的需求站的下標(biāo)集合
while (ss<>[]) or (rr<>[]) do
  begin
    r:=find_r;
    s:=find_s;//完成原理的第一步
    temp:=min(a[r],b[s]);
    x[r,s]:=temp;
    a[r]:=a[r]-temp;
    b[s]:=b[s]-temp;//完成原理的第二步
    if a[r]=0 then rr:=rr-[r];
    if b[s]=0 then ss:=ss-[s];
  end;
for i:=1 to m do
   for j:=1 to n do
        StringGrid1.Cells[j,i]:=FloatToStr(x[i,j]);
BitBtn2.Enabled:=False;
BitBtn3.Enabled:=True;
end;
{----------求取并顯示最初可行的運(yùn)輸方案-------------------------------}

procedure Tfrmjisan.BitBtn3Click(Sender: TObject);
var i,j:Integer;
    cishu:Integer;//迭代次數(shù)
    label 1,2;//定義標(biāo)簽控制循環(huán)
begin
//BitBtn2Click(sender);//先求解可行方案,防止直接點(diǎn)擊該按鈕
cishu:=0;
1:cishu:=cishu+1;
first;//根據(jù)運(yùn)輸矩陣,求部分檢驗(yàn)數(shù)
second;//求所有行和所有列的為勢(shì)
third;//根據(jù)位勢(shì)求其它的檢驗(yàn)數(shù)
four;//表示有無(wú)退化情況的發(fā)生
five;//找出檢驗(yàn)數(shù)中的最大者,和此最大值
if d[r,s]<=0 then //對(duì)應(yīng)步進(jìn)法原理的第六步,判斷當(dāng)前解的最優(yōu)性
2: begin
    z:=0;//運(yùn)費(fèi)值
    for i:=1 to m do
      for j:=1 to n do
        begin
          StringGrid1.Cells[j,i]:=FloatToStr(x[i,j]);
           //顯示最優(yōu)運(yùn)輸方案
          z:=z+x[i,j]*c[i,j];//累加計(jì)算最小運(yùn)費(fèi)
        end;
     ShowMessage('最小運(yùn)費(fèi)是:'+FormatFloat('0.###',z));//顯示最小運(yùn)費(fèi)
  end //條件成立,當(dāng)前解為最優(yōu)解,顯示最優(yōu)解
else
  begin
    seven;//新解的確定
    eight;//更新運(yùn)輸矩陣
    if cishu>50 then
      begin
        ShowMessage('該運(yùn)輸問(wèn)題具有,多種最有運(yùn)輸方案');
        goto 2;//直接顯示一種最優(yōu)方案
      end;
    goto 1;
  end;//條件不成立,重新迭代計(jì)算

end;
{----程序的主體部分,調(diào)用各個(gè)自定義過(guò)程和函數(shù),求解最有運(yùn)輸方案----}

procedure Tfrmjisan.BitBtn4Click(Sender: TObject);
begin
frmshuju.Show;
frmjisan.Hide;//返回到數(shù)據(jù)輸入窗口
end;

procedure Tfrmjisan.BitBtn1Click(Sender: TObject);
begin
frmjisan.Close;
frmjisan.Free;
frmshuju.Close;
frmshuju.Free;
Application.Terminate;
//終止程序的運(yùn)行
end;

procedure Tfrmjisan.FormShow(Sender: TObject);
var i,j:Integer;
begin
with StringGrid1 do
  begin
    RowCount:=m+2;
    ColCount:=n+2;//動(dòng)態(tài)設(shè)置行數(shù)和列數(shù)
    Width:=ColCount*(DefaultColWidth+2);
    Height:=RowCount*(DefaultRowHeight+2);//動(dòng)態(tài)調(diào)整寬度和高度
    top:=(panel2.Height-Height) div 2-50;//動(dòng)態(tài)調(diào)整位置
    Left:=(panel2.Width-Width) div 2;
    for i:=1 to m do
      Cells[0,i]:='A'+IntToStr(i);
    for j:=1 to n do
      Cells[j,0]:='B'+IntToStr(j);
    Cells[0,0]:='供\需';
    Cells[0,m+1]:='需求量';
    Cells[n+1,0]:='供應(yīng)量'; //設(shè)置表框
  end;//控制調(diào)整結(jié)果顯示界面
for i:=1 to StringGrid1.RowCount-1 do
  for j:=1 to StringGrid1.ColCount-1 do
    StringGrid1.Cells[j,i]:='';
BitBtn2.Enabled:=True;
BitBtn3.Enabled:=False;
end;
{------------------設(shè)置初始表格-------------------------------}
end.

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品久久久久久久午夜片| 免费观看久久久4p| 国产三级一区二区三区| 精品99久久久久久| 欧美成人r级一区二区三区| 日韩欧美一区中文| 欧美大白屁股肥臀xxxxxx| 欧美一区二区三区视频免费播放| 精品视频在线视频| 欧美日韩一区不卡| 678五月天丁香亚洲综合网| 欧美日韩成人综合在线一区二区| 欧美亚洲国产一区在线观看网站| 欧美在线一区二区三区| 欧美主播一区二区三区美女| 欧美日韩久久久一区| 欧美一区二区视频在线观看2022| 欧美一区二区三区喷汁尤物| 日韩欧美一二区| 久久精品视频网| 中文字幕日本不卡| 一区二区三区在线不卡| 午夜精品爽啪视频| 久久国产视频网| 国产ts人妖一区二区| www.久久久久久久久| 色婷婷av一区二区三区之一色屋| 欧美精品乱人伦久久久久久| 欧美一二三在线| 久久精品人人做| 亚洲精品一二三区| 日韩国产在线观看一区| 国产一区在线精品| 91丨九色丨蝌蚪丨老版| 欧美熟乱第一页| 精品国产一区二区在线观看| 亚洲国产高清不卡| 亚洲伊人伊色伊影伊综合网| 日韩和欧美一区二区三区| 国产乱妇无码大片在线观看| 99精品欧美一区二区蜜桃免费| 在线一区二区三区| 欧美不卡视频一区| 亚洲色图在线看| 免费在线看一区| 成人国产免费视频| 欧美一区二区美女| 国产精品久久久久久久久搜平片 | av激情成人网| 欧美日韩一区中文字幕| www成人在线观看| 亚洲一区二区三区在线| 国产美女主播视频一区| 在线精品视频一区二区| 精品国精品自拍自在线| 国产精品久久久久国产精品日日| 日日夜夜精品视频免费| av网站免费线看精品| 日韩精品一区二区三区三区免费| 国产精品久久久久久久浪潮网站 | 久久国产人妖系列| 色综合久久88色综合天天免费| 91精品欧美一区二区三区综合在 | 同产精品九九九| 成人国产精品视频| 精品日韩一区二区三区| 亚洲一区二区三区四区在线观看| 国产乱子伦一区二区三区国色天香| 日本一区免费视频| 亚洲sss视频在线视频| 成人自拍视频在线| 日韩一区二区三区三四区视频在线观看 | 午夜精品久久久久久| 成人午夜在线播放| 日韩精品一区在线| 午夜精品一区二区三区电影天堂| av亚洲产国偷v产偷v自拍| 26uuuu精品一区二区| 日韩电影在线免费| 精品视频一区三区九区| 中文字幕亚洲欧美在线不卡| 国内精品久久久久影院薰衣草| 91成人网在线| 亚洲欧美电影院| www.日韩在线| 国产精品美日韩| 国产高清亚洲一区| 日韩欧美一区二区久久婷婷| 亚洲国产成人av网| 色婷婷激情综合| 亚洲日本免费电影| aaa亚洲精品| 国产精品久久毛片| 北条麻妃一区二区三区| 国产欧美一区二区三区在线看蜜臀| 美腿丝袜亚洲综合| 欧美一级一级性生活免费录像| 亚洲超丰满肉感bbw| 欧美日韩一卡二卡| 亚洲图片欧美视频| 欧美中文字幕久久| 午夜精品在线看| 欧美精品九九99久久| 日韩专区中文字幕一区二区| 欧美精品视频www在线观看| av电影一区二区| 国产精品国产三级国产aⅴ原创 | av在线不卡电影| 欧美高清激情brazzers| 亚洲综合一区在线| 在线精品视频小说1| 一区二区在线观看视频在线观看| 91极品美女在线| 亚洲黄色尤物视频| 欧美性猛片aaaaaaa做受| 亚洲精品成a人| 色综合久久久久综合体桃花网| 亚洲另类春色校园小说| jiyouzz国产精品久久| 中文av一区特黄| 成人短视频下载| 最新国产成人在线观看| 91视频国产资源| 亚洲欧美日韩国产一区二区三区| a在线播放不卡| 亚洲乱码国产乱码精品精的特点 | 国产成人综合在线观看| 亚洲桃色在线一区| 国产精品国产三级国产aⅴ原创| 国产福利一区二区三区视频在线 | 午夜精品一区二区三区电影天堂| 欧美亚男人的天堂| 亚洲超丰满肉感bbw| 欧美精品少妇一区二区三区| 亚洲成人中文在线| 精品国一区二区三区| 国产河南妇女毛片精品久久久| 亚洲国产成人午夜在线一区| 99视频精品全部免费在线| 久久免费看少妇高潮| 国产成人高清视频| 亚洲女与黑人做爰| 在线观看91精品国产麻豆| 麻豆freexxxx性91精品| 国产欧美1区2区3区| 91一区一区三区| 亚洲综合丁香婷婷六月香| 欧美精品久久99| 国产乱码精品一品二品| 中文字幕一区二区三区在线不卡 | 一区二区中文视频| 欧美系列日韩一区| 麻豆国产欧美日韩综合精品二区| 日韩精品中文字幕一区二区三区 | 久久综合久久综合九色| 成人黄页毛片网站| 亚洲一区二区五区| 日韩女优制服丝袜电影| 激情五月婷婷综合| 2020国产精品久久精品美国| 成人黄色在线看| 五月天一区二区三区| 精品国产乱码久久| 国产成人自拍在线| 丝袜诱惑亚洲看片| 国产亚洲精久久久久久| 91麻豆国产精品久久| 日韩1区2区3区| 国产精品女人毛片| 91精品国产综合久久福利软件| 国产老女人精品毛片久久| 亚洲色图一区二区| 欧美一区二区三区白人| 91传媒视频在线播放| 国产精品资源在线| 午夜欧美一区二区三区在线播放| 欧美大片免费久久精品三p| 欧美在线观看视频一区二区三区| 狠狠v欧美v日韩v亚洲ⅴ| 亚洲精品免费在线观看| 精品国产乱码久久久久久夜甘婷婷| av在线免费不卡| 精品亚洲国产成人av制服丝袜| 1区2区3区国产精品| 精品久久久久久最新网址| 成人爱爱电影网址| 精品一区精品二区高清| 午夜欧美视频在线观看| 亚洲日本在线看| 精品国产91九色蝌蚪| 欧美一区在线视频| 91福利国产成人精品照片| 国产精品性做久久久久久| 日韩成人一区二区| 亚洲欧洲日产国码二区| 欧美网站一区二区| av高清不卡在线| 国产91在线观看丝袜| 亚洲精品免费在线观看| 一区二区三区四区在线|