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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? unit1.pas

?? 運輸問題-西北角法的源程序
?? PAS
字號:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, Grids, Buttons,math;
const long=250;
type
  TForm1 = class(TForm)
    panel2: TPanel;
    BitBtn2: TBitBtn;
    Panel1: TPanel;
    Label1: TLabel;
    Label2: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    BitBtn1: TBitBtn;
    RadioGroup1: TRadioGroup;
    Label3: TLabel;
    StringGrid1: TStringGrid;
    BitBtn3: TBitBtn;
    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure BitBtn3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
type  myset=set of 1..long;//自定義集合類型,集合元素類型為整型,
      //范圍1..long。
var m,n:integer; //m供應站的數量;n需求站的數量
    a:array[1..long] of Real;//供應站的供應量(以單位計算)
    b:array[1..long] of Real;//需求站的需要量(以單位計算)
    c:array[1..long] of array[1..long] of real;//運價矩陣
      //c[i,j]表示從第i個供應站到第j個需求站單位產品的運輸成本
    x:array[1..long] of array[1..long] of Real;//運輸矩陣
      //x[i,j]表示從第i個供應站供應給第j個需求站x[i,j]個單位的產品
    z:real;//目標函數值,即總的運輸成本
    r:Integer;//關鍵行,當前供應站的下標
    s:Integer;//關鍵列,當前需求站的下標
    rr:myset;//有待分配的供應站的下標的集合
    ss:myset;//有待分配的需求站的下標的集合

    u:array[1..long] of Real;//供應站的位勢值
    v:array[1..long] of Real;//需求站的位勢值
    d:array[1..long] of array[1..long] of real;//可能運費矩陣
    biaoshi:array[1..long] of array[1..long] of Char;//標識符
procedure chushihuabianliang;
var i,j:Integer;
begin
for i:=1 to long do
  begin
    for j:=1 to long do
      begin
        c[i,j]:=0;
        x[i,j]:=0;
      end;
    a[i]:=0;
    b[i]:=0;
  end;
rr:=[];
ss:=[];
z:=0;
end;
{-------------初始化變量-------------------------------------}

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;
end;
{--------------原理第一步,尋找待分配的供應站------------------------}

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;
end;
{--------------原理第一步,尋找待分配的需求站-------------------------}

procedure  first;
var i,j:Integer;
begin
for i:=1 to long do
  for j:=1 to long do
    d[i,j]:=-1;
for i:=1 to m do
  for j:=1 to n do
    if x[i,j]>0 then
      d[i,j]:=0;
end;
{--------------對應步近法求解的第一步-----------------------------------}

procedure  second;
var i,j:Integer;
    cishu:Integer;//累加while執行的次數
    temp_u:array[1..long] of Boolean;
    //長位long的boolean型變量數組,輔助判斷是否已求出所有的u
    temp_v:array[1..long] of Boolean;
    //長位long的boolean型變量數組,輔助判斷是否已求出所有的v
    temp_all:boolean;//判斷是否求出所有的u和v的位勢
    label 1;
begin
for i:=1 to long do
  begin
    temp_u[i]:=False;
    temp_v[i]:=False;
  end;//給局部變量賦初值為false表示沒有求出該點的位勢
for i:=1 to long do
  begin
    u[i]:=-1.11;
    v[i]:=-1.11;
  end;//初始化位勢值,此處無特別意義,只為防止浮點數運算的出錯
{------------初始化變量-----------------------------------------------}

1:v[1]:=0;
temp_v[1]:=True;
temp_all:=False;
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;//根據v的位勢,搜索求解u的位勢
    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;//根據u的位勢,搜索求解v的位勢
    temp_all:=True;
    for i:=1 to m do
      if temp_u[i]=False  then
         temp_all:=False;
    for j:=1 to n do
       if temp_v[j]=False  then
         temp_all:=False;
    cishu:=cishu+1;
  end;//while語句的結束

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;
{--------------對應步近法求解的第二步-----------------------------------}

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];
  //計算非基變量的檢驗數
