2018年12月24日月曜日

INRC-IIの実装検討その2

1)SkillをShiftの拡張形態として実装(変更)


Skillは、各シフトの派生とも考えられるので、下のようにシフト名に[]がついたとき、Skillとして認識する実装としました。

INRC2の場合は、休みを除く全シフトに同じスキルが作用するので、全シフトとも[]がついたグループプロパティは、暗黙的に全て同じ形となります。

しかしシフト毎に定義できるようにすると、例えば、日勤には、多くのTaskを指定、他のシフトは記述なし、とすることができ、そのタスク名(例えば、下記でHeadNurse)で、列で見た必要数を定義することができます。通常のグループプロパティとの違いは、各個人各Dayについて、ΣTask=1 となることです。シーケンス的な制約はシフトで記述、所要数は、スキルで記述することが出来、互いに独立して記述することが可能となります。






2)Historyの処理
Staticなので、全週を一回で処理しますが、前月だけは、Historyファイルを参照します。Historyファイルは、次のような記述です。

HISTORY
0 n005w4
NURSE_HISTORY
Patrick 0 0 Early 2 2 0
Andrea 0 0 Night 2 4 0
Stefaan 0 0 Late 1 4 0
Sara 0 0 Late 2 2 0
Nguyen 0 0 None 0 0 2

Anderaは、前月最終日付近、Nightが2回続いて、4回連続勤務したことを表しています。Nguyenは、休みが2回続いたことを表しています。情報はこれだけであり、前月の具体勤務が確定することはありません。連続勤務制約、連続シフト制約、連続休み制約が前月からも続いた制約であることを考慮して、あらかじめ予定シフトとして上記ファイルを読み込んで生成します。下記がその例です。便宜上シフトを割り当てているところもありますが、解の目的関数値は変わりません。
3)希望シフト処理
WeekDataファイルに各週のオフ(望ましくない)シフトがリストされています。
例えば、Nguyenは、火曜日にLate勤務はいやだ、といった具合です。 いやだは、Not(でない)で記述します。
Anyは、全ての勤務がいやだ→休み希望 という風に解釈します。
注意するのは、Saraのように同一日に二つ以上のエントリがある場合です。こういった場合は、下のようにシフト集合で合成します。
 
 
WEEK_DATA
n005w4
REQUIREMENTS
Early HeadNurse (1,1) (0,0) (0,0) (0,0) (0,0) (0,0) (1,1)
Early Nurse (0,1) (1,1) (1,1) (1,1) (1,1) (1,1) (1,1)
Late HeadNurse (0,0) (0,0) (0,0) (1,1) (0,0) (0,0) (1,1)
Late Nurse (1,1) (1,1) (1,1) (1,1) (1,1) (0,1) (1,1)
Night HeadNurse (1,1) (0,0) (1,1) (0,0) (1,1) (0,0) (0,0)
Night Nurse (1,1) (0,1) (0,1) (1,1) (1,1) (1,1) (1,1)
SHIFT_OFF_REQUESTS = 4
Nguyen Late Tue
Andrea Any Wed
Sara Night Thu
Sara Early Thu

2018年12月9日日曜日

INRC-IIの実装検討 JOB Propertyの追加

仕様検討漏れがありました。
解のFORMATを見ると、

SOLUTION
0 n005w4
ASSIGNMENTS = 25
Patrick Mon Early HeadNurse
Patrick Tue Early HeadNurse
Patrick Fri Early Nurse
Patrick Sat Early HeadNurse
Patrick Sun Late Nurse
..
Nguyen Wed Late Nurse
Nguyen Fri Late Nurse
Nguyen Sat Night Nurse
Nguyen Sun Night Nurse

となっていて、SKILL Propertyも出力されています。言い換えると、これも変数定義が必要になるということです。言語表現では、

 X[Staff][Day][Shift]

だけでは不十分で、

 X[Staff][Day][Shift][Skill]

まで定義することが必要となります。そうなると現状のGUIでは、対応できないことになります。
ソルバも現状IFは定義されていません。

そこで、追加仕様として、以下のようにJobとTaskの概念をGroupPopertyに追加することにしました。
上の場合、次のように記述します。
JOBは、Taskの集合体です。一つのJOBは、複数のTaskからなります。上の場合一つのJOB名は、TASKで、TASK[0]がHeadNurse,TASK[1]がNurseとします。通常のGroupPropertyと違うのは、
ΣTask[i]=1 (in any staff/day/shift)という制約が課せられることです。つまり、一人の人は、複数のタスクを持ちえて、なおかつ、同時には、実行できません。例えば、Patrikは、HeadNurseとNurseという二つのスキルを持ちますが、同時に出来る仕事は、一つのみで、HeadNurseという仕事かNurseという仕事のどちらか一方しか一日内には割り当てられません。そのような性格を考慮すると、能力とかスキルというよりもタスクといった方が割り当てられる具体的な仕事という意味に近いように思います。今後、そのように呼称します。
Competitionの仕様上は、JOBは一つですが、JOB1[0],,,JOB2[0],,という風にも記述できるように
拡張したいと思います。各JOB上、ΣJOB1[i]=1,ΣJOB2[i]=1とします。ソルバ側では、xx[]というブランケット付きのGroupPropertyが来たら、そのように処理するように設計追加します。
 
今まで、仕事を分けようとすると多数のシフトになってしまいがちでしたが、上のように記述した方がすっきりする場合もあるかもしれません。 Competitionの仕様を出来る限りGUIで記述できるようにして、評価・検証を行いたいと思います。
 
なお、CompleteWeekEndは、以下の通り、仕様変更・追加なしにGUIで記述できました。
 
 
 
 
 
 




2018年12月4日火曜日

INRC-IIの実装検討

2015年に行われた Nurse Scheduling Competitionの実装を検討します。
 
仕様からReviewしていきます。2010版第一回から、制約仕様は簡略化されています。代わりに1WEEK毎に制約が与えられるDynamicな仕様になっています。ソルバは、1WEEK毎に解を出していきます。前に出した解は、Fixされて、最終的には、4Weeks/8Weeksの解を出力することになります。
 
与えられる入力ファイルは、3種類で、下がその様子です。メインは、シナリオファイルで、Shift数や、Staff数等の緒元が与えられます。WeekDataは、1WEEK毎に必要なStaffがDay単位で与えられます。Historyファイルは、前の週の状態が与えられます。これらを入力として、ソルバが解を出力し、Validatorに与えると、feasiblity checkと目的関数値を計算してくれます。
ハード(H)、ソフト(S)制約は、以下の通りです。
ソフトのタイトル内の()は、ウェイトになります。

H1. Single assignment per day: A nurse can be assigned to at most one shift per day.
H2. Under-staffing: The number of nurses for each shift for each skill must be at least equal to the minimum
requirement.
H3. Shift type successions: The shift type assignments of one nurse in two consecutive days must belong to the legal successions provided in the scenario.
H4. Missing required skill: A shift of a given skill must necessarily be fulfilled by a nurse having that skill.
S1. Insufficient staffing for optimal coverage (30): The number of nurses for each shift for each skill must be equal to the optimal requirement. Each missing nurse is penalised according to the weight provided.
Extra nurses above the optimal value are not considered in the cost.
S2. Consecutive assignments (15/30): Minimum and maximum number of consecutive assignments, per shift or global, should be respected. Their evaluation involves also the border data. Each extra or miss-ing day is multiplied by the corresponding weight. The weights for consecutive shift constraint and for consecutive working days are respectively 15 and 30.
S3. Consecutive days off (30): Minimum and maximum number of consecutive days off should be respected.
Their evaluation involves also the border data. Each extra or missing day is multiplied by the corresponding
weight.
S4. Preferences (10): Each assignment to an undesired shift is penalised by the corresponding weight.
S5. Complete week-end (30): Every nurse that has the complete weekend value set to true, must work both week-end days or none. If she/he works only one of the two days Sat and Sun this is penalised by the corresponding weight.
2.5.2 Constraints spanning over the planning horizon
The following (soft) constraints are evaluated only at the end of the planning period:
S6. Total assignments (20): For each nurse the total number of assignments (working days) must be included within the limits (minimum and maximum) enforced by her/his contract. The difference (in either direction), multiplied by its weight, is added to the objective function.
S7. Total working week-ends (30): For each nurse the number of working weed-ends must be less than or equal to the maximum. The number of worked week-ends in excess is added to the objective function multiplied by the weight. A week-end is considered “working” if at least one of the two days (Sat and Sun) is busy for the nurse.

規模検討
最大シフト数 :インスタンスファイルを見る限り最大でも4になっています。
スタッフ数:30人から、120人まで
日数:4Weeksまたは、8Weeks
規模的には、問題ないと思います。シフト数が僅か4なので、少なくとも日本では、実用的にはありえない少なさです。

ハード制約:
Minスタッフ数と2Daysでのシフトパターンのみです。2Daysシフトパターンのみ、というのは、実用的にはありえない少なさです。(スケジューリングサイトのインスタンスもそうですが、この辺が最もリアルプロジェクトと異なります。)

ソフト制約:
こちらは、込み入っています。GUIだけで記述できる部分と、言語制約を用いないと難しい部分があります。少し詳細に検討します。

