Lingo學習(二)——線性規劃基礎、矩陣工廠

一、線性規劃基礎

(一)方法

① 一個線性規劃中只含一個目標函數。(兩個以上是多目標線性規劃,Lingo無法直接解)

② 求目標函數的最大值或最小值分別用max = …或min = …來表示。

③ 以!開頭,以;結束的語句是注釋語句;

④ 線性規劃和非線性規劃的本質區別是目標函數是否線性,其余一致,故不需要區分。

但值得注意的是,非線性規劃的求解十分困難,基本得不到全局最優解。 ?

(二)例題

某工廠有兩條生產線,分別用來生產M和P兩種型號的產品,利潤分別為200元/個和300元/個,生產線的最大生產能力分別為每日100和120,生產線每生產一個M產品需要1個勞動日(1個工人工作8小時稱為1個勞動日)進行調試、檢測等工作,而每個P產品需要2個勞動日,該廠工人每天共計能提供160勞動日,假如原材料等其他條件不受限制,問應如何安排生產計劃,才能使獲得的利潤最大?

(三)解

設兩種產品的生產量分別為x1x2,則該問題的數學模型為:

目標函數:max?z=200x1+300x2?

約束條件為:

x1<=100

x2<=200

x1+2*x2<=160

xi>=0, ?i=1,2?

(四)程序
max = 200*x1 + 300*x2;
x1 <= 100; ?
x2 <= 120;
x1 + 2*x2 <= 160;

由Lingo信息可知,運行時間依舊0秒,目標值為29000,此時x1是100,x2是30。

二、矩陣工廠

(一)矩陣工廠:生產一維矩陣

先來看看例子,不必在意其中的空格(Lingo不讀取空格):

sets: ?????????????????
factory /1..6/ : a,b; ?
plant /1..3/ : x,y; ???
endsets ???????????????

以上程序對應知識點:

① factory和plant都是制造矩陣的工廠,但它們是兩家不同的工廠。

② factory工廠后面的 /1..6/ 說明它專門生產1*6的矩陣。

???factory工廠最后面出現的a和b,都是1*6的矩陣。

③ plant工廠后面的 /1..3/ 說明它專門生產1*3的矩陣。

? ? plant工廠最后面出現的x和y,都是1*3的矩陣。

④ 矩陣工廠的名字factory是隨便起的,工廠所生產行矩陣的名字a和b也是隨便起的。

⑤ 以上這四句話,本質是定義了四個行矩陣的大小,矩陣工廠只是中介。

⑥ 生產完矩陣后,工廠和矩陣之間將脫開聯系。

⑦ Lingo不是一行一行讀代碼的,所以用sets:和endsets表示矩陣工廠生產流程的起止。

(二) 矩陣的賦值

矩陣工廠不能只生產矩陣,還要給矩陣賦初值才行,例子如下:

sets: ????????????????????????????
factory /1..6/ : a,b; ????????????
plant /1..3/ : c,x; ??????????????
endsets ??????????????????????????
data: ????????????????????????????
a = 1, 2, 3, 4, 5, 6; ????????????
b = 6.0, 5.0, 4.0, 3.0, 2.0, 1.0;
c = 10, 20, 30; ??????????????????
enddata ??????????????????????????

以上程序對應以下知識點:

① 不是每個矩陣都要賦值,有些矩陣正是我們要求解的變量。

② 需要賦值的矩陣必須賦滿,不能給6個元素的矩陣只賦3個數值。

③ Lingo中可以給矩陣賦整數,也可以賦小數。

④ Lingo不是一行一行讀代碼的,所以用data:和enddata表示矩陣賦值的起止。

?(三)?循環與求和

【例】已知模型如下,請編程求解:

【for循環】

題中約束條件:i=1,2,…,5可以利用for循環一步到位。

???@for( gc(i) : a(i)*x(i) = S );

① for循環,括起整行語句,因為S=ai*xi,i=1,2,…,5,相當于5個約束條件;

② for循環內部,先寫工廠,以告訴for循環幾次,之后再上接約束條件。

③ 此處的i可帶可不帶,甚至可以換成j、k或m等等。

④ 二維矩陣工廠出現后,同時會出現i和j,那時必須帶i和j。

【sum求和】

題中約束條件,可以利用sum求和一步到位。

?@sum( gc(i) : x(i) ) = 5000;

① sum求和,不可以括起完整的約束條件,因為一般的求和的結構是這樣的: x1+x2+x3+x4+x5=5000

② sum求和內部,先寫工廠,以告訴sum求和幾次,之后再上接約束條件。

③ 此處的i可帶可不帶。