end;
{--------------對應步近法求解的第三步-----------------------------------}

procedure  four;
var i,j:Integer;
begin
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]:='*';
end;
{--------------對應步近法求解的第四步-----------------------------------}

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;
{--------------對應步近法求解的第五步-----------------------------------}

procedure seven;
var i,j:Integer;
    temp:boolean;
    temp_s:integer;
    temp_r:integer;
    biaoshishuliang:Integer;
    label 1;
begin
biaoshi[r,s]:='+';//標明帶“+”的元素x[r,s]
temp_r:=r;//從第r行開始找
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 //除去當前行
           begin
             if  (x[i,j]>0) or (biaoshi[i,j]='*')  then
               begin
                 temp:=True;
                 Break;
               end;//判斷改列中是否有大于零或標識為*的元素
           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行中找出一個大于零的元素
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;
     goto 1;
  end;
end;
{--------------對應步近法求解的第七步-----------------------------------}

procedure eight;
var i,j:Integer;
    temp:real; //最小值
    temp_s:integer;
    temp_r:integer;
begin
for i:=1 to m do
  for j:=1 to n do
    if biaoshi[i,j]='-' then
      begin
        temp:=abs(x[i,j]);
        temp_r:=i;
        temp_s:=j;
        break;
      end; //確定一個初始最小值
for i:=1 to m do
  for j:=1 to n do
    if (biaoshi[i,j]='-') and (abs(x[i,j])<temp) then
      begin
        temp:=abs(x[i,j]);
        temp_r:=i;
        temp_s:=j;
      end;//尋找最小值并定位
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;//更新運輸矩陣
end;
{--------------對應步近法求解的第八步-----------------------------------}
procedure TForm1.BitBtn1Click(Sender: TObject);
var i,j:Integer;
begin
m:=StrToInt(Edit1.Text);
n:=StrToInt(Edit2.Text);
with StringGrid1 do
  begin
    RowCount:=m+2;
    ColCount:=n+2;
    for i:=0 to RowCount-1 do
      for j:=0 to ColCount-1 do
        Cells[j,i]:='';
    Width:=ColCount*(DefaultColWidth+2);
    Height:=RowCount*(DefaultRowHeight+2);
    top:=(panel2.Height-Height) div 2-20;
    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]:='供應量';
  end;
BitBtn2.Enabled:=True;
StringGrid1.SetFocus;
end;

procedure TForm1.BitBtn2Click(Sender: TObject);
var i,j:Integer;
    temp:real;
    //臨時變量,輔助在供應站和需求站種尋找最小的供需量
begin
chushihuabianliang;
for i:=1 to m do
  for j:=1 to n do
    if StringGrid1.Cells[j,i]<>'' then
       c[i,j]:=StrToFloat(StringGrid1.Cells[j,i]);
//讀取運價矩陣
for i:=1 to m do
  if StringGrid1.Cells[n+1,i]<>'' then
     a[i]:=StrToFloat(StringGrid1.Cells[n+1,i]);
//讀取供應量
for j:=1 to n do
  if StringGrid1.Cells[j,m+1]<>'' then
     b[j]:=StrToFloat(StringGrid1.Cells[j,m+1]);
//讀取需求量
{----------讀取已知條件,運價矩陣、供應量、需求量------------}
for i:=1 to m  do
  rr:=rr+[i];//設置初始待分配的供應站的下標集合
for j:=1 to n do
  ss:=ss+[j];//設置初始待分配的需求站的下標集合

while (ss<>[]) or (rr<>[]) do
  begin
    r:=find_r;
    s:=find_s;//完成原理的第一步
    if r=-1 then
      begin
        temp:=b[s];
        b[s]:=b[s]-temp;
        if b[s]=0 then ss:=ss-[s];
      end
    else if s=-1 then
      begin
        temp:=a[r];
        a[r]:=a[r]-temp;
        if a[r]=0 then rr:=rr-[r];
      end
    else
    begin
    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;
  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;