S1. Insufficient staffing for optimal coverage (30):
(min/opt) があり、opt未満のスキルを持ったスタッフ数分、Weight30が加算されます。minは、ハード制約です。スキルは、GUIグループプロパティで記述可能です。

S2. Consecutive assignments (15/30):
同一シフト連続制約、連続勤務制約があります。それぞれに(min/max)があります。例えば、Lというシフトが(3/5) だとすると、
LLL:OK
LLLLL:OK
です。
!LLL!L:NG//1個足りない
LLLLLL:NG//1個多い
となります。面倒なのは、minで、3minの場合は、
!LL!L :Weight(15*2)
!LLL!L:Weight(15*1)
としなければいけません。minが大きいと規模的に問題となりますが、インスタンスを見る限り4が最大のようです。禁止シフトパターンとしてGUIで記述できます。従い、min=1,2,3、
Weight 45,30,15を用意すれば十分です。

休み(None)をYと記述すれば、連続勤務最大5は、
!Y!Y!Y!Y!Y!Y
と6Daysで記述できます。こちらは、これだけで、Each extra or miss-ing day is multiplied by the corresponding weight. の要求に答えられます。よって、S2制約については、完全にGUIだけで記述できます。
S3. Consecutive days off (30):
上と同様です。こちらも、インスタンスを見る限り、minの最大は、3のようです。ですので、min=1とmin=2を検出しなければなりません。よって、Weightは、60,30を用意する必要があります。
全体として用意するWeightは、

10,15,20,30,45,60
の6種類あればよいことになります。禁止シフトパターンとしてGUIで完全に記述可能です。

S4. Preferences (10):
シフトオフ希望(望ましくないシフトを記述)になります。シフトオフなので、記述に対して補集合をOn
にするGUI設定を行う必要があります。なお、「Any]は、休み希望となります。

S5. Complete week-end (30):
土日両方出勤か、休みのいずれかである必要があります。これに違反するときは、Weight30を加算しなければいけません。これは、土日のExorを取ってWeight加算が必要になります。こちらは、GUIでは対応不能なので言語で処理する必要があります。また、EXOR演算子は定義されていないので、AND/ORで記述する必要があります。

weight_sum +=Σ $XOR(  X[staff][Sat][Y],X[staff][Sun][Y])*30;

S6. Total assignments (20):
トータルの勤務日数制約です。min-maxから外れた分weightを掛けます。

S7. Total working week-ends (30):
休日出勤制約で、Maxのみの制約です。土日のうちどちらか働けば、Weightを加算しなければいけません。
int diff=Σ $OR(  X[staff][Sat][Y],X[staff][Sun][Y])-S7MAX;
if (diff>0) weight_sum +=diff;

こちらも$OR処理が必要になるので、言語で記述する必要があります。

以上で、実装化の検討が終わりました。ScNurseプロジェクトファイルにするには、
入力ファイルをパースして、プロジェクトファイル形式にする必要があります。こちらは、C#で
設計を追加しようと思います。

なお、Competitionに参加したAntoine Legrainさんの論文が公開されています。INRC-IIは、本来DynamicなSolvingを意図していますが、Staticとして、全体を一気に解く方が、15%程度目的関数値が良いという結果が出ています。DynamicVersionの方は、将来の制約が見えない中で解き進めないといけないので、当然そうなるという気はします。しかしながら、StaticVersionを持ってしても、ほとんど全てのインスタンスについて24時間回してOptimumである証明は、出来なかったそうです。そこで、今回のエンジンでどこまで迫れるかを、ソルバの検証も兼ねてトライしてみたいと思います。









2018年12月3日月曜日

2010NRP Validatorが動かない

ナーススケジューリングコンペティションは、これまで2回行われています。これらは、いずれもPATAT(the Practice and Theory of Automated Timetabling) 学会主催です。大学の時間割問題競技会が2019年度で4回目のようです。
 1回目は、2010年で、結果はこちらで確認することが出来ます。
法政大学の野々部先生がSprintTrackで2位になっています。上記ページのテーブルをクリックするとShortDescriptionを見ることが出来ます。4位がノッテンガム大学チームで、このチームからは、以前以降共、数多くの論文が出ています。

ブラジルのオウロプレット大学のページで2010NRPでオープン問題を確認することが出来ます。
結構、未解決問題があるので、トライしようと思いました。2010NRPの仕様書を見て、おおよそ雰囲気はつかめました。そこで、評価器を入手して細かな解釈を確認することにしました。ところが、
ダウンロードして、やってみたところ、

 java -jar evaluator.jar -p test_01_coverage_constraint.xml -s test_01_coverage_constraint_solution_01.xml
evaluator.jarにメイン・マニフェスト属性がありません

というエラーが発生して前に進めませんでした。

また、先のページでダウンロードしたvalidatorでも、

 java -jar validator.jar long01.xml  inrc_solutions/solutions/long01.xml
Exception in thread "main" java.lang.NullPointerException
        at dds.nrp.core.tools.ScheduleParser.parseScheduleInfo(ScheduleParser.java:96)
        at dds.nrp.core.tools.ScheduleParser.parse(ScheduleParser.java:77)
        at dds.nrp.core.evaluation.ScheduleEvaluator.main(ScheduleEvaluator.java:112)

エラーが発生して動かすことができませんでした。(JavaのVersion問題なのでしょうか?)

残念ながら、仮に実装したとしても、Validatorなしには正確に評価できる自信がありません。
以上より、2010NRP問題については、実装を断念しました。

2015NRPについては、私も参加したので、Validatorは、現役で動くはずです。こちらについては、ほとんどが未解決問題となっています。GUIプロジェクトにして再トライする予定です。

2018年12月1日土曜日

開発スケジュール変更

大規模な手持ちプロジェクトが、未だコンパイル出来ていません。
ソフト制約の実装が予想外に難しく、設計開発に手間取っているためです。

ソフト制約の実装は、例えば、Smetさんの論文のような手法があるのですが、
これを、任意のパターンに適用するのは、かなり難しいです。

https://people.cs.kuleuven.be/~pieter.smet/

例えば、5日連続勤務禁止は、
W=勤務として、次のように制約できます。

!(WWWWW)

これをDAGで表現するには、前のステートを覚えておく必要があります。単純にW→Wとするグラフでは、表現できません。一方で、夜勤集中禁止
のように夜勤=N、N=S|Jとして、

!(N*N)
!(N**N)
!(N***N)

という制約も同時に満たさなければいけません。さらに、それに対してソフト制約も加わる..
となると、大変なState数になりそうだ、ということが分かると思います。特にシフト数が大きいインスタンスでは、指数関数的にステート数が増えてしまいます。これがシフト数が大きいと探索に時間のかかる理由です。Smetさんの論文では、「連続勤務制約の影響が大きい」と言及されていますが、それは、DAGのステート数が直接に影響していると考えます。 ナーススケジューリング問題の多くは、NP-Hardであるとされていて、問題の規模が少し大きくなると、現実的な時間では解けない種類の問題と認識されています。勿論、解ける・解けないの境界は、計算機やアルゴリズムの進歩で変わってきます。アルゴリズムの改良によって解ける範囲を少しでも広げようと努力しているのが現在の研究動向です。

アカデミックベンチマークと勤務表ソフトとの違いは、「任意のシフトパターンを定義できるか否か」です。インスタンスがStaticに決まっているアカデミックベンチマークと違い、ユーザは任意のシフト、任意のシフトシーケンスを定義でき、さらにソフト制約まであるので、そのどれにも対応できる能力が求められます。(それが、現実に出来ているScNurseが素晴らしいということでしょう。)

実は、ソフト制約によって、探索空間は一挙に大きくなります。この辺りの理論的な解析は、あまりみかけたことがありません。こちらは、実プロジェクトに基づいた知見と、今回の成果がありますので、まとめ後に報告したいと思います。

ようやく、実装に目処がついたので、次のようにスケジュールを変更します。

1)手持ちベンチマークで検証  12月
2)NS2ベンチマークで検証   1月
3)NS1ベンチマークで検証     1月    
4)まとめ               2月
5)実装ベータ版公開       2月
6)英語サイト公開          3月
7)DSL作成~            4月

2018年11月7日水曜日

番原先生が名古屋大に

日本で先進的な研究成果を上げているプロジェクトがあります。このプロジェクトもその一つで日本語での論文やチュートリアル解説等で、私に与えた影響は大きく、大変勉強になっています。その中の中核メンバーの番原先生が名古屋大に移られたようです。

野々部先生の新しい論文が興味深いです。これは読まないと。

C++共用体

速いソルバーを構成する上で欠かせないのがC++です。その中でも強力な機能がPlacement newや共用体といった特徴的なC++機能です。あるクラスを書いていて、vectorと配列のunionが出来ないかなと思っていたら、最新C++では、出来るのですね。このサイトが参考になりました。コンストラクタ、デストラクタ、コピーコンストラクタ、代入演算子をしっかりと定義すれば、「削除された関数を参照しました」エラーから開放されます。
アルゴリズムがもっとも重要であることには変わりはないのですが、実装テクニックも僅差の勝負となるCompetitionでは重要です。

2018年11月3日土曜日

NEOS ServerでCPLEXデータを採取

NEOS SERVERは、フリーで利用できるサーバです。説明は、こちらが詳しいかと。

