主要内容

このページの翻訳は最新ではありませ。

问题ベースフレームワークででのののわたる在モデルわたる作作作作作者:作者

この例では,問題ベースフレームワークで多期間にわたる在庫モデルを作成する方法を示します。問題は,経時的コスト変動が予測できるさまざまな原料を使用した,ある期間の配合肥料の生産スケジュールを設定することです。あらかじめ,肥料への需要はわかっているものとします。目的は,需要を満たしながら利益を最大化することです。コストは,原材料の購入と経時的な肥料の保管にかかります。将来またはその他の契約を使用して,あらかじめコストを求めることができます。

肥料および原料

粒状肥料には,窒素(N),リン(P),カリウム(K)が栄養素として含まれています。次の原材料を配合して,必須栄養素を含む配合肥料を取得できます。

加载肥料混合= blendDemand.Properties.VariableNames%肥料生产
融合=1x2细胞{'平衡'}{' HighN '}
营养= rawNutrients.Properties.RowNames
营养=3 x1细胞{'n'} {'p'} {'k'}
画= rawNutrients.Properties.VariableNames%的原材料
Raws =.1x6细胞{'MAP'} {'Potash'} {'AN'} {'AS'} {'TSP'} {'Sand'}

2つの综合性肥料肥料,“高”综合でnが10%加载率れ计20%であるであること除き,同じ同じ要件(10%n,10%p,10%k送比)です。

disp (blendNutrients)%表是百分比
平衡高________ ______ n 10 20 p 10 10 k 10 10

原材料の名前と栄養素の重量比は次のとおりです。

DISP(RAWNURRINES)%表是百分比
地图钾肥AS作为TSP砂____ ____ __ _____ ____ n 11 0 35 21 0 0 p 48 0 0 0 46 0 k 0 60 0 0 0 0

原材料には栄養素はありません。沙は、必要に応じて他の原料を希釈し、栄養素の必要な割合 (重量比) を実現します。

これらの各量の数を変数に格纳します。

nblends =长度(混合);nraws =长度(原始);nnuririents =长度(营养素);

需要および收益の予测

あらかじめ,问题问题内のの间におけるにおける需要つ需要需要需要需要わかっわかってているとししししわかっわかっわかってているししししし

disp (blendDemand)
平衡HighN ________ _____月750 300 800二月三月310 900 600 850四月五月400 700 350 700六月七月300 700 200 600八月九月200 600 200 550十月十一月200 550 200 550月200

结合肥料を贩売际トントン単位の価はていますます。

disp (blendPrice)
平衡HighN ________ _____ 400 550

原材料の価格

あらかじめ,原材料のトン単位の格はててものしします。

DISP(Rawcost)
地图钾肥TSP沙子  ___ ______ ___ ___ ___ ____ 630年1月360年2月350 610 300 135 250 80 300 140 275 80 350 630 300 135 275 80 3月350年4月320年5月610 300 125 250 80 600 300 125 250 80 320 600 300 125 250 80 6月7月8月320 600 300 125 250 80 320 600 300 125 240 80 320 600 300 125 240 80 9月10月310 600 300 125 24080 11月310 600 300 125 240 80 12月340 600 300 125 240 80

保管コスト

结合しした肥料を保管するためのコスト,トン単位と时空。

DISP(库存)
10.

どの期間でも,配合肥料は合計库存处理空间トン以下しか保管できません。

DISP(库存处理物)
1000

どの期間においても,合計productionCapacityトン以下しか生产できできん。

DISP(生产加湿)
1200

生产,贩売および在附近

使用可以能なな肥料が一乘数つまり,1より大约期间について,1より大约期间について,

库存(时间,产品)=库存(时间-1,产品)+生产(时间,产品)-销售(时间,产品)

このこの式の终わりにカウントいいいますいいますますます式ますいいいい式式式式式い式式式式式式式いいい式式式式式式式式式式式式式ははますいますます式式式式式式式式式式式式式式式式式式式式式式式式式式式式式式式式式式式式式式式式式式ことこと式式式式式ことことことことこと式式式式れること式式式式式式こと式式式式式れるれることことことををいいれるれるれることことををいいいれることことことことことこといれるれるれるれることことことことことこといれるれることことことことことことことことことことことことことことことことことことことことことことことことことことことことことことことことことことことことことことことことことことことことことことことことれることことことことことことことことことことことことことことことことことことことことことことことことことことことことことことことことことことことことことことことことことことことことことことことことことことことことことことことことことことことことことことことことこといいれる

几个月= blenddemand.properties.rownames;nomshs =长度(月份);

次のように,初期在庫は期間1の在庫に影響します。

库存(1,产品)=初始血管(产品)+生产(1,产品) - 销售(1,产品)

初期在庫は,データBlendinventory {'初始',:}にあります。最终在は,データblendInventory{“最终”:}にあります。

つまり,晚期内に注は満たすことができに注文。

最適化問題の定式化

この問題の目的関数は利益で,その最大化を目指します。そのため,問題ベースフレームワークで最大化問題を作成します。

inventoryProblem = optimproblem ('Objectivesense'“最大化”);

問題の変数は,毎月生産および販売する配合肥料の数量と,それらの配合を生産するために使用する原材料です。出售の上限は,各期間の各配合肥料に対して,需要blendDemandです。

make = Optimvar('制作',几个月,混合,'indowbound',0);卖= Optimvar('卖',几个月,混合,'indowbound',0,'上行'blendDemand{月,混合});使用= optimvar ('用',月,画,混合,'indowbound',0);