④ 二維矩陣工廠出現后,同時會出現i和j,那時必須帶。

【for與sum出現的標志】

① 約束條件后面有i=1,2,…,5一定在最外層套上for。

② 約束條件前面是出現求和符號?,一定在中間加上sum。

  • 【例題】

【程序】
model: ????????????????????????
sets: ?????????????????????????
gc /1..5/ : a,x; ??????????????
endsets ???????????????????????
data: ?????????????????????????
a = 1,2,3,4,5; ????????????????
enddata ???????????????????????
max = S; ??????????????????????
@for( gc(i) : a(i)*x(i) = S );
@sum( gc(i) : x(i) ) = 5000; ??
end ???????????????????????????

PS:使用了矩陣工廠創建矩陣后,整個程序需用model:和end包起來。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/44148.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/44148.shtml
英文地址,請注明出處:http://en.pswp.cn/web/44148.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Android11 MTK 狀態欄添加無Sim卡圖標

1、近日&#xff0c;查看測試提出的bug時&#xff0c;發現了一個問題&#xff0c;設備在未安裝sim卡時&#xff0c;狀態欄中不顯示無sim卡的圖標。 2、解決 路徑&#xff1a;****\frameworks\base\packages\SystemUI\src\com\android\systemui\statusbar\phone\StatusBarSign…

01、Kerberos安全認證之原理及搭建命令使用學習筆記

文章目錄 前言一、Kerberos原理1.1、數據安全防護&#xff08;kerberos所屬的層次&#xff09;1.2、Kerberos介紹1.3、Kerberos名詞介紹1.4、Kerberos術語1.5、Kerberos認證流程1.5.1、Kerberos流程圖1.5.2、第一次通信&#xff1a;客戶端與AS1.5.3、第二次通信&#xff1a;客戶…

cpp使用第三方庫

使用第三方庫在C中進行編程是一種常見的做法&#xff0c;因為它可以讓利用現成的代碼來實現更復雜的功能&#xff0c;而不必從頭開始編寫。下面是一個示例&#xff0c;演示如何在C項目中引入并使用一個第三方庫。這個例子將使用Boost庫&#xff0c;它是C中廣泛使用的一個庫&…

60、基于淺層神經網絡的數據擬合(matlab)

1、基于淺層神經網絡的數據擬合的簡介、原理以及matlab實現 1&#xff09;內容說明 基于淺層神經網絡的數據擬合是一種常見的機器學習方法&#xff0c;用于通過輸入數據來擬合一個非線性函數。這種方法通常包括一個輸入層、一個或多個隱藏層和一個輸出層。神經網絡通過學習權…

廣電日志分析系統

需求 廣電集團中有若干個系統都產生日志信息&#xff0c;目前大約分布與70到80臺服務器中&#xff0c;分別是windows與Linux操作系統。需要將服務器上產生的日志文件利用我們的技術進行解析 設計 每個日志工作站負責30-50個服務器的日志解析工作。可以根據實際需求進行設置&…

ENSP實現防火墻區域策略與用戶管理

目錄 實驗拓撲與要求?編輯 交換機與防火墻接口的配置 交換機&#xff1a; 創建vlan 接口配置 防火墻配置及接口配置 防火墻IP地址配置 云配置?編輯?編輯?編輯 在瀏覽器上使用https協議登陸防火墻&#xff0c;并操作 訪問網址&#xff1a;https://192.168.100.1:844…

51單片機嵌入式開發:9、 STC89C52RC 操作LCD1602技巧

STC89C52RC 操作LCD1602技巧 1 代碼工程2 LCD1602使用2.1 LCD1602字庫2.2 巧妙使用sprintf2.3 光標顯示2.4 寫固定長度的字符2.5 所以引入固定長度寫入方式&#xff1a; 3 LCD1602操作總結 1 代碼工程 承接上文&#xff0c;在原有工程基礎上&#xff0c;新建關于lcd1602的c和h…

linux中如何設置多個redis進程并且設置獨立密碼?

在Linux中設置多個Redis進程&#xff08;實例&#xff09;并為每個實例設置獨立密碼&#xff0c;你需要為每個Redis實例配置不同的配置文件&#xff0c;并在這些配置文件中指定不同的端口、數據目錄、密碼等。Redis本身并不直接支持在配置文件中設置“密碼”來阻止未授權訪問&a…

ArduPilot開源飛控之AP_Mount_Backend_Serial