私自身は、RAMP発表のときにCPLEXとの比較データを作るのに使いました。CPLEXを走らせるには、MPSファイルという、パンチカードの時代のフォーマットではないかと思いますが、そのファイルを生成しています。
SAT/MAXSATから、変換するツールもなくはない(例えば、こちら)のですが、基数制約(足し算の制約で、例えば、Σai*vi>=LB)をCNF上で展開すると、その性質上CPLEXに不利にしか働かないので、直接MPSファイル生成を行っています。(その機能は、実は現SCNURSEにもありますが公開していません。)

で、CPLEXとの比較の話ですが、インスタンスによって全然違います。私から見て、「これは難しそうだ」 というインスタンスがCPLEXではあっさり解けたり、あるいは、その逆もまたあります。

下は、CPLEXでのNEOSサーバログ例です。
インスタンスは、軽めの2交代です。(スーパ救急)
ヘビーユーザさんの超重いインスタンスで本当は比較したいのですが、MPSファイル16MBという制限があり、走らせることができません。

Shord Periodで起動しているので、5分-6分で打ち切られます。メールアドレスを記しておくとログが
送られてきます。

目的関数値63から始まって、徐々に下げている様子が分かります。スレッド数は4のようです。



*************************************************************

   NEOS Server Version 5.0
   Job#     : 6374879
   Password : AXqnFhrD
   User     : None
   Solver   : lp:CPLEX:MPS
   Start    : 2018-11-02 22:55:18
   End      : 2018-11-02 23:05:27
   Host     : NEOS HTCondor Pool

   Disclaimer:

   This information is provided without any express or
   implied warranty. In particular, there is no warranty
   of any kind concerning the fitness of this
   information  for any particular purpose.
*************************************************************
Executing on prod-exec-5.neos-server.org



Welcome to IBM(R) ILOG(R) CPLEX(R) Interactive Optimizer 12.7.0.0

  with Simplex, Mixed Integer & Barrier Optimizers

5725-A06 5725-A29 5724-Y48 5724-Y49 5724-Y54 5724-Y55 5655-Y21

Copyright IBM Corp. 1988, 2016.  All Rights Reserved.



Type 'help' for a list of available commands.

Type 'help' followed by a command name for more

information on commands.



CPLEX> New value for default parallel thread count: 4

CPLEX> Selected objective sense:  MINIMIZE

Selected objective  name:  OBJROW

Selected RHS        name:  RHS

Selected bound      name:  BOUND

Problem 'cplex.mps' read.

Read time = 0.05 sec. (7.24 ticks)

CPLEX> Tried aggregator 2 times.

MIP Presolve eliminated 24438 rows and 3360 columns.

MIP Presolve modified 3630 coefficients.

Aggregator did 6244 substitutions.

Reduced MIP has 11719 rows, 7404 columns, and 53687 nonzeros.

Reduced MIP has 7404 binaries, 0 generals, 0 SOSs, and 0 indicators.

Presolve time = 0.14 sec. (92.27 ticks)

Probing time = 0.02 sec. (4.62 ticks)

Cover probing fixed 180 vars, tightened 0 bounds.

Tried aggregator 2 times.

MIP Presolve eliminated 2585 rows and 270 columns.

Aggregator did 110 substitutions.

Reduced MIP has 9024 rows, 7024 columns, and 41794 nonzeros.

Reduced MIP has 7024 binaries, 0 generals, 0 SOSs, and 0 indicators.

Presolve time = 0.07 sec. (45.62 ticks)

Probing time = 0.01 sec. (4.09 ticks)

Clique table members: 24668.

MIP emphasis: balance optimality and feasibility.

MIP search method: dynamic search.

Parallel mode: deterministic, using up to 4 threads.

Root relaxation solution time = 0.49 sec. (336.48 ticks)



        Nodes                                         Cuts/

   Node  Left     Objective  IInf  Best Integer    Best Bound    ItCnt     Gap



      0     0        0.0000  3710                      0.0000        0         

*     0+    0                           63.0000        0.0000           100.00%

      0     0        0.0000  2504       63.0000      Cuts: 68     6241  100.00%

      0     0        0.0000  2519       63.0000      Cuts: 33    13701  100.00%

      0     0        0.0000  2523       63.0000      Cuts: 40    21054  100.00%

*     0+    0                           62.0000        0.0000           100.00%

*     0+    0                           57.0000        0.0000           100.00%

      0     2        0.0000  2111       57.0000        0.0000    21054  100.00%

Elapsed time = 51.90 sec. (36012.51 ticks, tree = 0.01 MB, solutions = 3)

      1     3        0.0000  2498       57.0000        0.0000    35121  100.00%

      2     4        0.0000  2592       57.0000        0.0000    42079  100.00%

      3     3        0.0000  2471       57.0000        0.0000    35331  100.00%

      4     5        0.0000  2691       57.0000        0.0000    48497  100.00%

      5     7        0.0000  2817       57.0000        0.0000    65490  100.00%

      7     4        0.0000  2647       57.0000        0.0000    43682  100.00%

      8     9        0.0000  3312       57.0000        0.0000    67314  100.00%

     10    11        0.0000  2851       57.0000        0.0000    67943  100.00%

     12    13        0.0000  2960       57.0000        0.0000    68865  100.00%

     22    18        0.0000  2950       57.0000        0.0000    72647  100.00%

Elapsed time = 72.21 sec. (50651.13 ticks, tree = 0.01 MB, solutions = 3)

     35    25        0.0000  2868       57.0000        0.0000    75956  100.00%

     46    11        0.0000  3260       57.0000        0.0000    95067  100.00%

     50    14        0.0000  3177       57.0000        0.0000    96943  100.00%

     59    18        0.0000  3241       57.0000        0.0000    88485  100.00%

     70    42       -0.0000  2791       57.0000        0.0000   109799  100.00%

     84    61        0.0000  3073       57.0000        0.0000   130374  100.00%

     94    71        0.0000  2875       57.0000        0.0000   134592  100.00%

    104    95        0.0000  3158       57.0000        0.0000   156357  100.00%

    121    90        0.0000  3250       57.0000        0.0000   147741  100.00%

    137   109       -0.0000  2791       57.0000        0.0000   164857  100.00%

Elapsed time = 86.17 sec. (61421.47 ticks, tree = 0.17 MB, solutions = 3)

    158   138        0.0000  2861       57.0000        0.0000   180398  100.00%

    177   153        0.0000  2776       57.0000        0.0000   188296  100.00%

    198   149        0.0000  2843       57.0000        0.0000   185441  100.00%

    213   205       -0.0000  2695       57.0000        0.0000   214345  100.00%

    225   198        0.0000  2749       57.0000        0.0000   212004  100.00%

    238   214        0.0000  2557       57.0000        0.0000   220041  100.00%

    246   220        0.0000  2483       57.0000        0.0000   223199  100.00%

    251   244        0.0000  2441       57.0000        0.0000   233541  100.00%

    256   249        0.0000  1971       57.0000        0.0000   237713  100.00%

    266   248        0.0000  2801       57.0000        0.0000   234652  100.00%

Elapsed time = 100.44 sec. (71571.10 ticks, tree = 2.09 MB, solutions = 3)

    281   269        0.0000  1764       57.0000        0.0000   248351  100.00%

    297   261       -0.0000  2779       57.0000        0.0000   240850  100.00%

    305   265        0.0000  2720       57.0000        0.0000   245582  100.00%

    317   289        0.0000  2747       57.0000        0.0000   257934  100.00%

    334   295        0.0000  2710       57.0000        0.0000   260413  100.00%

    351   305        0.0000  2640       57.0000        0.0000   264267  100.00%

    357   311        0.0000  2644       57.0000        0.0000   267426  100.00%

    365   327        0.0000  2665       57.0000        0.0000   274389  100.00%

    389   332        0.0000  2596       57.0000        0.0000   277430  100.00%

    410   347        0.0000  2640       57.0000        0.0000   284219  100.00%

Elapsed time = 115.92 sec. (82068.18 ticks, tree = 4.05 MB, solutions = 3)

    441   353        0.0000  2678       57.0000        0.0000   287216  100.00%

    472   389        2.0000  1430       57.0000        0.0000   308337  100.00%

    498   465        2.0000  1419       57.0000        0.0000   349952  100.00%

    521   438        0.0000  2437       57.0000        0.0000   330820  100.00%

    545   505       -0.0000  1619       57.0000        0.0000   366673  100.00%

    573   452       -0.0000  2419       57.0000        0.0000   336334  100.00%

    598   533        0.0000  1660       57.0000        0.0000   383628  100.00%

    620   544        0.0000  1512       57.0000        0.0000   389020  100.00%

    650   594        0.0000  2054       57.0000        0.0000   427826  100.00%

    682   621        0.0000  1437       57.0000        0.0000   458065  100.00%

Elapsed time = 133.21 sec. (91876.24 ticks, tree = 7.60 MB, solutions = 3)

    717   610       -0.0000  1771       57.0000        0.0000   435109  100.00%

    751   686        0.0000  1666       57.0000        0.0000   484184  100.00%

    789   740        0.0000  1230       57.0000        0.0000   540359  100.00%

    814   745        0.5000  1316       57.0000        0.0000   547075  100.00%

    841   749        0.0000  1213       57.0000        0.0000   553594  100.00%

    871   835        5.0000  1277       57.0000        0.0000   604783  100.00%

    900   782        1.0000  1036       57.0000        0.0000   581817  100.00%

    928   858        0.0000  1184       57.0000        0.0000   640764  100.00%

    942   860        0.0000  1408       57.0000        0.0000   647897  100.00%

    968   868        0.0000  1427       57.0000        0.0000   655572  100.00%