さらに,各時点の在庫を表す変数を作成します。

库存= Optimvar('存货',几个月,混合,'indowbound',0,'上行',库存处理;

問題変数に関して目的関数を計算するには,収益とコストを計算します。収益は,各配合肥料の販売量に価格を乗算し,それをすべての期間と配合について合算した金額です。

收入=总和(blendPrice{1,}。*总和(销售(月,混合),1));

原料のコストは,各时代でで使された各原料のコストをを値たについてについて値値値値値値値値値値値です値ですですですですですですですですははははははごとにに使れたたごとごとにられるられるれた额ににけけられるためれた额ににけられるためためたたににけられるためためもた额ににけられるためため额全体で合并し。

Blendsused = Sum(使用(月,原始,混合),3);IngredientCost = Sum(Sum(Rawcost {个月,Raws}。* Blendsed));

保管コストは,各期間で在庫の保管にかかったコストを,期間と配合について合算した値です。

StorageCost = InventoryCost * Sum(库存(:));

ここここ,ドット表记を使使用し,问题の客观的プロパティに目的关关をを配置し。

inventoryProblem。客观的= revenue - ingredientCost - storageCost;

问题の制约

問題にはいくつかの制約があります。最初に,問題変数の一連の制約として在庫の式を表します。

materialBalance = optimconstr(月、混合);timeAbove1 =月(2:结束);previousTime =月(1:end-1);materialBalance(timeAbove1,:) = inventory(timeAbove1,:) == inventory(previousTime,:) +......制造(timeAbove1:) -销售(timeAbove1:);materialBalance(1,:) = inventory(1,:) == blendInventory{'最初的',:} +......制作(1,:)  - 卖(1,:);

同様に,最终的な在库が固定であるという制约を表します。

finalC = inventory(end,:) == blendInventory{'最终的',:};

各時点の在庫の合計は制限されています。

boundedInv = sum(inventory,2) <= inventoryCapacity;

各期間には制限された量まで生産できます。

processlimit = sum(make,2)<= presitingcapacity;

综合ごとごとにに生产される量は,使使原材料のの。关联は,合計を娘娘村x 1 xnblends.の配列から娘娘村nblends.列の配列に変換します。

rawMaterialUse = squeeze(sum(use(months,raws,共混),2))== make(months,共混);

各な値もたなければませんん。次の内部では,乘のステートメントは,乘算rawNutrients {n,画}*使用(m,画,b) 'が使使さたについて各时尚

blendNutrientsQuality = optimconstr(个月,营养,混合);为了m = 1:nomshs为了b = 1:nblends为了n = 1:nNutrients blendNutrientsQuality(m,n,b) = rawNutrients{n,raws}*use(m,raws)' == blendNutrients{n,b}*make(m,b);结尾结尾结尾

制约を问题に配置します。

inventoryProblem.Constraints.materialBalance = materialBalance;inventoryProblem.Constraints.finalC = finalC;inventoryProblem.Constraints.boundedInv = boundedInv;inventoryProblem.Constraints.processLimit = processLimit;inventoryProblem.Constraints.rawMaterialUse = rawMaterialUse;inventoryProblem.Constraints.blendNutrientsQuality = blendNutrientsQuality;

问题を解く

问题问题の定式は完了问题を解き解き解き。

[SOL,FVAL,EXITFLAG,输出] =解决(库存问题)
使用linprog解决问题。找到最佳解决方案。
sol =结构体字段:库存:[12x2双]制作:[12x2双]卖:[12x2双]使用:[12x6x2双]
fval = 2.2474e + 06
ExitFlag = OptimalAllyolution.
输出=结构体字段:迭代:162 CarrowViroation:5.4570E-12消息:'找到最佳解决方案。算法:'Dual-Simplex'FirstOrderopt:6.5235E-12解算器:'Linprog'

结果结果を表形式形式と形式で表示します

如果EXITFLAG> 0 FPRINTF(“利润:% g \ n”, fval);市场= array2table (sol.make,'rownames',月,'variablenames', strcat ('制作',融合));sellt = array2table(sol.sell,'rownames',月,'variablenames', strcat ('卖',融合));Storet = Array2Table(Sol.Inventory,'rownames',月,'variablenames', strcat (“存储”,融合));ProductionPlant = [Maket Sellt Storet]图Subplot(3,1,1)Bar(Sol.Make)图例(“平衡”'高'“位置”“eastoutside”)标题(“数量”)子图(3,1,2)条(Sol.sell)传奇(“平衡”'高'“位置”“eastoutside”)标题('销售金额') subplot(3,1,3) bar(sol.inventory) legend(“平衡”'高'“位置”“eastoutside”)标题('存储量')包含('时间'的)结尾
利润:2.24739 e + 06
productionPlanT =12×6表makeBalanced makeHighN sellBalanced sellHighN storeBalanced storeHighN ____________ _________ ____________ _________ _____________ __________ 1100年1月100 750 300 550 0二月600 310 800 310 350 0三月550 650 900 600 0 50月850 350 850 400 0 0月700 350 700 350 0 0六月700 300700 300 0 0 0 700 200 700 200 0 0 8 8月600 200 0 0 0 9月600 200 200 0 0 0 0 0月0日0月550 200 550 200 0 0 11月550 200 550 200 0 0 0 12 12月750 400 550 200 200 200

関連するトピック