ArduPilot開源飛控之AP_Mount_Backend_Serial 1. 源由2. 框架設計2.1 類定義2.2 構造函數2.3 init 方法2.4 受保護成員 3. 重要方法4. 總結5. 參考資料 1. 源由 AP_Mount_Backend_Serial是AP_Mount_Backend基于串口的通信的一個擴展模版。 2. 框架設計 繼承自 AP_Mount_Back…

Sentieon應用教程:本地使用-Quick_start

1、準備工作&#xff1a; License下載鏈接&#xff1a;http://www.sentieon.com/eula/b703e839c8c7c5b8fa73238277fd5da23a0276be54712edb46ee8f4d4f3d873fbf 軟件下載地址&#xff1a; https://insvast-download.oss-cn-shanghai.aliyuncs.com/Sentieon/release/sentieon-gen…

11-《風信子》

風信子 風信子&#xff08;學名&#xff1a;Hyacinthus orientalis L.&#xff09;&#xff1a;是多年草本球根類植物&#xff0c;鱗莖卵形&#xff0c;有膜質外皮&#xff0c;皮膜顏色與花色成正相關&#xff0c;未開花時形如大蒜&#xff0c;原產地中海沿岸及小亞細亞一帶&am…

【Vue】vue-element-admin組件化功能

1. 組件的封裝 在vue-element-admin中&#xff0c;每個功能區域或UI元素都被封裝成一個或多個Vue組件。這些組件可以是簡單的按鈕、輸入框&#xff0c;也可以是復雜的表格、表單或頁面布局。每個組件都包含了其模板&#xff08;HTML結構&#xff09;、邏輯&#xff08;JavaScr…

【論文精讀】Exploring the Causality of End-to-End Autonomous Driving

背景信息 團隊&#xff1a;百度 代碼&#xff1a;https://github.com/bdvisl/DriveInsight 論文思想簡述&#xff1a;這篇論文并不是提出SOTA模型&#xff0c;而是提出了一些評估模型的方法。 目前已有的分析方法 大語言模型。VAQ來提供解釋性&#xff0c;比如DriveVLM&…

C++基礎(二)

目錄 1.類和對象 1.1類的定義 1.2訪問限定符 1.3類域 2.實例化 2.1實例化概念 2.2對象大小 3.this指針 4.類的默認成員函數 4.1構造函數 4.2析構函數 4.5運算符重載 1.類和對象 1.1類的定義 類的定義格式 class為定義類的關鍵字&#xff0c;Stack為類的名字&…

7月11日學習打卡,數據結構棧

大家好呀&#xff0c;本博客目的在于記錄暑假學習打卡&#xff0c;后續會整理成一個專欄&#xff0c;主要打算在暑假學習完數據結構&#xff0c;因此會發一些相關的數據結構實現的博客和一些刷的題&#xff0c;個人學習使用&#xff0c;也希望大家多多支持&#xff0c;有不足之…

dataX入門

下載dataX https://datax-opensource.oss-cn-hangzhou.aliyuncs.com/202308/datax.tar.gz 然后 下載后解壓至本地某個目錄&#xff0c;進入bin目錄&#xff0c;即可運行同步作業&#xff1a; $ cd {YOUR_DATAX_HOME}/bin $ python datax.py {YOUR_JOB.json} 要求你有python…

vue-grid-layout詳解

vue-grid-layout 教程 vue-grid-layout 是一個用于 Vue.js 的響應式拖放網格布局組件&#xff0c;允許開發者創建可調整大小、可拖放的布局&#xff0c;廣泛用于儀表板、管理面板等復雜布局需求。本教程將介紹如何安裝、配置和使用 vue-grid-layout。 目錄 安裝基本使用 布局…

怎樣在 C 語言中進行類型轉換?

&#x1f345;關注博主&#x1f397;? 帶你暢游技術世界&#xff0c;不錯過每一次成長機會&#xff01; &#x1f4d9;C 語言百萬年薪修煉課程 通俗易懂&#xff0c;深入淺出&#xff0c;匠心打磨&#xff0c;死磕細節&#xff0c;6年迭代&#xff0c;看過的人都說好。 文章目…

暑假自律日記九

7.10 &#xff08;半小時日記打卡之——暑假第九天&#xff09; 前言&#xff1a;或許是累了&#xff0c;今天的效率和進度可以說是歷史最低了&#xff0c;調休了一天&#xff0c;算是歇會 日程 八點二十起床&#xff0c;在床上賴了一會 九點二十抵達逸夫樓&#xff0c;開始補…

kafka發送消息流程

配置props.put(ProducerConfig.PARTITIONER_CLASS_CONFIG, RoundRobinPartitioner.class); public Map<String,Object> producerConfigs(){Map<String,Object> props new HashMap<>();props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG,bootstrapServers…