Elapsed time = 151.46 sec. (101703.04 ticks, tree = 12.84 MB, solutions = 3)

    996   928        0.0000  1466       57.0000        0.0000   716821  100.00%

   1032   926        1.6556  1210       57.0000        0.0000   703682  100.00%

   1072   965        6.5000  1116       57.0000        0.0000   738094  100.00%

   1104  1024        2.2222  1133       57.0000        0.0000   777349  100.00%

   1139  1052        0.1875  1550       57.0000        0.0000   805000  100.00%

   1176  1069        4.0000   965       57.0000        0.0000   806816  100.00%

   1214  1103        9.6724  1213       57.0000        0.0000   840457  100.00%

   1249  1179        5.5185  1034       57.0000        0.0000   896645  100.00%

   1275  1135        5.2727  1327       57.0000        0.0000   880917  100.00%

*  1285+ 1242                           48.0000        0.0000           100.00%

   1289  1286        0.0000  1321       48.0000        0.0000   981106  100.00%

Elapsed time = 170.50 sec. (111445.72 ticks, tree = 19.23 MB, solutions = 5)

*  1303+ 1183                           38.0000        0.0000           100.00%

   1304  1292        6.6250   896       38.0000        0.0000   989818  100.00%

*  1313+ 1183                           37.0000        0.0000           100.00%

   1330  1307        7.0000   854       37.0000        0.0000   997594  100.00%

   1355  1322        7.0000   962       37.0000        0.0000  1004177  100.00%

*  1364+  908                           35.0000        0.0000           100.00%

*  1364+  605                           30.0000        0.0000           100.00%

*  1364+  402                           24.0000        0.0000           100.00%

   1364   403        0.0000  2313       24.0000        0.0000  1121975  100.00%

   1367   405        0.0000  2429       24.0000        0.0000  1123681  100.00%

   1373   408       -0.0000  2584       24.0000        0.0000  1125307  100.00%

   1378   410       -0.0000  2627       24.0000        0.0000  1126943  100.00%

   1393    32        0.0000  2220       24.0000        0.0000  1130232  100.00%

   1416    51       -0.0000  2755       24.0000        0.0000  1136750  100.00%

   1446    73        0.0000  2746       24.0000        0.0000  1142983  100.00%

Elapsed time = 349.35 sec. (230446.01 ticks, tree = 0.10 MB, solutions = 10)

   1485    99       -0.0000  2636       24.0000        0.0000  1149392  100.00%

   1524   128       -0.0000  2503       24.0000        0.0000  1156073  100.00%

   1563   182        0.0000  1845       24.0000        0.0000  1170958  100.00%

   1586   196       -0.0000  1585       24.0000        0.0000  1176280  100.00%

   1609   224        0.0000  1811       24.0000        0.0000  1181029  100.00%

   1628   249       -0.0000  1636       24.0000        0.0000  1188160  100.00%

   1647   238        0.0000  1758       24.0000        0.0000  1185442  100.00%

   1680   283        0.0000  1696       24.0000        0.0000  1198634  100.00%

   1711   304       -0.0000  1314       24.0000        0.0000  1204282  100.00%

   1739   352        0.0000  1308       24.0000        0.0000  1219717  100.00%

Elapsed time = 363.61 sec. (240319.46 ticks, tree = 1.03 MB, solutions = 10)

   1773   305        0.0000  2590       24.0000        0.0000  1204246  100.00%

   1812   396        1.0000  1391       24.0000        0.0000  1234825  100.00%

   1844   429        0.0000  1615       24.0000        0.0000  1243729  100.00%

   1876   439       -0.0000  2593       24.0000        0.0000  1245060  100.00%

   1902   497        1.0000  1735       24.0000        0.0000  1265429  100.00%

   1930   521        1.0000  1386       24.0000        0.0000  1275594  100.00%

   1971   581       -0.0000  2529       24.0000        0.0000  1294029  100.00%

   2002   589        0.0000  2183       24.0000        0.0000  1296354  100.00%

   2032   636        3.0000  1492       24.0000        0.0000  1312695  100.00%

   2156   759        2.0000  1665       24.0000        0.0000  1359694  100.00%

Elapsed time = 382.78 sec. (252909.19 ticks, tree = 2.94 MB, solutions = 10)

   2340   905        9.0000  1026       24.0000        0.0000  1412808  100.00%

   2496  1046        2.8000  1635       24.0000        0.0000  1454883  100.00%

*  2648+  918                           22.0000        0.0000           100.00%

*  2666+  918                           19.0000        0.0000           100.00%

   2675  1253        8.0000  1169       19.0000        0.0000  1515240  100.00%

   27
ERROR: Your job was terminated because it exceeded the maximum allotted time for a job.

Please refer to the NEOS Server FAQ (https://neos-guide.org/content/FAQ) for more information regarding job termination conditions.
 
 
382秒以降に、目的関数値19を記録しています。(ちなみに昨年計測したときは、25でした。)
 
同じインスタンスを現行ScNurseで解かせた様子が、以下です。
 
45秒で最適解に到達し、最適解の証明に210秒かかっています。

コンパイルの準備中ソルバを呼び出し中です。
 解探索を開始します。0.626(CPU秒)
 Soft Constraint Row2
 o=44 Time=3.517(CPU秒)
 o=43 Time=5.221(CPU秒)
 o=42 Time=5.251(CPU秒)
 o=41 Time=5.291(CPU秒)
 o=40 Time=5.380(CPU秒)
 o=39 Time=5.435(CPU秒)
 o=38 Time=6.661(CPU秒)
 o=37 Time=7.328(CPU秒)
 o=36 Time=8.091(CPU秒)
 o=35 Time=8.274(CPU秒)
 o=34 Time=8.319(CPU秒)
 o=33 Time=8.719(CPU秒)
 o=32 Time=8.780(CPU秒)
 o=31 Time=9.570(CPU秒)
 o=30 Time=10.249(CPU秒)
 o=29 Time=10.458(CPU秒)
 o=28 Time=11.530(CPU秒)
 o=27 Time=11.861(CPU秒)
 o=26 Time=12.806(CPU秒)
 o=25 Time=13.280(CPU秒)
 o=24 Time=13.323(CPU秒)
 o=23 Time=13.374(CPU秒)
 o=22 Time=15.202(CPU秒)
 o=21 Time=15.828(CPU秒)
 o=20 Time=15.872(CPU秒)
 o=19 Time=17.112(CPU秒)
 o=18 Time=17.155(CPU秒)
 o=17 Time=19.845(CPU秒)
 o=16 Time=20.198(CPU秒)
 o=15 Time=23.251(CPU秒)
 o=14 Time=25.785(CPU秒)
 o=13 Time=26.337(CPU秒)
 o=12 Time=26.400(CPU秒)
 o=11 Time=26.451(CPU秒)
 o=10 Time=26.529(CPU秒)
 o=9 Time=30.737(CPU秒)
 o=8 Time=34.266(CPU秒)
 o=7 Time=36.242(CPU秒)
 o=6 Time=37.967(CPU秒)
 o=5 Time=40.058(CPU秒)
 o=4 Time=45.633(CPU秒)
 f=3 Time=210.848(CPU秒)
 Optimum ConUB found
 o=4 Time=211.067(CPU秒)
 o=4 Time=211.084(CPU秒)
 b=4 Time=211.087(CPU秒)
 充足解を書き込み中です。C:\Users\sugaw\Documents\Visual Studio 2015\Projects\schedule_nurse_ver2\WindowsFormsApplication1\test\sim_engine32\solution1.txt 211.091(CPU秒)
 充足解を書き込みました。C:\Users\sugaw\Documents\Visual Studio 2015\Projects\schedule_nurse_ver2\WindowsFormsApplication1\test\sim_engine32\solution1.txt 211.102(CPU秒)
解探索が終了しました。 211 (秒)
解が得られました。
 
 
この例は、ScNurseが優れた結果になりましたが、逆の例も沢山あります。

穴を埋めると作業といいますか、どのようなインスタンスでもStateOfArtの性能に近いソルバーが理想な訳です。

そのための第2エンジンの開発です。
現行のScNurseが、どこが強くてどこが弱そうかという話はRAMP講演でした通りですが、
その辺が、第2エンジンを付加することでどのようになるのか、これから検証していきます。
が、未だ全てのインスタンスが走らせることが出来ていません。特に池上先生のインスタンスは数理的には非常に困難なインスタンスです。
ある意味究極のモデリング方法を採っていると言ってよいかと思います。スケジューリングサイトのベンチマーク問題とは対照的に、
非常に汎用的な記述になっています。池上先生にお聞きしたことがあるのですが、欧米のシフトと日本のシフトで違いはあるか?という問いに対して、同じという風におっしゃていました。
確かに、これほど汎用的なモデリングが可能ならどのようなシフト形態も記述可能でしょう。

もう一つ特筆すべきは、この解数は、一つや二つではなく、恐らく何百万もあるということです。CPLEXで最適解を発見するのに10-15分かかかるのですが、
一度発見すると、あれよあれよという間に解の個数は増え、一ヶ月回しても未だ止まらない、という解の出方なんだそうです。
その事自体が、学会でも新鮮な驚きだったようです。宇宙は思ったより広いということでしょうか?

池上先生のベンチマークは、看護師長がつくった制約を丹念にモデリング化したリアルプロジェクトです。人間がつくった制約になります。
ところが、Competitionや公開されているベンチマークは、ある確率空間モデルで生成された計算機が生み出した制約です。特に、スケジューリングサイトの解の個数は、非常に少ないということは、
分かっています。これにより得意不得意の分野が分かれるのがお分かりでしょう。解の個数/探索空間が重要なファクタになっていると思います。

 

2018年10月31日水曜日

チュートリアル ペア設定の最適解は、0であることが判明

 
行3の重みを100、行2の重みを10としてトライしてみたところ、10分ほどで最適解0を得ました。
 
こんな感じで、今までかなり時間をかけても最適解(OR用語でいうところの目的関数値が最小)を得ることが難しかったインスタンスについては、威力を発揮する場面があるでしょう。
 
 
 

2018年10月30日火曜日

ペア設定が数理計画では難しい

数理計画上(Integer Programming)で、ペア設定を記述しようとしているのですが、どうにも上手くいきません。これは、難しいです。学会でのベンチマーク問題には、出てきませんが、実使用上は、よく出てきる記述です。「新人が何人日勤だったら、ベテランは何人日勤」 みたいな、Implication+Slack変数が絡む場合です。SAT上では、難なく書けますが..


参考にした記述を記します。

整数計画法による定式化入門
http://web.tuat.ac.jp/~miya/fujie_ORSJ.pdf

整数計画定式化MIT
 http://web.mit.edu/15.053/www/AMP-Chapter-09.pdf

piecewise linear modeling
https://www.math.cuhk.edu.hk/course_builder/1415/math3220/L2%20(without%20solution).pdf

cast to boolean
https://cs.stackexchange.com/questions/12102/express-boolean-logic-operations-in-zero-one-integer-linear-programming-ilp/12118

https://cs.stackexchange.com/questions/69531/greater-than-condition-in-integer-linear-program-with-a-binary-variable?noredirect=1&lq=1

http://yetanothermathprogrammingconsultant.blogspot.com/2016/10/mip-modeling-if-constraint.html

stack exchangeは、その道の専門家の回答が多く、困ったときは助けになる確率が高いです。

しかしながら、上記、BIG-Mによるテクニック等、SAT以上にKnowHow的な部分があるのですが、それらを駆使しても正確には記述できませんでした。(ScNurseのTutorialペア設定をIntegerProgramming出来る方がおられましたら素晴らしいです。)

2018年10月19日金曜日

一般ベンチでは思わしくない結果に

手持ちのテストプロジェクトがかろうじて動くようになり、やってみると惨憺たる結果となりました。
これらは、リアルベンチ(実使用のプロジェクト)ではあり、現在のScNurseの優秀さを改めて実感するという結果になりつつあります。ここまで、結果が分かれるとは、正直予想していませんでした。
 また、実問題で走らせてみると新たに別な問題も発生して、この対応にまた時間がかかりそうです。
 
 

2018年9月28日金曜日

要素技術開発がほぼ終了

ずっとSchedulingBenchmarkサイト問題に取り組んでいましたが、これは、NSPの特殊形であって一般系ではありません。現在、これを一般系でも動くように落とし込む作業を行っていますが、高いハードルで一筋縄では行きません。かなり複雑です。が、ほぼ形は見えたので、ようやく、今後の展開を考えることが出来ます。

1)手持ちベンチマークで検証  10月
2)NS2ベンチマークで検証   11月
3)NS1ベンチマークで検証       
4)まとめ               12月
5)実装ベータ版公開        1月
6)英語サイト公開          2月
7)DSL作成~            3月

