1. 程式人生 > >求解規劃問題:lingo的初探

求解規劃問題:lingo的初探

今天聽康神講解才知道數模程式設計考驗的是選手會不會使用一些騷操作,懂不懂一些黑科技。。

所以lingo是一定得學的了。。

使用起來十分無腦。。然而也很容易忘了。。用的時候來這裡看一下正合適。。

先上程式碼。。

max=98*x1+277*x2-x1^2-0.3*x1*x2-2*x2^2;
x1<=2*x2;
x1+x2<100;
@gin(x1);@gin(x2);!x1 x2為整數;
十分簡單的程式碼。。只是為了展示語法。。

!表示註釋

語句之間要用分號隔開,包括註釋!!!

點選開始解規劃問題。。。

然後變數取值有直接寫x1=xxx   x2=xxxx什麼的。。

另外目標函式最值顯示在Objective Value那裡。。。

然後這軟體有個設定是預設自變數為正整數。。

min=2*x1+x2;
x1+x2<=1;
x2-x1<=1.5;
x1+x2>=-1;
這個求解出來x1=x2=0,明顯不合要求。。

當需要取到小數和負數時,可以用free函式。。

min=2*x1+x2;
x1+x2<=1;
x2-x1<=1.5;
x1+x2>=-1;
@free(x1);@free(x2);
這樣解出來 x1=-1.25    x2=0.25

還有一個bnd函式也很管用

min=2*x1+x2;
@bnd(-0.5,x1,0.5);
@bnd(0.5,x2,1.5);

注意引數的位置就行了。。

再來幾個常見的函式(換湯不換藥)


@cos(x)             返回x的餘弦值
@tan(x)             返回x的正切值
@exp(x)             返回常數e的x次方
@log(x)             返回x的自然對數
@lgm(x)             返回x的gamma函式的自然對數
@sign(x)            如果x<0返回-1;否則,返回1

@floor(x)           返回x的整數部分。當x>=0時,返回不超過x的最大整數;當x<0時,返回不低於x最大整數。@smax(x1,x2,…,xn)  返回x1x2…,xn中的最大值
@smin(x1,x2,…,xn)  返回x1,x2,…,xn中的最小值

然後需要來一個比較重要的例子。。。


sets:
x/X1..X6/:asum;
y/Y1..Y8/:bsum;
link(x,y):c,v;
endsets

[email protected](link:c*v);

@for(y(j):
@sum(x(i):v(i,j))=bsum(j));

@for(x(i):
@sum(y(j):v(i,j))<=asum(i));

data:
asum=60 55 51 43 41 52;
bsum=35 37 22 32 41 32 43 38;
c=6 2 6 7 4 2 9 5
4 9 5 3 8 5 8 2
5 2 1 9 7 4 3 3
7 6 7 3 9 2 7 1
2 3 9 5 7 2 6 5
5 5 2 2 8 1 4 3;
enddata
這個例子和其他規劃問題其實無兩樣,就是變數和條件過多了,不用set寫就真的太醜了。。

然後set的用法還弄不清楚。。這個做為模板用就可以。。

當然還是要硬撤一下自己對這個模板的理解。。

先說說sets裡面的

:後面應該是繼承了某個類吧。。沒有繼承預設為123456...

一維繼承一維豈不是直接複製?

然後link這個可以隨便改的。。並不是關鍵字。。

因此這裡應該是生成了一個類似map一樣的東西?通過x,y來索引,元素為一個元組,[c,v]

然後c定義好的了已經,剩下就是求解v了。。

然後像x(i)這樣的估計就是迴圈著令i=x1,x2這樣。。即把x裡面的元素賦值給i。。

函式呼叫看來應該都是用@來識別了。。然後sum其實也是個小迴圈吧。。

貌似還有一些操作。。有需要再來學習。。以後應該會不定期補充。。。

http://tieba.baidu.com/p/1796749594?red_tag=n2651462235&traceid=