procedure TForm1.BitBtn3Click(Sender: TObject);
var i,j:Integer;
    label 1;
begin
1:first;
second;
third;
for i:=1 to m do
  for j:=1 to n do
    biaoshi[i,j]:=#0;
four;
five;
if d[r,s]<=0 then
  begin
    z:=0;
    for i:=1 to m do
      for j:=1 to n do
        begin
          StringGrid1.Cells[j,i]:=FloatToStr(x[i,j]);
          z:=z+x[i,j]*c[i,j];
        end;
     ShowMessage('最小運費是:'+FormatFloat('0.###',z));
     BitBtn3.Enabled:=False;
  end
else
  begin
    seven;
    eight;
    goto 1;
  end;
end;

end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色综合一区二区| 欧美精品一区二区三区蜜桃| 男男成人高潮片免费网站| 亚洲女性喷水在线观看一区| 亚洲国产精品成人综合色在线婷婷| 日韩欧美一二三四区| 欧美久久一区二区| 欧美一区二区久久久| 日韩一级黄色片| 日韩欧美在线一区二区三区| 6080日韩午夜伦伦午夜伦| 欧美一二三在线| 精品理论电影在线| 国产调教视频一区| 日韩毛片高清在线播放| 亚洲精品美国一| 性欧美大战久久久久久久久| 日韩电影在线观看电影| 精品一区二区三区日韩| 国产成a人亚洲精品| 色先锋久久av资源部| 日本精品视频一区二区| 欧美在线观看一区二区| 日韩亚洲欧美在线观看| 国产午夜精品一区二区| 一区二区三区91| 久久精品国产99久久6| 成人免费视频一区| 欧美日韩一区二区三区高清 | 欧美性大战久久久久久久 | 麻豆久久久久久久| 欧美亚洲动漫精品| 国产一区在线不卡| www.av亚洲| 中文字幕 久热精品 视频在线 | 99精品国产91久久久久久| 99久久精品国产麻豆演员表| 婷婷综合久久一区二区三区| 美女一区二区三区在线观看| 国产一区二区看久久| 色诱视频网站一区| 精品对白一区国产伦| 亚洲精品一卡二卡| 久久国产精品色婷婷| 色妹子一区二区| 国产丝袜在线精品| 视频一区二区三区入口| aaa亚洲精品| 久久久精品国产免费观看同学| 亚洲精品国产一区二区精华液| 卡一卡二国产精品 | 国产一区二区三区四| 色琪琪一区二区三区亚洲区| 26uuu精品一区二区三区四区在线| 亚洲精品欧美激情| 激情小说亚洲一区| 7777精品伊人久久久大香线蕉完整版 | 亚洲国产精品一区二区尤物区| 国产高清无密码一区二区三区| 色狠狠桃花综合| 国产精品久久久久久久蜜臀| 开心九九激情九九欧美日韩精美视频电影| 91无套直看片红桃| 中文字幕不卡的av| 国产成人精品免费网站| 精品少妇一区二区三区日产乱码 | 亚洲国产精品精华液2区45| 精品一区二区免费视频| 欧美精选午夜久久久乱码6080| 中文字幕一区在线| 成人中文字幕在线| 久久久精品2019中文字幕之3| 精品一区二区三区不卡| 最新中文字幕一区二区三区| 欧美一级免费观看| 国产精品毛片大码女人| 国产精品国产三级国产专播品爱网 | 亚洲国产日产av| 中文字幕av不卡| 中文字幕免费一区| 日韩三级高清在线| 欧美主播一区二区三区| 亚洲品质自拍视频| 91久久人澡人人添人人爽欧美| 亚洲靠逼com| 欧美日韩一区视频| 日本vs亚洲vs韩国一区三区| 91精品国产综合久久精品麻豆| 日韩精品免费专区| 精品国产乱子伦一区| 激情成人午夜视频| 欧美国产亚洲另类动漫| 99re在线精品| 婷婷丁香激情综合| 亚洲精品一区二区三区在线观看| 国产精品一区专区| 中文字幕中文乱码欧美一区二区| 99精品欧美一区二区三区小说| 亚洲精品免费在线观看| 欧美日韩国产一区二区三区地区| 石原莉奈一区二区三区在线观看| 日韩精品专区在线影院重磅| 国内成人精品2018免费看| 亚洲国产精品成人综合| 欧洲精品在线观看| 久久99精品国产麻豆婷婷| 欧美国产日韩亚洲一区| 精品视频999| 国产剧情av麻豆香蕉精品| 亚洲免费在线播放| 精品少妇一区二区三区免费观看 | 日韩精品电影在线观看| 国产清纯白嫩初高生在线观看91 | 亚洲bdsm女犯bdsm网站| 精品国产123| 欧美中文字幕不卡| 国产精品亚洲午夜一区二区三区| 亚洲欧洲99久久| 日韩久久免费av| 欧美性色综合网| 福利一区福利二区| 日韩不卡一二三区| 亚洲色图欧美在线| 亚洲天堂网中文字| 播五月开心婷婷综合| 亚洲一区二区三区三| 欧美色区777第一页| 亚洲精品乱码久久久久久黑人| 国产精品一级黄| 国产精品久久久久久久久免费樱桃 | 国产午夜亚洲精品理论片色戒| 亚洲一区二区三区视频在线| 久久蜜桃av一区二区天堂| 久久草av在线| 亚洲视频网在线直播| 久久新电视剧免费观看| 欧美精品日韩一本| 欧美日韩在线观看一区二区| 成人高清伦理免费影院在线观看| 久久国产福利国产秒拍| 午夜精品影院在线观看| 一区二区三区视频在线看| 久久久久97国产精华液好用吗| 欧美精选一区二区| 欧美精品丝袜久久久中文字幕| 91视频在线观看免费| 成人av免费观看| 成人永久aaa| 成人h精品动漫一区二区三区| 国产一区欧美二区| 精品一区二区三区在线播放 | 成人一区二区视频| 国产一区二区精品久久99| 久草中文综合在线| 激情五月激情综合网| 国产麻豆视频一区| 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 中文字幕一区二区三区精华液 | 麻豆精品久久精品色综合| 男男gaygay亚洲| 精品一区二区三区蜜桃| 国产一区二区电影| 成人免费福利片| voyeur盗摄精品| 91成人在线精品| 欧美高清你懂得| 欧美成人r级一区二区三区| 欧美sm极限捆绑bd| 国产精品欧美一级免费| |精品福利一区二区三区| 亚洲精品成人悠悠色影视| 亚洲国产欧美在线| 日韩精品免费专区| 国产在线视频一区二区| 成人小视频免费在线观看| 91国模大尺度私拍在线视频| 欧美视频自拍偷拍| 欧美成人乱码一区二区三区| 中文字幕不卡在线观看| 一区二区国产盗摄色噜噜| 日本亚洲免费观看| 成人一区二区三区| 欧美性受xxxx黑人xyx| 精品国产百合女同互慰| 中文字幕在线观看一区二区| 亚洲国产日韩av| 国产精品一卡二卡在线观看| 91免费版在线| 91在线观看成人| 国产精品久久久久久久裸模| 亚洲第四色夜色| 亚洲欧洲精品一区二区三区不卡 | 综合久久久久久| 一区二区三区国产豹纹内裤在线| 蜜臀久久99精品久久久久久9| 亚洲成人黄色影院| 盗摄精品av一区二区三区| 欧美日韩国产片| 欧美国产精品专区| 久久99久久久久久久久久久|