日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MATLAB含有绝对值的线性规划,Lingo求解带绝对值的线性规划模型

發布時間:2023/12/14 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MATLAB含有绝对值的线性规划,Lingo求解带绝对值的线性规划模型 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近在解決一個費用分攤的問題,就是讓費用在幾個不同的項目之間分攤,并且分攤后的總額和費用之間差額的絕對值在一定的范圍之內,當然越小越好。該問題是一個典型的線性規劃問題,說實話如果沒有學過運籌學,肯定解決不了該問題,幸好博主學過,而且還解決過比這更復雜的問題,今天就寫一篇文章,懷念一下讀研時的美好時光,也給有類似問題的人一個思路。

先把這個問題用一個很簡單的例子描述:假設有三種項目費用分別是,項目A90 元,項目B80 元,項目C70元,總費用是1983元,現在要確定ABC三個各分配多少個,才能最接近1983元,且最大誤差不得超過30元。

根據上述問題確定模型(模型不知道描述得準確嗎,還有一個要求就是絕對值里面的數最小):

|90*X+80*Y+70*Z-1983|<=30;

X,Y,Z>=0;

用LINGO描述為:

Min=@ABS(90*x+80*y+70*z-1983);

@ABS(90*x+80*y+70*z-1983)<=30;

@GIN(x);

@GIN(y);

@GIN(z);

用LINGO求解的結果為:

從結果上看出,X、Y、Z分別取值18、1、4,能使分配的總和最接近費用值,與費用值的差額為3。

考慮到不止一個費用,而是有成百上千個費用需要分攤,那么就得考慮利用程序來批量計算。按之前上學時的做法,寫程序,通過程序調用數據生成模型來求解。這里就將數據保存到計事本中,然后用C語言根據計事本中的數據,生成模型求解,將求解結果返回到計事本中。

假設文本文件為data.txt,內容為編號,費用值兩個內容,現在用C讀取每行的費用值,生成模型求解,然后將結果保存到每行的結尾。

data.txt的內容:

1 1983

2 2023

3 2323

總結

以上是生活随笔為你收集整理的MATLAB含有绝对值的线性规划,Lingo求解带绝对值的线性规划模型的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。