特殊形では、ほぼWorldWideでトップ性能であることは、確認できたのですが、一般系でどのような性能になるのかが、未だ見えません。 こちらについては、10月以降検証を進めていきます。 上記ベンチマーク問題とプロジェクトファイルについては、英語サイトにして公開予定です。これで、One-StopのNSP問題集として、実問題を含めて網羅できると思います。新解の提示もいくつか出来ると思います。 

その後、Domain Specific Language 作成作業を行っていきたいと思います。 

開発中は、様々な文献を調査しました。門外漢である自分は、日本語での整数計画の本が少なくて困りました。連続系リニアでは、結構あるのですが、離散系である整数となると少ないのです。農工大の宮代先生が、近代科学社の最適化モデリングシリーズで書かれるようなので、そちらに期待というところです。

一般的な組み合わせ最適化問題と、NSPで何が違うかといういうとNSPは、組み合わせ最適化問題に包含される関係にあります。
前にも見たように、商用とフリーのMIPソルバーでは、いかんともしがたい性能差があります。ですから汎用である商用MIPソルバーに任せておけばよい、というのはある意味正しいです。実際、NSPのState Of Art Solverは、学術関係で発表されている全てのソルバーも含めても、Grobi/CPlexになると思います。残念ながら、学術関係ではない一般の方々が、StateOfArtソルバーを、手軽に使うことはできないですし、使い方もスキルを要します。
 NSPには、勤務シフトという他に例にないくらい複雑な制約郡と、多数の基数制約の組み合わせという特徴があります。この特殊な性質を上手に活用すると、State Of Artソルバー並みに、もしくはそれ以上に上手くいく場合もあります。State Of Artソルバー並みの性能と手軽に使うことができるGUI、そしてプログラマが使えるPython DSLを提供することがスケジュールナースの目標です。
さらにブラシュアップための知見は、現在の単純な線形目的関数値ではなく、機械学習や、AI的な手法によって得られると思います。現場に立脚した最適化は、個々の職場で違うと思うので、その目的のための道具としてPython DSLです。

2018年9月15日土曜日

数理計画テキスト

ずっとSchedulingBenchmarkサイト問題に取り組んでいましたが、これは、NSPの特殊形であって一般系ではありません。現在、これを一般系でも動くように落とし込む作業を行っていますが、高いハードルで一筋縄では行きません。かなり複雑です。が、ほぼ形は見えたましたので、ようやく、今後の展開を考えることが出来ます。

1)手持ちベンチマークで検証  10月
2)NS2ベンチマークで検証   11月
3)NS1ベンチマークで検証       
4)まとめ               12月
5)実装ベータ版公開        1月
6)英語サイト公開          2月
7)DSL作成~            3月

特殊形では、ほぼWorldWideでトップ性能であることは、確認できたのですが、一般系でどのような性能になるのかが、未だ見えません。 こちらについては、10月以降検証を進めていきます。 上記ベンチマーク問題とプロジェクトファイルについては、英語サイトにして公開予定です。これで、NSP問題集として、実問題を含めて網羅できると思います。新解の提示もいくつか出来ると思います。
その後、Domain Specific Language 作成作業を行っていきたいと思います。 

開発中は、様々な文献を調査しました。門外漢である自分は、日本語での整数計画の本が少なくて困りました。連続系リニアでは、結構あるのですが、離散系である整数となると少ないのです。組み合わせ最適化という分野は実際問題、離散系が主ではないでしょうか?農工大の宮代先生が、近代科学社の最適化モデリングシリーズで書かれるようなので、そちらに期待というところです。

2018年9月12日水曜日

CALL for papers