http://tieba.baidu.com/p/1773658973?pn=3

這個連結裡面有lingo的詳細講解。。而且還有一些黑科技。。

相關推薦

求解規劃問題lingo初探

今天聽康神講解才知道數模程式設計考驗的是選手會不會使用一些騷操作,懂不懂一些黑科技。。所以lingo是一定得學的了。。使用起來十分無腦。。然而也很容易忘了。。用的時候來這裡看一下正合適。。先上程式碼。。

動態規劃如何求解最大連通節點值

題目 有N個小球,上面有數字,分別對應1……N,每個小球有個價值,第i個小球價值對應Value[i];有N-1個木棍,一個木棍兩端分別連線著一個小球,把N個小球連線起來,並且保證任意兩個小球間都不存在兩條不同的路徑可以互相到達。 現在要把1號小球連通的M個刷上油漆(連

產品規劃如何規劃代金券系統?

方便 不必要 img sdk 基本 文檔 提示 字段 互聯網 ps:此代金券系統的規劃是建立在SDK的產品上 一、代金券需求 近期,公司的遊戲產品需要做折扣系統,目的提高付費率。簡單來說就是玩家購買遊戲商品獲得一定的折扣。 二、關於折扣形式 這裏折扣形式可以有: 直接在產

史上最好程序員的職業規劃五年從程序員到架構師之路!

最好 淘寶 好的項目 com 職業 消息 關於 技術學 收獲 第一部分:對於參加工作一年以內的同學。恭喜你,這個時候,你已經擁有了一份Java的工作。這個階段是你成長極快的階段,而且你可能會經常加班。但是加班不代表你就可以松懈了,永遠記得我說的那句話,從你入行那一刻起,你就

動態規劃劃分數 復習

pan 動態規劃 namespace str size esp LV oid sin #include <iostream> #include <algorithm> using namespace std; const int max

職業規劃專屬程序員的巡禮之年

職場 程序員 百度百科:巡禮之年是由三組鋼琴獨奏組曲組成的一套專輯,由法蘭茲·李斯特(Franz Liszt)作曲。一般被認為是李斯特最傑出的作品,為李斯特音樂風格的集大成之作。第三組曲特別被認為代表了李斯特的晚期風格。文章起名為「巡禮」,多少有點回顧的意思。當然,你說我受了村上《沒有色彩的多崎作和他

動態規劃任務調度問題(雙塔問題)

mat 任務調度 lse system www. 地方 ava can sca 題目鏈接 兩個CPU,處理N個任務,每個任務有一個處理時長(0~4096),要把這些任務全部處理完,如何調度才能最高效? N個圓柱,要搭建兩個塔,要使這兩個塔高度之差盡量小,問較高的那座塔多高?

Kubernetes系列(1) 初探

1. 背景 在部門內容組織了一次K8s的培訓,普及了下K8s的概念、框架、操作等,為便於後期查閱,也為了進一步深究K8s,因此開展K8s系列,週期不定… 2. 概念 (1) 含義:來自希臘語,意為”舵手”,又稱K8s (2) 歷史:2014年由Google建立,是十多年大規模容器管理技術Borg的開源

鳥哥的Linux私房菜讀書筆記--主機的細部許可權規劃ACL的使用

1、什麼是ACL與如何支援啟動ACL ACL 是 Access Control List 的縮寫,主要的目的是在提供傳統的 owner,group,others 的read,write,execute 許可權之外的細部許可權設定。ACL 可以針對單一使用者,單一檔案或目錄來進行r,w,x 的

《爐石傳說》架構設計賞析(3)Gameplay初探

經過前面兩篇文章的分析,我們對爐石的程式碼已經不陌生了,接下來我初步嘗試分析其遊戲邏輯程式碼。歡迎轉載,請註明作者【燕良@遊戲開發】及原文地址:http://blog.csdn.net/neil3d/article/details/39453291 經過前面的分析,我們已經找到了兩個關鍵的

【LeetCode題解】動態規劃從新手到專家(一)

【LeetCode題解】動態規劃:從新手到專家(一) 文章標題借用了Hawstein的譯文《動態規劃:從新手到專家》。 1. 概述 動態規劃( Dynamic Programming, DP)是最優化問題的一種解決方法,本質上狀態空間的狀態轉移。所謂狀態轉移是指每個階段的最優狀態(對應於

職業規劃如何快速成長為技術大牛? 阿里資深技術專家的總結亮了

要想成為技術大牛, 首先還是 要明白“主要靠自己”這個道理,不要期望有個像武功師傅一樣的大牛手把手一步一步地教你。適當的時候可以通過請教大牛或者和大牛探討來提升自己,但大部分時間 還是自己系統性、有針對性的提升 業務程式碼一樣很牛逼 有人認為寫業務程式碼一樣可以很牛逼

動態規劃求最長公共子序列和最長公共子串

最長公共子序列(LCS): 這同樣是一道經典題目,定義就不說了。 為了方便說明,我們用Xi代表{x1,x2,‥xi},用Yj代表{y1,y2,‥yj}。那麼,求長度分別為m,n的兩個序列X,Y的LCS就相當於求Xm與Yn的LCS。我們將其分割為區域性問題進行分析。 首先,求Xm與Yn的LCS要考慮一下兩

動態規劃Sunday增加,刪除,更替字母而成為Sarturday的最小變更次數?

如下表所示:  每個單元格可由其左方,上方,左上方的單元格變換而來。 左方:seq1變換到seq2增加了一個字母,變換次數加1; 上方:seq1變換到seq2減少了一個字母,變換次數加1; 左上方:seq1變換到seq2替換了一個字母,這時分為兩種情況:    (1)替

Spring SpringSecurity初探

文章目錄 什麼是Spring Security 什麼是JWT Spring Security工作流程 基礎使用方式 實現Token 實現Provider 實現Prin

從壹開始前後端分離 [ vue + .netcore 補充專案2 ] 二七║ Nuxt 基礎框架初探

緣起 哈嘍大家好,又是週四了,俗話說週四來了,週末還遠麼哈哈,老張我也想下週請假,來個16天的大長假喲,不知道大家是怎麼請假的,近來發現文章下邊已經沒有人評論了,趕腳比較淒涼了,大家看到的麻煩點個贊呀說個話呀,增加下人氣哈哈,剛剛突然想到原來問題都跑到群裡了,也是,當初建立群的目的就是解決問題滴,不能本末倒

演算法練習(1)動態規劃買賣股票的最佳時機1

給定一個數組,它的第 i 個元素是一支給定股票第 i 天的價格。 如果你最多隻允許完成一筆交易(即買入和賣出一支股票),設計一個演算法來計算你所能獲取的最大利潤。 注意你不能在買入股票前賣出

動態規劃鋼條切割問題

一、題目 鋼條切割問題 是《演算法導論》一書中介紹動態規劃時的一道引題。即: 某公司購買長鋼條,將其切割為短鋼條出售。假設切割工序沒有成本支出,已知長度為 i 的鋼條出售價格為 pi ,鋼條長度均為整數,公司管理希望知道最佳的切割方案。 價格表樣例: 長

動態規劃最長公共子串 & 最長公共子序列

一、最長公共子串 1. 題目 給定兩個序列 X 和 Y,如果 Z 即是 X 的子串,又是 Y 的子串,我們就稱它是 X 和 Y 的公共子串,注意子串是連續的。 例如 X = { A, B, C, D,

動態規劃最長迴文子串 & 最長迴文子序列

一、題目 所謂迴文字串,就是一個字串,從左到右讀和從右到左讀是完全一樣的,比如 “a”、“aba”、“abba”。 對於一個字串,其子串是指連續的一段子字串,而子序列是可以非連續的一段子字串。 最長迴文子串 和 最長迴文子序列(Longest Palindrom