Dear solver and benchmarks submitters to the MaxSAT Evaluation 2018,
The JSAT journal is being reactivated and has several renewals like a new
webpage (see http://jsatjournal.org/) and the submission management via
Easychair.
We are attaching a call for papers for a special issue on SAT-related
competitions. This special issue aims to cover all aspects related to
competitions (e.g., solving approaches, tools, benchmarks, result
interpretations, etc.) To make this special issue a success, we encourage
the MaxSAT submitters to contribute to the special issue.

2018年8月26日日曜日

シリアライゼーションライブラリ cereal

アルゴリズムの改善を行うのに、コンパイル→探索の サイクルを出来るだけ早く回したいというのが背景です。大規模になると、コンパイルするだけで時間がかかってしまいます。そこで、コンパイル後の状態を保存・解凍できるようにすると、(一回コンパイルすれば)コンパイルの時間が省けます。この機能は、Save/Restoreという風に呼ばれていると思いますが、いわゆる「シリアル化」です。C++のクラスやvectorなどのテンプレートを、簡単にシリアル化するのに、cerealを今回、使ってみました。cerealは、serialと発音的にどうなんでしょうか? ともあれ、とても簡単にシリアル化できました。BinaryやJson思いのままに可能です。日本語記事は、こちらか、こちらが詳しいです。

新しい解の発見 その3

instance20の新解を更新しました。(UB:4778→4775→4773→4772→4771→4770→4769)

autorosterのxml formatで、解の有効性は、確認済みです。
Instance20の最適解が確定しました。

 So Far Bestknown New Solution  
 LBUBLBUB
Instance153823383438243831
Instance204743494347694769

2018年8月20日月曜日

新しい解の発見 その2

性懲りもなく、未だ研究していて、その甲斐あって

instance20の新解を発見しました。


 So Far Bestknown New Solution  
 LBUBLBUB
Instance153823383438243831
Instance204743494347694778

2018年8月15日水曜日

116Aをリリースしました

エンジンは、変更していません。来年2/3月の勤務表を作る必要がある、という放射線関係のReq.にお応えして、2019年のカレンダをEnableしました。(本Versionよりライセンスドユーザは、2100年までEnableしています。)

また、UserContributionsということで、下記のサンプルを追加しています。

2交代診療所
・正循環
・複数の介護施設

特に複数の介護施設は、込み入っているので後で解説を書こうと思います。



2018年8月8日水曜日

マルチスレッド化検討

今回は、OpenMPを使おうと思っています。今回の技術開発において、最後の仕上げという段階に来て、OpenMPの調査を開始しました。小規模のソースの場合、数秒ですのであまり意味はないのですが、大規模ベンチマークテストでは、数十時間も走らせるので意味があります。開発マシンもメモリを増強し48GBとしました。

2018年7月29日日曜日

インテルのNadelさんから、コンパイルできないご指摘を頂きました


I’m getting errors concerning PRIi64: the compiler can’t recognize it. I’ve tried various compilers, but with no luck:
../MapleSAT/utils/Options.h: In member function ‘virtual void Minisat::Int64Option::help(bool)’:
../MapleSAT/utils/Options.h:285:29: error: unable to find string literal operator ‘operator""PRIi64’ with ‘const char [3]’, ‘long unsigned int’ arguments
            fprintf(stderr, "%4"PRIi64, range.begin);
Have you encountered such problems? Which compiler did you use?

私の開発環境は、VisualStudio2015で、Linuxは、あまり経験がないのですが、BashOnWindowsでポートしました。次のログのようにコンパイルは出来ました。

I'm sorry for nasty codes.
Originally, I wrote it using Visutal Studio 2015. After that, I moved the project into linux environment using bash on ubuntu on Windows.
This was a year ago.
Now,I successfully compiled it per following log.
Some g++ version may affect the compilation error.

taksugawara@win10-64:/mnt/c/cygwin64/home/tak.sugawara/MSE2018/maxroster/maxroster/code/linux$ ls
Makefile
taksugawara@win10-64:/mnt/c/cygwin64/home/tak.sugawara/MSE2018/maxroster/maxroster/code/linux$ g++ --version
g++ (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
taksugawara@win10-64:/mnt/c/cygwin64/home/tak.sugawara/MSE2018/maxroster/maxroster/code/linux$ make clean
rm -rf ../MapleSAT/core/Solver.o ../maxsat3.o ../oll.o ../oll2.o ../inc_maxsat.o ../sat_search.o ../Ramp-master/ramp.o ../MapleSAT/simp/SimpSolver.o ../wpm3_inc.o ../unweight.o ../main_maxsat.o ../oll2_seq.o ../oll2_inc.o ../../bin/maxroster
taksugawara@win10-64:/mnt/c/cygwin64/home/tak.sugawara/MSE2018/maxroster/maxroster/code/linux$ make
g++ -c  -fopenmp  -O3  -I../MapleSAT -I../ -I../Ramp-master ../MapleSAT/core/Solver.cpp -o ../MapleSAT/core/Solver.o
g++ -c  -fopenmp  -O3  -I../MapleSAT -I../ -I../Ramp-master ../maxsat3.cpp -o ../maxsat3.o
In file included from ../maxsat.h:19:0,
                 from ../maxsat3.cpp:14:
../Ramp-master/ramp.h:49:13: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
  int seed = 10;;
             ^
../Ramp-master/ramp.h:60:25: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 const int print_speed = 50000;
                         ^
../Ramp-master/ramp.h:62:21: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 int answer_writed = 0;
                     ^
../Ramp-master/ramp.h:64:21: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 int flag_weighted = 0;
                     ^
../Ramp-master/ramp.h:68:14: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 int greedy = 1;
              ^
../Ramp-master/ramp.h:72:17: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 LL  max_flips = 20000000000000ll;
                 ^
../Ramp-master/ramp.h:73:17: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 LL flip_bound = 0;
                 ^
../Ramp-master/ramp.h:74:12: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 LL  step = 1;
            ^
../Ramp-master/ramp.h:75:12: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 int trie = 1;
            ^
../Ramp-master/ramp.h:105:20: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 double time_best = 0;
                    ^
../Ramp-master/ramp.h:106:16: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 LL step_best = 0;
                ^
../Ramp-master/ramp.h:107:17: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 int trie_best = 0;
                 ^
../Ramp-master/ramp.h:113:10: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 int p1 = 6000;
          ^
../Ramp-master/ramp.h:114:16: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 int init_try = 1;
                ^
In file included from ../maxsat3.cpp:14:0:
../maxsat.h:149:3: warning: ‘typedef’ was ignored in this declaration
  };
   ^
../maxsat.h: In member function ‘void Minisat::TNode::print()’:
../maxsat.h:196:20: warning: format ‘%x’ expects argument of type ‘unsigned int’, but argument 2 has type ‘Minisat::TNode*’ [-Wformat=]
   printf("%x", this);
                    ^
../maxsat.h:199:31: warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘Minisat::Lit’ [-Wformat=]
    printf("%d ", linkingVar[i]);
                               ^
../maxsat3.cpp: At global scope:
../maxsat3.cpp:1096:26: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
  const int buffer_size = 10000;
                          ^
../maxsat3.cpp: In member function ‘uint64_t Minisat::MaxSAT::non_repeat_search(std::set<Minisat::Lit>&)’:
../maxsat3.cpp:2062:97: warning: format ‘%zd’ expects argument of type ‘signed size_t’, but argument 3 has type ‘int’ [-Wformat=]
  printf("c weights=%zd longest=%zd new weight=%zd \n", weight_map.size(), longest, highet_weight);
                                                                                                 ^
../maxsat3.cpp:2077:45: warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘uint64_t {aka long unsigned int}’ [-Wformat=]
    printf("c new weight=%d\n", highet_weight);
                                             ^
../maxsat3.cpp: In function ‘void Minisat::printStats1(Minisat::Solver&)’:
../maxsat3.cpp:2722:58: warning: format ‘%lld’ expects argument of type ‘long long int’, but argument 2 has type ‘uint64_t {aka long unsigned int}’ [-Wformat=]
  printf("c restarts              : %lld\n", solver.starts);
                                                          ^
../maxsat3.cpp:2723:63: warning: format ‘%lld’ expects argument of type ‘long long int’, but argument 2 has type ‘uint64_t {aka long unsigned int}’ [-Wformat=]
  printf("c conflicts             : %lld  \n", solver.conflicts);
                                                               ^
../maxsat3.cpp:2724:63: warning: format ‘%lld’ expects argument of type ‘long long int’, but argument 2 has type ‘uint64_t {aka long unsigned int}’ [-Wformat=]
  printf("c decisions             : %lld  \n", solver.decisions);
                                                               ^
../maxsat3.cpp:2725:66: warning: format ‘%lld’ expects argument of type ‘long long int’, but argument 2 has type ‘uint64_t {aka long unsigned int}’ [-Wformat=]
  printf("c propagations          : %lld  \n", solver.propagations);
                                                                  ^
../maxsat3.cpp:2726:166: warning: format ‘%lld’ expects argument of type ‘long long int’, but argument 2 has type
uint64_t {aka long unsigned int}’ [-Wformat=]
 %% deleted)\n", solver.tot_literals, (solver.max_literals - solver.tot_literals) * 100 / (double)solver.max_literals);
                                                                                                                     ^
g++ -c  -fopenmp  -O3  -I../MapleSAT -I../ -I../Ramp-master ../oll.cpp -o ../oll.o
In file included from ../maxsat.h:19:0,
                 from ../oll.cpp:14:
../Ramp-master/ramp.h:49:13: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
  int seed = 10;;
             ^
../Ramp-master/ramp.h:60:25: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 const int print_speed = 50000;
                         ^
../Ramp-master/ramp.h:62:21: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 int answer_writed = 0;
                     ^
../Ramp-master/ramp.h:64:21: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 int flag_weighted = 0;
                     ^
../Ramp-master/ramp.h:68:14: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 int greedy = 1;
              ^
../Ramp-master/ramp.h:72:17: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 LL  max_flips = 20000000000000ll;
                 ^
../Ramp-master/ramp.h:73:17: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 LL flip_bound = 0;
                 ^
../Ramp-master/ramp.h:74:12: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 LL  step = 1;
            ^
../Ramp-master/ramp.h:75:12: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 int trie = 1;
            ^
../Ramp-master/ramp.h:105:20: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 double time_best = 0;
                    ^
../Ramp-master/ramp.h:106:16: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 LL step_best = 0;
                ^
../Ramp-master/ramp.h:107:17: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 int trie_best = 0;
                 ^
../Ramp-master/ramp.h:113:10: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 int p1 = 6000;
          ^
../Ramp-master/ramp.h:114:16: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 int init_try = 1;
                ^
In file included from ../oll.cpp:14:0:
../maxsat.h:149:3: warning: ‘typedef’ was ignored in this declaration
  };
   ^
../maxsat.h: In member function ‘void Minisat::TNode::print()’:
../maxsat.h:196:20: warning: format ‘%x’ expects argument of type ‘unsigned int’, but argument 2 has type ‘Minisat::TNode*’ [-Wformat=]
   printf("%x", this);
                    ^
../maxsat.h:199:31: warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘Minisat::Lit’ [-Wformat=]
    printf("%d ", linkingVar[i]);
                               ^
g++ -c  -fopenmp  -O3  -I../MapleSAT -I../ -I../Ramp-master ../oll2.cpp -o ../oll2.o
In file included from ../maxsat.h:19:0,
                 from ../oll2.cpp:14:
../Ramp-master/ramp.h:49:13: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
  int seed = 10;;
             ^
../Ramp-master/ramp.h:60:25: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 const int print_speed = 50000;
                         ^
../Ramp-master/ramp.h:62:21: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 int answer_writed = 0;
                     ^
../Ramp-master/ramp.h:64:21: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 int flag_weighted = 0;
                     ^
../Ramp-master/ramp.h:68:14: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 int greedy = 1;
              ^
../Ramp-master/ramp.h:72:17: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 LL  max_flips = 20000000000000ll;
                 ^
../Ramp-master/ramp.h:73:17: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 LL flip_bound = 0;
                 ^
../Ramp-master/ramp.h:74:12: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 LL  step = 1;
            ^
../Ramp-master/ramp.h:75:12: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 int trie = 1;
            ^
../Ramp-master/ramp.h:105:20: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 double time_best = 0;
                    ^
../Ramp-master/ramp.h:106:16: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 LL step_best = 0;
                ^
../Ramp-master/ramp.h:107:17: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 int trie_best = 0;
                 ^
../Ramp-master/ramp.h:113:10: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 int p1 = 6000;
          ^
../Ramp-master/ramp.h:114:16: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 int init_try = 1;
                ^
In file included from ../oll2.cpp:14:0:
../maxsat.h:149:3: warning: ‘typedef’ was ignored in this declaration
  };
   ^
../maxsat.h: In member function ‘void Minisat::TNode::print()’:
../maxsat.h:196:20: warning: format ‘%x’ expects argument of type ‘unsigned int’, but argument 2 has type ‘Minisat::TNode*’ [-Wformat=]
   printf("%x", this);
                    ^
../maxsat.h:199:31: warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘Minisat::Lit’ [-Wformat=]
    printf("%d ", linkingVar[i]);
                               ^
g++ -c  -fopenmp  -O3  -I../MapleSAT -I../ -I../Ramp-master ../inc_maxsat.cpp -o ../inc_maxsat.o
In file included from ../maxsat.h:19:0,
                 from ../inc_maxsat.cpp:14:
../Ramp-master/ramp.h:49:13: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
  int seed = 10;;
             ^
../Ramp-master/ramp.h:60:25: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 const int print_speed = 50000;
                         ^
../Ramp-master/ramp.h:62:21: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 int answer_writed = 0;
                     ^
../Ramp-master/ramp.h:64:21: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 int flag_weighted = 0;
                     ^
../Ramp-master/ramp.h:68:14: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 int greedy = 1;
              ^
../Ramp-master/ramp.h:72:17: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 LL  max_flips = 20000000000000ll;
                 ^
../Ramp-master/ramp.h:73:17: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 LL flip_bound = 0;
                 ^
../Ramp-master/ramp.h:74:12: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 LL  step = 1;
            ^
../Ramp-master/ramp.h:75:12: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 int trie = 1;
            ^
../Ramp-master/ramp.h:105:20: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 double time_best = 0;
                    ^
../Ramp-master/ramp.h:106:16: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 LL step_best = 0;
                ^
../Ramp-master/ramp.h:107:17: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 int trie_best = 0;
                 ^
../Ramp-master/ramp.h:113:10: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 int p1 = 6000;
          ^
../Ramp-master/ramp.h:114:16: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 int init_try = 1;
                ^
In file included from ../inc_maxsat.cpp:14:0:
../maxsat.h:149:3: warning: ‘typedef’ was ignored in this declaration
  };
   ^
../maxsat.h: In member function ‘void Minisat::TNode::print()’:
../maxsat.h:196:20: warning: format ‘%x’ expects argument of type ‘unsigned int’, but argument 2 has type ‘Minisat::TNode*’ [-Wformat=]
   printf("%x", this);
                    ^
../maxsat.h:199:31: warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘Minisat::Lit’ [-Wformat=]
    printf("%d ", linkingVar[i]);
                               ^
g++ -c  -fopenmp  -O3  -I../MapleSAT -I../ -I../Ramp-master ../sat_search.cpp -o ../sat_search.o
In file included from ../maxsat.h:19:0,
                 from ../sat_search.cpp:14:
../Ramp-master/ramp.h:49:13: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
  int seed = 10;;
             ^
../Ramp-master/ramp.h:60:25: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 const int print_speed = 50000;
                         ^
../Ramp-master/ramp.h:62:21: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 int answer_writed = 0;
                     ^
../Ramp-master/ramp.h:64:21: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 int flag_weighted = 0;
                     ^
../Ramp-master/ramp.h:68:14: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 int greedy = 1;
              ^
../Ramp-master/ramp.h:72:17: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 LL  max_flips = 20000000000000ll;
                 ^
../Ramp-master/ramp.h:73:17: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 LL flip_bound = 0;
                 ^
../Ramp-master/ramp.h:74:12: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 LL  step = 1;
            ^
../Ramp-master/ramp.h:75:12: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 int trie = 1;
            ^
../Ramp-master/ramp.h:105:20: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 double time_best = 0;
                    ^
../Ramp-master/ramp.h:106:16: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 LL step_best = 0;
                ^
../Ramp-master/ramp.h:107:17: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 int trie_best = 0;
                 ^
../Ramp-master/ramp.h:113:10: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 int p1 = 6000;
          ^
../Ramp-master/ramp.h:114:16: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 int init_try = 1;
                ^
In file included from ../sat_search.cpp:14:0:
../maxsat.h:149:3: warning: ‘typedef’ was ignored in this declaration
  };
   ^
../maxsat.h: In member function ‘void Minisat::TNode::print()’:
../maxsat.h:196:20: warning: format ‘%x’ expects argument of type ‘unsigned int’, but argument 2 has type ‘Minisat::TNode*’ [-Wformat=]
   printf("%x", this);
                    ^
../maxsat.h:199:31: warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘Minisat::Lit’ [-Wformat=]
    printf("%d ", linkingVar[i]);
                               ^
g++ -c  -fopenmp  -O3  -I../MapleSAT -I../ -I../Ramp-master ../Ramp-master/ramp.cpp -o ../Ramp-master/ramp.o
In file included from ../Ramp-master/myHeap.h:5:0,
                 from ../Ramp-master/ramp.cpp:15:
../Ramp-master/ramp.h:49:13: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
  int seed = 10;;
             ^
../Ramp-master/ramp.h:60:25: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 const int print_speed = 50000;
                         ^
../Ramp-master/ramp.h:62:21: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 int answer_writed = 0;
                     ^
../Ramp-master/ramp.h:64:21: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 int flag_weighted = 0;
                     ^
../Ramp-master/ramp.h:68:14: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 int greedy = 1;
              ^
../Ramp-master/ramp.h:72:17: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 LL  max_flips = 20000000000000ll;
                 ^
../Ramp-master/ramp.h:73:17: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 LL flip_bound = 0;
                 ^
../Ramp-master/ramp.h:74:12: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 LL  step = 1;
            ^
../Ramp-master/ramp.h:75:12: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 int trie = 1;
            ^
../Ramp-master/ramp.h:105:20: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 double time_best = 0;
                    ^
../Ramp-master/ramp.h:106:16: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 LL step_best = 0;
                ^
../Ramp-master/ramp.h:107:17: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 int trie_best = 0;
                 ^
../Ramp-master/ramp.h:113:10: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 int p1 = 6000;
          ^
../Ramp-master/ramp.h:114:16: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 int init_try = 1;
                ^
In file included from ../Ramp-master/ramp.cpp:18:0:
../maxsat.h:149:3: warning: ‘typedef’ was ignored in this declaration
  };
   ^
../maxsat.h: In member function ‘void Minisat::TNode::print()’:
../maxsat.h:196:20: warning: format ‘%x’ expects argument of type ‘unsigned int’, but argument 2 has type ‘Minisat::TNode*’ [-Wformat=]
   printf("%x", this);
                    ^
../maxsat.h:199:31: warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘Minisat::Lit’ [-Wformat=]
    printf("%d ", linkingVar[i]);
                               ^
../Ramp-master/ramp.cpp: In member function ‘int RAMP::Ramp::build_instance(char*)’:
../Ramp-master/ramp.cpp:237:86: warning: format ‘%lld’ expects argument of type ‘long long int*’, but argument 7 has type ‘LL* {aka long int*}’ [-Wformat=]
  sscanf(line, "%s %s %d %d %lld", tempstr1, tempstr2, &var_n, &clause_n, &weight_hard);
                                                                                      ^
g++ -c  -fopenmp  -O3  -I../MapleSAT -I../ -I../Ramp-master ../MapleSAT/simp/SimpSolver.cpp -o ../MapleSAT/simp/SimpSolver.o
g++ -c  -fopenmp  -O3  -I../MapleSAT -I../ -I../Ramp-master ../wpm3_inc.cpp -o ../wpm3_inc.o
In file included from ../maxsat.h:19:0,
                 from ../wpm3_inc.cpp:14:
../Ramp-master/ramp.h:49:13: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
  int seed = 10;;
             ^
../Ramp-master/ramp.h:60:25: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 const int print_speed = 50000;
                         ^
../Ramp-master/ramp.h:62:21: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 int answer_writed = 0;
                     ^
../Ramp-master/ramp.h:64:21: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 int flag_weighted = 0;
                     ^
../Ramp-master/ramp.h:68:14: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 int greedy = 1;
              ^
../Ramp-master/ramp.h:72:17: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 LL  max_flips = 20000000000000ll;
                 ^
../Ramp-master/ramp.h:73:17: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 LL flip_bound = 0;
                 ^
../Ramp-master/ramp.h:74:12: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 LL  step = 1;
            ^
../Ramp-master/ramp.h:75:12: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 int trie = 1;
            ^
../Ramp-master/ramp.h:105:20: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 double time_best = 0;
                    ^
../Ramp-master/ramp.h:106:16: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 LL step_best = 0;
                ^
../Ramp-master/ramp.h:107:17: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 int trie_best = 0;
                 ^
../Ramp-master/ramp.h:113:10: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 int p1 = 6000;
          ^
../Ramp-master/ramp.h:114:16: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 int init_try = 1;
                ^
In file included from ../wpm3_inc.cpp:14:0:
../maxsat.h:149:3: warning: ‘typedef’ was ignored in this declaration
  };
   ^
../maxsat.h: In member function ‘void Minisat::TNode::print()’:
../maxsat.h:196:20: warning: format ‘%x’ expects argument of type ‘unsigned int’, but argument 2 has type ‘Minisat::TNode*’ [-Wformat=]
   printf("%x", this);
                    ^
../maxsat.h:199:31: warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘Minisat::Lit’ [-Wformat=]
    printf("%d ", linkingVar[i]);
                               ^
g++ -c  -fopenmp  -O3  -I../MapleSAT -I../ -I../Ramp-master ../unweight.cpp -o ../unweight.o
In file included from ../maxsat.h:19:0,
                 from ../unweight.cpp:14:
../Ramp-master/ramp.h:49:13: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
  int seed = 10;;
             ^
../Ramp-master/ramp.h:60:25: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 const int print_speed = 50000;
                         ^
../Ramp-master/ramp.h:62:21: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 int answer_writed = 0;
                     ^
../Ramp-master/ramp.h:64:21: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 int flag_weighted = 0;
                     ^
../Ramp-master/ramp.h:68:14: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 int greedy = 1;
              ^
../Ramp-master/ramp.h:72:17: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 LL  max_flips = 20000000000000ll;
                 ^
../Ramp-master/ramp.h:73:17: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 LL flip_bound = 0;
                 ^
../Ramp-master/ramp.h:74:12: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 LL  step = 1;
            ^
../Ramp-master/ramp.h:75:12: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 int trie = 1;
            ^
../Ramp-master/ramp.h:105:20: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 double time_best = 0;
                    ^
../Ramp-master/ramp.h:106:16: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 LL step_best = 0;
                ^
../Ramp-master/ramp.h:107:17: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 int trie_best = 0;
                 ^
../Ramp-master/ramp.h:113:10: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 int p1 = 6000;
          ^
../Ramp-master/ramp.h:114:16: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 int init_try = 1;
                ^
In file included from ../unweight.cpp:14:0:
../maxsat.h:149:3: warning: ‘typedef’ was ignored in this declaration
  };
   ^
../maxsat.h: In member function ‘void Minisat::TNode::print()’:
../maxsat.h:196:20: warning: format ‘%x’ expects argument of type ‘unsigned int’, but argument 2 has type ‘Minisat::TNode*’ [-Wformat=]
   printf("%x", this);
                    ^
../maxsat.h:199:31: warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘Minisat::Lit’ [-Wformat=]
    printf("%d ", linkingVar[i]);
                               ^
g++ -c  -fopenmp  -O3  -I../MapleSAT -I../ -I../Ramp-master ../main_maxsat.cpp -o ../main_maxsat.o
g++ -c  -fopenmp  -O3  -I../MapleSAT -I../ -I../Ramp-master ../oll2_seq.cpp -o ../oll2_seq.o
In file included from ../maxsat.h:19:0,
                 from ../oll2_seq.cpp:14:
../Ramp-master/ramp.h:49:13: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
  int seed = 10;;
             ^
../Ramp-master/ramp.h:60:25: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 const int print_speed = 50000;
                         ^
../Ramp-master/ramp.h:62:21: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 int answer_writed = 0;
                     ^
../Ramp-master/ramp.h:64:21: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 int flag_weighted = 0;
                     ^
../Ramp-master/ramp.h:68:14: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 int greedy = 1;
              ^
../Ramp-master/ramp.h:72:17: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 LL  max_flips = 20000000000000ll;
                 ^
../Ramp-master/ramp.h:73:17: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 LL flip_bound = 0;
                 ^
../Ramp-master/ramp.h:74:12: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 LL  step = 1;
            ^
../Ramp-master/ramp.h:75:12: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 int trie = 1;
            ^
../Ramp-master/ramp.h:105:20: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 double time_best = 0;
                    ^
../Ramp-master/ramp.h:106:16: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 LL step_best = 0;
                ^
../Ramp-master/ramp.h:107:17: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 int trie_best = 0;
                 ^
../Ramp-master/ramp.h:113:10: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 int p1 = 6000;
          ^
../Ramp-master/ramp.h:114:16: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 int init_try = 1;
                ^
In file included from ../oll2_seq.cpp:14:0:
../maxsat.h:149:3: warning: ‘typedef’ was ignored in this declaration
  };
   ^
../maxsat.h: In member function ‘void Minisat::TNode::print()’:
../maxsat.h:196:20: warning: format ‘%x’ expects argument of type ‘unsigned int’, but argument 2 has type ‘Minisat::TNode*’ [-Wformat=]
   printf("%x", this);
                    ^
../maxsat.h:199:31: warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘Minisat::Lit’ [-Wformat=]
    printf("%d ", linkingVar[i]);
                               ^
../oll2_seq.cpp: In member function ‘void Minisat::MaxSAT::oll2_search_oll_mcu3(uint64_t)’:
../oll2_seq.cpp:768:32: warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘uint64_t {aka long unsigned int}’ [-Wformat=]
      printf("c cost=%d\n", cost);
                                ^
g++ -c  -fopenmp  -O3  -I../MapleSAT -I../ -I../Ramp-master ../oll2_inc.cpp -o ../oll2_inc.o
In file included from ../maxsat.h:19:0,
                 from ../oll2_inc.cpp:14:
../Ramp-master/ramp.h:49:13: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
  int seed = 10;;
             ^
../Ramp-master/ramp.h:60:25: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 const int print_speed = 50000;
                         ^
../Ramp-master/ramp.h:62:21: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 int answer_writed = 0;
                     ^
../Ramp-master/ramp.h:64:21: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 int flag_weighted = 0;
                     ^
../Ramp-master/ramp.h:68:14: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 int greedy = 1;
              ^
../Ramp-master/ramp.h:72:17: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 LL  max_flips = 20000000000000ll;
                 ^
../Ramp-master/ramp.h:73:17: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 LL flip_bound = 0;
                 ^
../Ramp-master/ramp.h:74:12: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 LL  step = 1;
            ^
../Ramp-master/ramp.h:75:12: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 int trie = 1;
            ^
../Ramp-master/ramp.h:105:20: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 double time_best = 0;
                    ^
../Ramp-master/ramp.h:106:16: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 LL step_best = 0;
                ^
../Ramp-master/ramp.h:107:17: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 int trie_best = 0;
                 ^
../Ramp-master/ramp.h:113:10: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 int p1 = 6000;
          ^
../Ramp-master/ramp.h:114:16: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
 int init_try = 1;
                ^
In file included from ../oll2_inc.cpp:14:0:
../maxsat.h:149:3: warning: ‘typedef’ was ignored in this declaration
  };
   ^
../maxsat.h: In member function ‘void Minisat::TNode::print()’:
../maxsat.h:196:20: warning: format ‘%x’ expects argument of type ‘unsigned int’, but argument 2 has type ‘Minisat::TNode*’ [-Wformat=]
   printf("%x", this);
                    ^
../maxsat.h:199:31: warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘Minisat::Lit’ [-Wformat=]
    printf("%d ", linkingVar[i]);
                               ^
g++  ../MapleSAT/core/Solver.o ../maxsat3.o ../oll.o ../oll2.o ../inc_maxsat.o ../sat_search.o ../Ramp-master/ramp.o ../MapleSAT/simp/SimpSolver.o ../wpm3_inc.o ../unweight.o ../main_maxsat.o ../oll2_seq.o ../oll2_inc.o -o ../../bin/maxroster -lpthread -fopenmp -lz -lrt -static
taksugawara@win10-64:/mnt/c/cygwin64/home/tak.sugawara/MSE2018/maxroster/maxroster/code/linux$

Best Regards,
Tak.Sugawara